首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >建议多值键值数据库,可扩展性高

建议多值键值数据库,可扩展性高
EN

Stack Overflow用户
提问于 2011-07-11 19:39:11
回答 4查看 4.4K关注 0票数 5

我们有key-multipleValues的数据。每个键可以有大约500个值(每个值大约为200-300个字符),这样的键的数量将在1000万左右。主要操作是检查给定关键字的值。

我已经使用mysql很长一段时间了,我有两个选项:每个键值一行,每个键一行所有的值都在一个文本field.But中,这些对我来说似乎效率不高,因为第一个模型有很多行,冗余和第二个模型文本字段将变得非常大。

我正在考虑使用nosql数据库来达到这个目的,我以前用过mongodb,我认为它不适合我现在的情况。基于键值或基于列族的nosql db应该是better.It,不需要是使用riak,redis,cassandra等的distributed.Someone,请分享您的想法。

谢谢

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-07-13 22:55:15

从您的描述来看,与关系数据库相比,似乎某种键值存储更适合您。

数据本身似乎是非关系型的,为什么要存储在关系型存储中呢?使用像Cassandra这样的东西似乎是有效的。

我认为用于存储此数据的典型数据结构将是一个列族,键作为行键,列作为值。

代码语言:javascript
复制
MyDATA: (ColumnFamily)
  RowKey=>Key
    Column1=>val1
    Column2=>val2
    ...
    ...
    ColumnN=valN

数据将如下所示(JSON表示法):

代码语言:javascript
复制
MyDATA (CF){
    [
      {key1:[{val1-1:'', timestamp}, {val1-2:'', timestamp}, .., {val1-500:'', timestamp}]},
      {key2:[{val2-1:'', timestamp}, {val2-2:'', timestamp}, .., {val2-500:'', timestamp}]},
      ...
      ...
    ]
}

希望这能有所帮助。

票数 2
EN

Stack Overflow用户

发布于 2011-07-11 19:43:31

尝试直接的、规范化的方法:使用此模式的一个表:

代码语言:javascript
复制
id (primary key)
key
value

每个键->值关系都有一行

为每一列添加一个索引,这样查找就会相当有效。您是否对此进行了分析,以显示瓶颈?

票数 2
EN

Stack Overflow用户

发布于 2011-07-13 00:21:45

这确实直接映射到Cassandra。行键将是您的模型键,而您的模型值将是Cassandra中的列名(是,名称)。您可以将Cassandra列值保留为空,或者在其中添加时间戳等元数据。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6649535

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档