我如何选择数据库?

时间:2012-07-02 02:47:04

标签: sql database

我需要一些数据库变种的比较表(MySQL,SQLite等)。我找不到一个。

我的用例是,我正在分布式哈希表中实现对象的存储。我需要一个数据库解决方案:

  • 快速排序
  • 简单(没有用户,最好没有其他结构,如多个表等)。
  • 并发(如果可能)
  • 多平台
  • 基于文件(主要不存储在内存中)
  • 集中

我将在Go中编程。

据我所知,我相信我需要所谓的面向文档的数据库,因为我正在存储由密钥标识的对象。

编辑:在我实施DHT的同时,我还将存储有关对象的元数据,例如访问次数等。最好还是有TLL(生存时间)

1 个答案:

答案 0 :(得分:2)

“面向文档”并不是我想要的。我想你想要一个“键值存储”,它可能是最简单的NoSQL类型。你可以这样做:

> set "key" value
"OK"
> get "key"
"value"

因此,我推荐redis,与更重,更结构化的替代方案相比,我觉得它“轻松”。您可以在Try Redis处尝试,这是一个功能性交互式shell。


修改:您的评论以及您的修改会继续推荐Redis。 Redis有两个命令形式的TTL:expire,需要几秒钟,而expireat需要一个Unix时间戳。此外,它允许哈希,满足您的需求(据我所知):

> hmset POST:dd68f250-c3f2-11e1-9b21-0800200c9a66 _timestamp 1341198420 title "An Example" content "This is an example of a representation of a blog post (or something) in Redis."
"OK"
> hgetall POST:dd68f250-c3f2-11e1-9b21-0800200c9a66
{"_timestamp":"1341198420","title":"An Example","content":"This is an example of a representation of a blog post (or something) in Redis."}
> expire POST:dd68f250-c3f2-11e1-9b21-0800200c9a66 60
true
> ttl POST:dd68f250-c3f2-11e1-9b21-0800200c9a66
53