求各位大大推荐一个 key- value 数据库。

2016-11-03 16:22:52 +08:00
 forbreak

求推荐一个 key - value 数据库,数据量可能会上亿。会做查询和删除操作。 顺便再问一下 有没有支持这种数据结构的。

原始的数据如下:
(key1->key2->key3)->value
根据上面 3 个 key 加起来才可以查到 value 

add key4
添加一个 key 的时候变成下面这样
(key1->key2->key3->key4)->value     

remove key3 
删除一个 key 的时候变成这样     
(key1->key2->key4)->value

可以很快速的变化 key 。
3199 次点击
所在节点    问与答
16 条回复
fredcc
2016-11-03 16:38:57 +08:00
直接把 key1-key4 拼接起来做 key 会有问题么
alittletrain
2016-11-03 16:39:19 +08:00
mysql 5.7 支持 json
peter999
2016-11-03 16:40:25 +08:00
pg 也是选项之一
murmur
2016-11-03 16:42:36 +08:00
你这个属于很典型的给 item 打 tag 的功能 这种东西感觉用 lucene 这种倒排索引还快一些
另外,任何数据库删除都是个需要考虑的功能,毕竟涉及重建索引
Kilerd
2016-11-03 16:50:17 +08:00
没看懂,大概就是类似指针这样连来连去??
forbreak
2016-11-03 16:59:53 +08:00
感谢回答,连起来没有问题,如果 key 改变的时候需要数据全部删除在入一遍。 如果有这种直接可以去掉的当然更好点了。
forbreak
2016-11-03 17:04:44 +08:00
@Kilerd 只是 key 是有多个不同的值组合成的。 然后可能 key 的值会突然去掉 组合中的某一个值。 或者 集体增加一个值。 value 不变。
forbreak
2016-11-03 17:05:25 +08:00
@fredcc 感谢回答,连起来没有问题,如果 key 改变的时候需要数据全部删除在入一遍。 如果有这种直接可以去掉的当然更好点了。
binux
2016-11-03 17:08:14 +08:00
你这样改来改去,要保证 key 唯一吗
forbreak
2016-11-03 17:18:01 +08:00
@binux 要保证唯一,并不是频繁的更改,只是会存在这种更改。想保证改动的过程时间缩短而已。
mfu
2016-11-03 17:50:48 +08:00
Redis 吧,序列化到硬盘。
mfu
2016-11-03 17:51:25 +08:00
没看到『数据量可能会上亿』……
fredcc
2016-11-03 18:30:40 +08:00
@forbreak 删除再写入对于 key-value 数据库不一定是不可接受的方式吧
MiskoLee
2016-11-03 18:40:13 +08:00
这不符合目前主流的 KV 数据库定义啊( Key 一般都是一个 String )。
所以,这个轮子就是自己造了。

====

自己设计一个 KV 数据库( key 是一个 List )。
这样才可以在语义上满足题目的需求。
crytis
2016-11-03 20:41:29 +08:00
@mfu redis 上亿数据不行吗? redis 适合的数据量大约是多少?
mfu
2016-11-03 20:49:21 +08:00
@crytis 不是不行,内存空间可能会占得多些。我没存过那么大的数据量。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/317772

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX