9

Aerospike データベースによると

[...] 3 つの主な目的で設計されています:
今日の Web スケール アプリケーションのニーズを満たす柔軟でスケーラブルなプラットフォームを作成する
従来のデータベースに期待される堅牢性と信頼性 (つまり、ACID) を提供すること。
運用効率を提供するため (最小限の手動関与)

そして他の場所で

Aerospike は、最新のストレージおよびデータベース テクノロジと連携して、強力な一貫性 (ACID) を保証しながら、可能な限り多くのトランザクション スループットを絞り込むように最適化されています。

まず、Aerospike でトランザクションの定義が見つかりませんでした。通常、データベースに対する一連の操作として取得します。ただし、後で読むと、トランザクションが ACID であることがわかりません。

詳細なAerospike ACIDの説明を読むと、ACID 保証のふりをしているだけであることがわかりました。

例:

  • トランザクションで一連の操作 (a、b、c) を作成したいと考えています。各操作は独立した DB クエリです。c が失敗した場合、DB システムによって a と b がロールバックされます。この機能は Aerospike にはありませんでした。
  • ドキュメント A と B を変更する 2 つの同時トランザクションを考えてみましょう。最初は A=0 と B=0 です。

    • T1 は と に 1 を加算しAますB
    • T2 は A と B を 2 で乗算します。

    常に最終A==B的には - 結果は次のいずれかになります。

    • A=1 & B=1T2 が最初にドキュメント A と B をロック/所有権を取得するとき
    • A=2 & B=2T2 が最初にドキュメント A と B をロック/所有権を取得するとき

    この結果の保証は何ですか?

1.私の例の結果を確認できますか?

2.ユーザー定義関数はここで何らかの形で役立ちますか?

PS

はっきりさせておきますが、エアロスパイクが悪いとは言いたくありません。そこに素晴らしい作品が見えます。ACID保証がそこで失敗したときの明確な説明が欠けています。

4

1 に答える 1