84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
这几天看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,先忘掉关系型数据库吧。
回答的人不少啊,但是我没看到比较全面的回答