redis - 如一简单博客数据库,NoSQL该如何设计?
巴扎黑
巴扎黑 2017-04-22 08:58:54
0
6
815

这几天看NoSQL,还是不太理解从传统的关系型数据库中的表、行、列转换到NoSQL。

比如一个最简单的博客数据库设计,有分类表,有文章表、每个分类对应N条文章。

这样的传统关系数据库设计怎么转变到Mongodb、Redis呢?

巴扎黑
巴扎黑

reply all(6)
PHPzhong

Having used Mongodb, I designed it like this, for the article:

  • Title
  • Publish time
  • ...
  • Category
  • Tags (using array type)

Query articles by tags and categories, you can use aggregation Map/Reduce, etc.

For Redis, processing these is mainly implemented in your own application.

Ty80

Just use files for blogs. Put them in folders by date and name the folders with dates. Tags also use folders, and put softlinks of article files in them

迷茫

SQL name | MongoDB name

database | database
table | collection
row | document/BSON document
column | field
index | index
table | joins
primary key | primary key


Example: Create a table

Use SQL statements

CREATE TABLE users (
    id MEDIUMINT NOT NULL
        AUTO_INCREMENT,
    user_id Varchar(30),
    age Number,
    status char(1),
    PRIMARY KEY (id)
)

Use NoSQL statements

db.users.insert( {
    user_id: "abc123",
    age: 55,
    status: "A"
 } )
Ty80

You can completely use the idea of ​​​​relational database to design the database, such as:

category collection:

name:string 

posts collection:

category_id: object_id
title:string 

You can also nest sub-documents, there are many posts doc under category collection

category:

posts: []
PHPzhong

To use NoSQL database, you must first abandon the idea of ​​relational database. Use an object-based approach to handle data structures. Each NoSQL database represents a different design idea for object processing. This problem is too big. To learn NoSQL, forget about relational databases first.

PHPzhong

Many people have answered, but I haven’t seen a more comprehensive answer

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template