ソフトウェアトランザクショナルメモリは、データベーストランザクションと同じですか?

StackOverflow https://stackoverflow.com/questions/2495671

質問

私は特にHaskellのに関連して、ソフトウェアトランザクショナルメモリについてたくさん読みましたが、私はそれがデータベーストランザクションと異なる方法を把握しようとしていますか?私はSTMと理解していないいくつかの利点がありますか?

役に立ちましたか?

解決

ソフトウェアトランザクショナルメモリ内の「取引」の考え方は、明示的にデータベースから借りています。トランザクションが実装されていると、彼らがどのように使用される場合に違いがあります。

STMは、言語レベルの概念です:トランザクションがコミットされるまで、一連の操作は有効になりません。トランザクションが成功したときに、いくつかのグローバル/共有変数の値のみを変更することを一般的に、この手段。プロパティは、言語ランタイムによって強制されます。持続性のない固有の概念はありません:トランザクションに関与した変数は、本質的に純粋に動的であってもよい(例えば、作業キューのサイズ)

データベースのトランザクションは、アプリケーションレベルの概念です:トランザクションがコミットされるまで、データの一連の操作は有効になりません。これはデータベースなので、持続性が基本的である:データベースの内部「効果を取って」の意味は、データをいくつかの永続ストアに保存されていることである。

あなたが潜在的にSTM-スタイルのアルゴリズムを実装するために、データベースおよびデータベースのトランザクションを使用することができますが、言語レベルの実装の容易さと利便性を(そしておそらくほとんどの場合、パフォーマンス)を失うと思います。

他のヒント

アンSTMトランザクションは、データベーストランザクションを持つ多くの共通点を持っています。具体的には、データベース設計者にとって重要なACID特性の、STMは、原子性および単離を提供します。一貫性は、しかし、プログラマ - あなたは、たとえば、内部データ構造の不変条件に違反STMトランザクションを書くことができるまでです。最後に、STMの取引は、一般的に耐久性ではありません。結果は揮発性RAMに格納され、機械が成功したトランザクションの後クラッシュした場合、結果が失われることがあります。それは、私の心の中で、おそらくSTMトランザクションとデータベーストランザクションの間の最も顕著な差である。

データベーストランザクションは、データの整合性についてであるが、

STMは主に、同時実行のために使用されます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top