1

以 noSQL 方式使用关系数据库的优缺点是什么?

说 noSQL,我的意思是键值存储,带有一些相当简单的查询语言和水平扩展。

现在做一个简单的实验,postgreSQL数据库以key-value的方式设计和查询。这是示例。让它成为用户和文章,关系模型中的一对多。

关系:

User              Article
| id | login |    | id | user_id | title |
|----+-------|    |----+---------+-------|
|  1 | Alex  |    |  1 |    1    | FooBar| 
|  2 | Ann   |    |  2 |    1    | GoGoGo|
--------------    ------------------------
and some constraints on user id

要获取所有用户的文章,我们需要某种连接。

键值样式:

User                          Article
| id | login | articles |    | id | user_id | title |
|----|-------|----------|    |----+---------+-------|
|  1 | Alex  |  1, 2    |    |  1 |    1    | FooBar| 
|  2 | Ann   |          |    |  2 |    1    | GoGoGo|
-------------------------    ------------------------

让 User.articles 为数组,例如,postgreSQL 有一些处理数组的工具。

在这种情况下,我将首先进行用户查询,然后在获取文章 ID 时将它们全部选中。我认为这与 MongdDB 的集合方式非常相似。

此外,我知道,第二种情况是我的大学导师从未说过要做的事情,但看起来这种方法非常非常可扩展。

它看起来像轮子改造,但主要目标是为一些现在使用 postgres 的有前途的项目提供可扩展的解决方案。

4

1 回答 1

2

对于 n:m 关系,我会使用标准化模型。如果在创建适当的索引之后,SELECT性能仍然不够好,我可能会创建由触发器自动更新的物化视图。

在这样的物化视图中,所有相关的 ID 都可以聚合到一个数组中——或者你实际需要的任何东西。不过,我宁愿不将其用作主要数据模型。

于 2012-12-02T16:15:29.503 回答