データベースサービスDatomicに興味がありますが、私が取り組んでいるプロジェクトのニーズに合うかどうかはわかりません。 Datomicが適切な選択となるのはいつですか?
私がプロダクションでDatomicを使用していないという条件で、答えをあげると思いました。
私はそれぞれの側面にいくつか欠けていると確信しており、不利益の下に3つリストされていますが、不利益がその使用を排除しないより多くの状況で利点がそれらを上回ると思います。おそらく価格は、ほとんどの小規模プロジェクト(1年間の無料試用期間よりも長く続くことを期待しているプロジェクト)での使用を妨げるものです。
Cf.これ 短い投稿 いくつかのより多くの情報のために単純にDatomicを記述する。
表現力(c.f.データログ)と不変性は素晴らしいです。その点でDataomicを操作するのはSOとても楽しいです。少しだけ使用するだけで強力であることがわかります。
Datomicがアプリケーションに適しているかどうかを検討する際の重要なことの1つは、保存および照会するデータの形状について考えることです。Datomicファクトは実際にはRDF triples( +ファーストクラスの概念)複雑な関係(リンクグラフデータ)のモデリングに非常に適しています-これは、従来のSQLデータベースでは面倒なことが多いものです。この側面は、私にとって最も魅力的で重要なものの1つでした。もちろん、これはもちろんDatomicだけのものではありませんが、グラフデータベースには他にも多くの高品質な製品がありますが、JVMベースのソリューションについて話すときはNeo4Jに言及する必要があります。
Datomicスキーマについては、柔軟性と安定性のちょうど良いバランスだと思います。
上記の答えを完成させるために、不変性と過去を記憶する能力は、監査のようないくつかの特別な場合に適した「奇妙な機能」ではないことを強調したいと思います。これは、「可変セル」データベース(今日のデータベースの99%)と比較して、いくつかの深い利点があるアプローチです。スチュアート・ハロウェイは、このビデオでこれをうまく示しています: インピーダンスの不一致は私たちのせいです 。
私の意見では、このアプローチは基本的に概念上より正気です。数ヶ月使用したので、Datomicがクレイジーで魔法のような洗練された力を持っているとは思えません。
ここに私が価値があると思うDatomicの機能がいくつかありますが、そのほとんどは不変性によって可能になっています。
notがDatomicを使用するタイミングについて、現在の制約と制限を以下に示します。
私の非常に曖昧で非公式な答えは、ロードは合理的であり、ライセンスとJVMに問題がないほとんどの非自明なアプリケーションに適していますです。
類推として、不変性に基づいていない他のバージョン管理システムと比較して、Gitについて同じ質問を自問することができます。
暫定的に他の答えを追加するために:
Datomicは、他のすべての現在のオプションのクエリ可能なデータストアのより優れた概念的フレームワークを提供する一方で、部分的にスケーラブルであり、非常に優れたパフォーマンスを発揮しないと言ってもよいでしょう。
部分的にスケーラブルです。なぜなら、クエリはピアに収まる必要があるためですRAMまたは失敗します。そして、例外的にパフォーマンスは最高ですSQLエンジンは、洗練された実行計画を通じてメモリに収まるようにクエリを最適化できます。これは、datomicの機能としてはまだ言及していませんが、トランザクションとクエリのDatomicの分離により、この機能が全体的に相殺される可能性があります。
ただし、多くのNoSQLエンジンとは異なり、トランザクションは第一級の市民であり、重要な点でRDBMSシステムと同等です。
データが書き込まれるよりも多く読み込まれ、トランザクションが必要であり、クエリが常にメモリに収まるか、メモリが非常に安価であり、蓄積されたデータの全体サイズが 大きすぎる ではないアプリケーションの場合、 APIで暗示されている新しい概念フレームワークを採用したい人のために、商用専用の製品を提供できる場所で勝ちます。