【问题标题】:Tracking uniqueness in nosql在 nosql 中跟踪唯一性
【发布时间】:2013-11-15 07:35:55
【问题描述】:

目前我正在开发一个用户可以属于一个组的项目,并且多个用户可能属于同一个组。用户可以随时退出组,并且可以以相同的方式命名多个组。我面临的问题是跟踪组的唯一性。例如,如果两个组以相同的方式命名,如果没有 id 的概念,我如何区分两者。

我的意思的例子:

{userName: 'user1', group: 'test' },
{userName: 'user2', group: 'test' },
{userName: 'user3, group: 'test' }

我怎么知道所有三个“测试”组都指的是同一个组。在 sql 中,这很容易通过唯一的 Id 解决。在这种情况下,识别组似乎要困难得多。这些数据似乎更相关,也许我还是坚持使用 sql 数据库更好?

【问题讨论】:

  • 您使用 nosql 数据库而不是 rdbms 的原因是什么?
  • 在许多情况下,数据库架构非常简单,因此使用轻量级 NoSQL DB 比使用仅占 10-15% 的庞大 Oracle 更容易。此外,在大多数情况下,NoSQL DB 的扩展比 RDBMS 更容易。
  • 我认为该评论有点煽动性的“可怕的预言”。从他的问题来看,他似乎是在将关系数据库模型强制到 sql 上,大多数时候你最好使用 RDBMS。当他在讨论对他的数据建模时,说缩放更容易并不是一个真正有效的评论。
  • 很可能只有几个层次的连通性。在这种情况下,以我在下面列出的方式非常简单地允许关系问题。鉴于 NoSQL DB 的性能往往比 RDBMS 更高,支持关系型自己动手并不是那么大的代价。 NoSQL 并不意味着“没有关系”。几乎没有不连接的数据。只是实体之间的关系不是通常格式的行和列。
  • 95% 的时间,RDBMS 数据库的性能都足够了,数据建模在 SQL 中要容易得多,并且已经存在了几十年。发帖人没有询问可扩展性,而是询问了数据建模。

标签: nosql


【解决方案1】:

据我了解,您使用的是面向文档的 NoSql DB。所以你可以尝试以下方案。假设“user1”是 {userName: 'user1', group: 'test' } 的 id,“user2” 是 {userName: 'user2', group: 'test' } 的 id 。您可以创建 ID 为“test1”的文档,其中包含用户文档的 ID。例如:test1:{users:[user1, user2]}。当您将新用户插入数据库时​​,您应该更新文档 test1。

【讨论】:

  • 啊,谢谢,这肯定回答了这个问题。虽然,在阅读了上面的 cmets 之后,我意识到这个问题确实适合关系数据库。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-06
  • 2014-10-08
  • 1970-01-01
  • 2015-09-01
  • 2020-02-10
  • 1970-01-01
相关资源
最近更新 更多