以noSQL方式使用关系数据库的优缺点是什么?
说noSQL我指的是使用一些相当简单的查询语言和水平扩展的键值存储。
现在我正在进行简单的实验,其中postgreSQL数据库以键值方式设计和查询。 这是一个例子。让它成为用户和文章,关系模型中的一对多。
关系:
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的有前景的项目提供可扩展的解决方案。
答案 0 :(得分:2)
我会使用n:m关系的规范化模型。如果在创建正确索引后,SELECT
效果仍然不够好,我可能会创建由触发器自动更新的具体化视图。
在这样的物化视图中,所有相关的ID都可以聚合到一个数组 - 或者你实际需要的任何东西。不过,我宁愿不将它用作主数据模型。