performance - 具有层次结构性能的 DocumentDB 与键值数据库

标签 performance mongodb redis couchdb key-value

第一件事:我知道键值数据库是迄今为止性能最好的数据库。我的假设是这是由于它们的简单性(坚持很少的原语)。 (EDIT2:显然也是由于蜜蜂主要保存在内存中)

不管怎样,更复杂的数据结构,如层次结构树等等。对于像 redis 这样的数据库,你必须构建一个基于“平面”散列和链接的结构,而对于像 couchdb 这样的文档数据库,你只需自己构建结构,如:

"menu": {
    "id": "file",
     "value": "File",
     "popup": {
        "menuitem": [
             {
              "value": "New",
              "onclick": "CreateNewDoc()"
              },
              {
              "value": "Open",
              "onclick": "OpenDoc()"
              },
              {
              "value": "Close",
              "onclick": "CloseDoc()"
              }
       ]
}

如果我有这样的结构,在性能和可用性方面使用 Redis 是否有意义?

有趣的是,键值数据库和文档数据库经常进行 1:1 比较,同时服务于不同的目的或/和用例恕我直言。

编辑:

我在寻找什么:通常我想要一个类似 JSON 的数据库存储,这让我可以轻松地动态定义和构建复杂的结构,并从使用数据库系统中获得好处(故障转移、速度、...)。

谢谢!

最佳答案

If I have structures like this, does it even make sense to use redis performance and usabilitywise?

您描述的结构由 json 文档中的嵌入式数据组成,但是即使使用文档数据库,embedded 之间仍然存在差异。和 referenced/linked数据。如果将大量数据嵌入到单个文档中,最终可能会出现性能问题和数据碎片。另一方面,引用更灵活,但需要一些连接逻辑。总结一下——这取决于您的域模型和您要解决的问题。关于 redis,有像 ohm 这样的库它提供了更多基于 OOP 的更高级别的数据抽象。

What I'm looking for: generally I would like to have a JSON-like DB store, which is giving me the ease of defining and building complex structures on the fly and getting the good things from use of a Databases-System (failover, speed, ...).

虽然 mongodb 可能是仅次于 couchdb 的最流行的文档数据库,但您也可以尝试查看其他解决方案,例如 arangodb 或 orientdb。它们中的每一个都建立在一些哲学之上,与其他解决方案相比,这些哲学可能在特定领域提供好处,例如couchdb 的 map-reduce 查询方式可能并不适合所有人,但它是持久的。

关于performance - 具有层次结构性能的 DocumentDB 与键值数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16853838/

相关文章:

java - 关于redis最大内存策略

Redis:客户端身份验证功能

mongodb - 使用 SSL RedHat 构建 MongoDB 失败 : collect2: ld returned 1 exit status

JAVA : Performance and Memory improvement code comparison from codechef

C# 和 Entity Framework - 为具有不确定家谱的自引用实体优化数据库查询

python - 如何提高 Trac 的性能

javascript - 是否可以在 Mongodb 上模拟大数据流?

django - 使用 mongoengine 减少对 MongoDB 的调用次数

redis - JOOQ记录缓存异常

python - 在 <= 1 MB RAM 和 <= 10 MB ROM 的设备上运行支持 vector 机内核是否可行?