【问题标题】:Is there any DB server which could support following operations?有没有可以支持以下操作的数据库服务器?
【发布时间】:2015-09-01 15:33:51
【问题描述】:

我需要将字符串列表与 ID 一起存储为字段:listId, <list>。 现在我需要按 O(1) 时间进行以下操作:-

  1. 从现有 listId 中删除给定字符串。
  2. 在现有 listId 中添加新字符串。

有没有可以支持上述操作的数据库?将 HashSet 作为其数据类型之一会有所帮助。请注意,我需要一个高度可扩展的解决方案,其中列表可以在 1000+ listIds 中有 1000 万个键。

我了解,如果任何数据库中都存在此类数据类型,则会产生相当大的索引开销。我相信类似的东西存在的机会非常渺茫。如果没有,那么我会自己实现一些东西。

【问题讨论】:

  • 我要求选民解释否决票。
  • 我没有投反对票,但也许是因为严格来说,这是一个与 SO 无关的资源请求 - 或者因为将字符串列表作为字段存储在表中通常是真的糟糕的设计,对此的标准解决方案是使用normalization 和一个单独的表来存储要存储在blob 中的内容。根据这个要求选择你的数据库平台似乎没有多大意义——除非你有特定的原因?
  • @Pekka웃 感谢您的帮助。但我无法规范化包含 1000 万个字段的表。这意味着有 1000 万列。但这有意义吗?如果没有,那么这意味着我们不能在任何数据库中进行上述操作?我需要另一个帮助,在 stackexchange 上问这个问题的最佳网站是什么?我想肯定有关系数据库之外的东西。
  • 这里有 dba.stackexchange.com 但请先查看他们的常见问题解答,我不知道那里有什么话题,什么不是。我不知道您所说的拥有 1000 万列是什么意思,在 1:n 关系中,您将有两个表,其中一个可能有 1000 万或更多 记录 - 这并不罕见.你所描述的听起来像是一对一关系的教科书案例。
  • @Pekka웃 啊,我明白了。我想我现在可以设计它。我根本不需要任何数据类型。我设计错了。谢谢!您能否将此作为答案发布,以便我接受并关闭该帖子?

标签: database bigdata


【解决方案1】:

您所描述的内容听起来像是 normalization 的教科书案例。

您将有两个表:一个包含列表,另一个包含列表元素。

它们通过列表 ID 链接:

列出表格:

id     name      (+ whatever else you need)

列出元素表:

id     listId (connected to an id in the lists table)   (+ whatever else you need)

【讨论】:

    猜你喜欢
    • 2015-11-14
    • 2011-01-19
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    • 1970-01-01
    • 1970-01-01
    • 2013-02-27
    相关资源
    最近更新 更多