我们有包含多个键值的数据。每个键可以有大约 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/