这几天看NoSQL,还是不太理解从传统的关系型数据库中的表、行、列转换到NoSQL。
比如一个最简单的博客数据库设计,有分类表,有文章表、每个分类对应N条文章。
这样的传统关系数据库设计怎么转变到Mongodb、Redis呢?
PHPz2017-04-22 09:00:54
使用過Mongodb,我是這樣設計的,對於文章:
透過tag和分類查詢文章,可以使用聚合Map/Reduce等。
對於Redis,處理這些主要還是在自己的應用裡實現。
迷茫2017-04-22 09:00:54
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"
} )
PHP中文网2017-04-22 09:00:54
你完全可以使用關係型資料庫的思想設計資料庫,例如:
category collection:
name:string
posts collection:
category_id: object_id
title:string
也可以嵌套子文檔, category collection下有很多的posts doc
category:
posts: []
PHPz2017-04-22 09:00:54
使用NoSQL資料庫,首先要拋棄關係型資料庫的想法。採用物件化的方式去處理資料結構。 每一種NoSQL資料庫都代表一種不同的物件處理的設計思想,這個問題太大了。 學NoSQL,先忘掉關係型資料庫吧。