84669 人學習
152542 人學習
20005 人學習
5487 人學習
7821 人學習
359900 人學習
3350 人學習
180660 人學習
48569 人學習
18603 人學習
40936 人學習
1549 人學習
1183 人學習
32909 人學習
这几天看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,先忘掉關係型資料庫吧。
回答的人不少啊,但是我沒看到比較全面的回答