【问题标题】:Are there any design patterns for bitemporal NoSQL databases? [closed]双时态 NoSQL 数据库是否有任何设计模式? [关闭]
【发布时间】:2011-04-28 17:30:37
【问题描述】:

我很好奇是否有人已经实现甚至知道任何构建在 NoSQL 平台上的双时态数据库(例如 riak)。

【问题讨论】:

    标签: database database-design nosql temporal-database temporal


    【解决方案1】:

    我不知道有任何专门设计用于处理时态数据的 NoSQL 数据存储。 为了将有效时间段和交易时间段放入 Riak 中的数据中,您需要:

    1. 使用可以保存元数据的结构包装您的文档/值,例如:

      { 元:{ 有效:[“2001-11-08”,“2001-11-09”], 交易:[“2011-01-29 10:27:00”,“2011-01-29 10:28:00”] } 有效载荷:“这是我要存储的实际文档/值!” }

    2. 为每个文档创建一个“元文档”并使用Riak Links 将它们链接起来。
      我认为这更简洁一些,但如果您需要经常检索这些时间,那么这种方法可能太慢了。

    如果您想按时间检索文档,那么我认为 Riak(或我所知道的任何其他键/值数据存储)不会是合适的数据存储。 SQL 或某些 BigTable 系统可能是您唯一的好选择。

    【讨论】:

      【解决方案2】:

      我写了一个基于 Mongodb 的小型双时态开源数据库层:

      https://github.com/1123/bitemporaldb

      当存储 Scala 或 Java 对象时,该对象被包装成具有双时元信息(有效时间、事务时间)的通用双时对象。随后它被序列化为 json 并作为 BSON 存储在 MongoDB 中。

      它透明地处理对象的时间和非时间更新。可以按双时域上下文进行搜索。

      用于双时态数据的面向文档的数据库是有益的,因为面向文档的存储减少了数据检索的连接数量。双时态上下文中的联接可能效率低下且难以手动编码。

      非常欢迎提供反馈、贡献和功能请求。

      【讨论】:

        【解决方案3】:

        为了支持双时态(或时态数据库模型),您需要酸性事务来执行正确的 DML,以更新和插入两个时间维度(有效/有效时间和事务/系统时间)上的记录。 See for details 关于时间建模。

        例如,Cassandra、MongoDB、Couchbase 等流行的 NoSQL 数据库不支持 ACID 来执行支持双时态记录操作所需的必要记录更新/插入操作。对于时态和双时态数据库,记录绝不能重叠,并且在被后续有效/事务时间记录取代时必须正确终止记录。

        MarkLogic NoSQL 数据库声称支持双时态,但从未尝试过并且不是开源的。但是您可以通过使用有效地充当有效/事务时间跟踪日志的 ACID 数据库来推出自己的解决方案,然后将 NoSQL 用于实际数据存储。请参阅此approach here 的高级描述。

        【讨论】:

          【解决方案4】:

          来自维基百科:

          “双时态数据是时态数据库中使用的概念。它表示数据的有效时间和事务时间。 在数据库表中,双时态数据通常由四个额外的表列 StartVT 和 EndVT、StartTT 和 EndTT 表示。每个时间间隔都在其下限处关闭,并在其上限处打开。”

          所以你不能只把这四个值放到你的数据上?

          【讨论】:

          • 添加此元数据只是部分解决方案。需要自动管理此元数据。考虑仅在给定的有效时间(2015 年)更新逻辑对象。然后,双时态数据库将确保 2015 年之前和 2015 年之后的原始值保持不变。它还允许使用双时间上下文进行查询:我在 2013 年对 2015 年逻辑 ID 为 777 的对象的状态有什么了解?
          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-02-21
          • 2016-11-20
          • 2010-12-29
          • 2010-09-13
          • 2012-03-24
          • 1970-01-01
          • 2012-12-08
          相关资源
          最近更新 更多