endnote初始化数据库支持_服务端编程——数据库(MySQL、sequelize) - 天生笑点低你奈我何...
一、數據庫
前端發送api請求的流程
- 通過API發送請求,到model進行業務處理,將數據存到或在MYSQL查詢,將數據一并給KOA服務器請求,最后將請求的結果返回給客戶端
關系型數據庫、非關系型數據庫
關系型數據庫
mysql /oracle/sql server/sqlite
我還有一篇文章 介紹了 關系型數據庫和非關系型數據的數據結構 –紅黑樹-二叉樹-B樹
1.首先了解一下 什么是關系型數據庫?
關系型數據庫最典型的數據結構是表,由二維表及其之間的聯系所組成的一個數據組
織。優點:
1、易于維護:都是使用表結構,格式一致;
2、使用方便:SQL語言通用,可用于復雜查詢;
3、復雜操作:支持SQL,可用于一個表以及多個表之間非常復雜的查詢。缺點:
1、讀寫性能比較差,尤其是海量數據的高效率讀寫;
2、固定的表結構,靈活度稍欠;
3、高并發讀寫需求,傳統關系型數據庫來說,硬盤I/O是一個很大的瓶頸。
非關系型數據庫
redis / hbase /mongoDB /CouchDB /Neo4J
什么非關系型數據庫呢?
非關系型數據庫嚴格上不是一加粗樣式種數據庫,應該是一種數據結構化存儲方法的集合,可以是文檔或者鍵值對等
優點:
1、格式靈活:存儲數據的格式可以是key,value形式、文檔形式、圖片形式等等,文檔形式、圖片形式等等,使用靈活,應用場景廣泛,而關系型數據庫則只支持基礎類型。
2、速度快:nosql可以使用硬盤或者隨機存儲器作為載體,而關系型數據庫只能使用硬盤;
3、高擴展性;
4、成本低:nosql數據庫部署簡單,基本都是開源軟件。
缺點:
1、不提供sql支持,學習和使用成本較高;
2、無事務處理;
3、數據結構相對復雜,復雜查詢方面稍欠。
非關系型數據庫的分類和比較:
1、文檔型
2、key-value型
3、列式數據庫
4、圖形數據庫
二、數據庫使用
- 采用的是MySQL+圖形化界面 navicat
- koa采用sequelize插件來連接數據庫與程序,并配置一些數據庫的相關參數
一些基本概念
- 主鍵:數據庫中一定要有的,且必須滿足兩個條件:1. 不重復,2. 不為空
- 這里接下來將使用用戶的id編號作為主鍵,且采用自動增長的方式編號(這樣就不重復了),當然也可以自己寫一套id編號系統
- 在微信中,一個用戶進入一個小程序的openid是唯一的,但不代表一個用戶只有一個openid,用戶唯一的只有unionid
sequelize使用文件
- 將用戶信息等東西都放到config文件里,這個連接數據庫的文件放到core/中,這是整個項目連接數據庫的文件,后續操作不同表的文件都要引入它
- 同時在這個文件里也要創建(同步)數據庫,調用sequelize的sync函數,當然要通過配置一些參數來選擇(如force: true 合并當前數據庫等)
操作數據庫
- 在app/modules下創建文件,用來管理用戶的數據庫,引入剛剛的文件
- 里面建立User類繼承sequelize中的Model類,調用靜態方法init來初始化,設定好一些參數
- 初始化表中的信息什么的(具體看sequelize官方文檔),記得導出哦
- 之后所有對數據庫的增刪改查操作都利用Model來進行,也就是這里導出出去的User類
- 比如插入條目操作,在文件中導入這個文件 moduls/ 文件中的User,調用 (對象)即可
- 還有很多其他操作,具體可以看sequelize官方文檔(但返回的都是Promise哦)
密碼加密(bcrydptjs庫)
- 這時一個用來給密碼加密的庫,這里說一下基本操作和一點點小原理
- 先引入bcryptjs庫
- 生成salt鹽,這個salt就是用來給密碼加密的,中間傳入一個參數,默認是10,是加密的成本,越大的話產生的密碼安全性就越高 破解時需要的成本也就越高,同時耗費服務器的資源也越多
- 且當密碼相同的時候,用salt加密出來的密碼也是不同的(在一定程度上防范了彩虹攻擊)
密碼加密方法的位置
- 這里可以選擇在獲取到password的時候進行加密,但也可以將這個過程直接放到Model(Sequelize下的一個類 專門來進行數據庫操作的)中,也就是在 modules/ 文件中初始化User類中數據(數據庫表中數據)的時候:
- 這里其實用到了觀察者模式,一直在看password有沒有變化,然后初始化的時候直接調用這個函數了
總結
以上是生活随笔為你收集整理的endnote初始化数据库支持_服务端编程——数据库(MySQL、sequelize) - 天生笑点低你奈我何...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lightning接口_苹果手机接口未来
- 下一篇: linux修改mysql配置文件_Lin