這幾天看NoSQL,還是不太理解從傳統的關係型數據庫中的表、行、列轉換到NoSQL。
比如一個最簡單的博客數據庫設計,有分類表,有文章表、每個分類對應N條文章。
這樣的傳統關係數據庫設計怎麼轉變到Mongodb、Redis呢?
使用過Mongodb,我是這樣設計的,對於文章:
透過tag和分類查詢文章,可以使用聚合Map/Reduce等。
對於Redis,處理這些主要還是在自己的應用裡實現。
部落格用文件就行了,依日期放資料夾裡資料夾用日期命名,tag也用資料夾,裡面放文章檔的softlink即可
database | database table | collection row | document/BSON document column | field index | index table | joins primary key | primary key
用SQL語句
CREATE TABLE users ( id MEDIUMINT NOT NULL AUTO_INCREMENT, user_id Varchar(30), age Number, status char(1), PRIMARY KEY (id) )
用NoSQL語句
db.users.insert( { user_id: "abc123", age: 55, status: "A" } )
你完全可以使用關係型資料庫的思想設計資料庫,例如:
category collection:
name:string
posts collection:
category_id: object_id title:string
也可以嵌套子文檔, category collection下有很多的posts doc
category:
posts: []
使用NoSQL資料庫,首先要拋棄關係型資料庫的想法。採用物件化的方式去處理資料結構。 每一種NoSQL資料庫都代表一種不同的物件處理的設計思想,這個問題太大了。 學NoSQL,先忘掉關係型資料庫吧。
回答的人不少啊,但是我沒看到比較全面的回答
使用過Mongodb,我是這樣設計的,對於文章:
透過tag和分類查詢文章,可以使用聚合Map/Reduce等。
對於Redis,處理這些主要還是在自己的應用裡實現。
部落格用文件就行了,依日期放資料夾裡資料夾用日期命名,tag也用資料夾,裡面放文章檔的softlink即可
SQL 名稱 | MongoDB 名稱
database | database
table | collection
row | document/BSON document
column | field
index | index
table | joins
primary key | primary key
例:建立一個表格
用SQL語句
用NoSQL語句
你完全可以使用關係型資料庫的思想設計資料庫,例如:
category collection:
posts collection:
也可以嵌套子文檔, category collection下有很多的posts doc
category:
使用NoSQL資料庫,首先要拋棄關係型資料庫的想法。採用物件化的方式去處理資料結構。 每一種NoSQL資料庫都代表一種不同的物件處理的設計思想,這個問題太大了。 學NoSQL,先忘掉關係型資料庫吧。
回答的人不少啊,但是我沒看到比較全面的回答