web-dev-qa-db-ja.com

インプレースでデータを削除または更新しない汎用データベース

私はデータ管理へのアプローチに非常に刺激を受けています Rich Hickeyによって提唱されています 、そして Datomic で実装されています。 always保存され、クエリ可能であり、時間はファーストクラスの概念です。

もちろん、Gitやその他のソース管理システムなど、その説明に一致する専用のデータベースがあります。問題は、(多かれ少なかれ)リレーショナル、グラフ、階層、ドキュメント、またはeコマースWebアプリケーションなどで効果的に使用できる他のフレーバーの汎用DBMSがあるかどうかです。それともDatomicが唯一の選択肢なのでしょうか?

51
Ivan Krechetov

イベントソーシングと呼ばれるデータを絶対に削除または変更しないという考えでシステムを設計する方法があります。基本的に、アイデアは、状態のスナップショットではなく、システム状態を変更するイベント(またはファクト)を格納することです。イベントの履歴を後で再生して、任意の時点の状態がどのようになっていたかについて、特定の目的に固有の予測を作成できます。異なる目的で構築された複数のプロジェクションがシステム内で共存できます。詳細については、次のWebサイトを参照してください。

イベントソーシングとコマンドクエリ責任分離(CQRS)は、単なるデータベースモデルではなく、データベースとビジネスロジックレイヤーを含むシステム全体を設計する特別な方法を規定しています。

次のような、このアプローチに従ういくつかのフレームワークがあります。

これはあなたの質問に直接答えるものではありませんが、問題について別の見方をするかもしれません。

34

Irmin は、Gitと同じ設計原則に従う分散データベースです。

6
Dzmitry Lahoda