nosql - 为具有多个值的键建议一个数据库,高度可扩展

标签 nosql cassandra redis key-value riak

我们有包含多个键值的数据。每个键可以有大约 500 个值(每个值大约 200-300 个字符),这样的键的数量大约为 1000 万个。主要操作是检查给定键的值。

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

我正在考虑为此目的使用 nosql 数据库,我以前使用过 mongodb,但我认为它不适合我目前的情况。 keyvalue based or column family based nosql db会更好,不需要分布式,用过riak,redis,cassandra等的 friend 分享一下。

谢谢

最佳答案

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

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

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

MyDATA: (ColumnFamily)
  RowKey=>Key
    Column1=>val1
    Column2=>val2
    ...
    ...
    ColumnN=valN

数据看起来像(JSON 表示法):

MyDATA (CF){
    [
      {key1:[{val1-1:'', timestamp}, {val1-2:'', timestamp}, .., {val1-500:'', timestamp}]},
      {key2:[{val2-1:'', timestamp}, {val2-2:'', timestamp}, .., {val2-500:'', timestamp}]},
      ...
      ...
    ]
}

希望这对您有所帮助。

关于nosql - 为具有多个值的键建议一个数据库,高度可扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6649535/

相关文章:

nosql - cassandra CQL3-Hex Bytes 转换错误的插入错误

Cassandra:我可以为像 sql 这样的列设置默认值吗

copy - Cassandra:快速加载大数据

MySQL产品存储-架构

java - 第一次调用一个方法,当数据有变化时再次调用该方法

cassandra - 与 Bigtable 相比,Cassandra 数据模型中关于列族的概念差异?

node.js - 在 node.js 中,如何识别缓冲区是二进制还是文本?

redis - 如何从从另一台机器复制的快照(rdb 文件)中恢复 redis 数据?

java - 从 Spring 应用程序连接到 Cassandra 池的问题

java - 如何在 Maven 中排除 hector 的 slf4j