84669 personnes étudient
152542 personnes étudient
20005 personnes étudient
5487 personnes étudient
7821 personnes étudient
359900 personnes étudient
3350 personnes étudient
180660 personnes étudient
48569 personnes étudient
18603 personnes étudient
40936 personnes étudient
1549 personnes étudient
1183 personnes étudient
32909 personnes étudient
这几天看NoSQL,还是不太理解从传统的关系型数据库中的表、行、列转换到NoSQL。
比如一个最简单的博客数据库设计,有分类表,有文章表、每个分类对应N条文章。
这样的传统关系数据库设计怎么转变到Mongodb、Redis呢?
使用过Mongodb,我是这样设计的,对于文章:
通过tag和分类查询文章,可以使用聚合Map/Reduce等。
对于Redis,处理这些主要还是在自己的应用里实现。
博客用文件就行了,按日期放文件夹里文件夹用日期命名,tag也用文件夹,里面放文章文件的softlink即可
database | databasetable | collectionrow | document/BSON documentcolumn | fieldindex | indextable | joinsprimary 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,先忘掉关系型数据库吧。
回答的人不少啊,但是我没看到比较全面的回答