問題タブ [acid]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
mongodb - NoSQLデータベース:読み取りの一貫性についてはどうですか?
私が理解できることから、NoSQLデータベースは、高強度のデータ読み取りアプリケーションには適しているかもしれませんが、大量のデータ更新も行う必要があり、トランザクション性が非常に重要である場合は、あまり適していません( ACIDコンプライアンス)。右?単純すぎるかもしれません。
しかし、とにかく、少なくとも部分的に正しいと仮定すると、NoSQLデータベースが、読み取りまたは書き込みのいずれかであるデータの「読み取り一貫性のある」ビューをどのように維持するかについて懸念しています。それとも彼らですか?そうでなければ、それは本当に大きな問題ではありませんか?
つまり、読んでいる(または更新している)データが読んでいるときに変化している場合は、一貫性のない/ダーティな結果セットが得られる可能性があります。Oracle rdbmsのバックグラウンドから来て、これらすべてがあなたのために処理されているので、読み取りの一貫性の欠如が大きな問題ではないことを混乱させています。私はこれらすべてについていくつかの重要なポイントを見逃しているかもしれません。誰かが私をまっすぐにすることができますか?
distributed-transactions - VoltDB はマルチパーティション (またはグローバル) トランザクションで ACID を完全にサポートしていますか?
データベースに関する私の現在の経験は、主に MS SQL、MySQL、およびオラクルです。VoltDB に出くわしたとき、よりスケーラブルな代替手段 (多くの NoSQL ソリューション) を調べていました。
SQL、トランザクション、および ACID の使用を維持しているため、非常に興味深いものに見えます。彼らのサイトの FAQ は、マルチパーティション (おそらく複数のサーバーにまたがる) トランザクションでさえ、ACID に完全に準拠していることを示唆しているようです。しかし、それは明示的に述べられておらず、事実を確認する他の情報源を見つけることができなかったので、誰かがそれを確認/否定できるかどうか疑問に思っていました.
haskell - スレッドが無期限にブロックされる - Haskell - Acid State
私は Acid State が多くのイベント ファイルとチェックポイントを生成することを心配していました。ユーザー「stepcut」は、古いイベントを削除する createArchive と呼ばれる酸のソリューションの実装があることを教えてくれました... 問題は、私がそれを使用すると、このエラー:
w7の権限が原因だと思いますが、「管理者」で実行するとコンソールが表示されませんが、イベントファイルはまだそこにあるので、機能していないと思います。
ghci を介してコードを実行すると、エラーは発生しませんが、コンソールがロックされるため、作業を続けるには CtrlC が必要です。
誰かがこのエラーを受け取りましたか?
haskell - acid-state の使用 - 関数の safeCopy
データ型がある場合の問題:
問題は、私が言うときです
次のエラーが発生しました:
そのため、SafeCopy は機能を意図していない可能性があることを理解しています...
私は困っていますか?私はMyDataのモデルを変更できないので....これを行う方法はありますか?
database - Haskell はデータベースのふりをすることができますか? もしそうなら、どのように?
これはばかげた質問かもしれませんが、Haskell を入手して (または Haskell で何らかのライブラリを使用して) SQL データベースのように動作させる方法はありますか? もしそうなら、どのように?
SQLite のようなものですが、永続性はありませんか?
Haskell の「テーブル」と Haskell の「インデックス」(メモリに格納) を作成し、外部アプリケーションがそれらにクエリを実行できるという考えです。
結合を処理できなくても大丈夫です。
その理由は、外部アプリケーションがデータベースにクエリを実行する必要があるためですが、データをacid-stateに保ちたいため、常にデータベースにデータをダンプする中間ステップを実行したくありません。
oracle - この PL/SQL コードは ACID に準拠していますか?
TEMPORARY テーブルで非同期コミットを発行しても問題ありませんか? トランザクションの耐久性が低下しますか?
編集:
はい、D部分を一瞬バイパスするため、厳密にはACIDではないことを理解しています。問題は、実際の COMMIT のみが使用されているバージョンと異なるシナリオが考えられないため、ACID と「同じくらい良い」かどうかです。それとも私が間違っていて、違いがあるのでしょうか?
php - PHP PDO を使用したトランザクションは、同時実行でどのように機能しますか?
複数のユーザーが相互にやり取りし、共有データの読み取り/決定/変更を行う webapp を作成しています。
トランザクションはアトミックであると読みましたが、これが必要です。ただし、PHPでどのように機能するかはわかりませんPDO::beginTransaction()
つまり、1 つのトランザクションが一部のデータを編集し、他のすべてのトランザクションもそのデータを変更/読み取り、最初のトランザクションが終了するまで待機する必要があるかのように、アトミックを意味します。2 つのスクリプトで値を読み取り、古い値をインクリメントし、実質的に 1 つのインクリメントのみを保存するのは望ましくありません。2 番目のスクリプトは、最初のスクリプトが終了するまで待機する必要があります。
私が見たほとんどすべての例では、クエリが連続して使用されています (例PHP + MySQL トランザクションの例)。私がやっていることの多くは
- クエリとフェッチ
- 同じトランザクションの一部として、そのデータをチェックし、それに基づいて行動する
- クエリ間に PHP コードがある場合、トランザクションはアトミックに動作しますか?
- 取引外で明細書を作成する必要があるのは承知していますが、取引内で作成してもよろしいですか?基本的に、私は PHP アクティビティがトランザクションの原子性を台無しにすることを心配しています。
以下に例を示します (これは以前の値を確認する必要はありません)。メールをシリアル化された配列として保存する非常に基本的な受信トレイ システムがあります (より良い推奨事項がある場合はお知らせください)。そのため、クエリを実行し、新しいメッセージを追加して保存します。期待どおりに機能しますか?
database - データ読み取り操作はトランザクション内で実行する必要がないと言うのは正しいですか?
メソッドがデータベースからデータを読み取るだけで、データベースに書き込まないとします。そのようなメソッドをトランザクション内で実行する必要がないのは常に事実ですか?
sql - SQLデータベースにjsonを保存/クエリする効率的な方法が必要
私は、各ユーザーが独自のjson/documentデータベースを持っている必要があるサービスを実装しています。ユーザーがjsonドキュメントをクエリできるようにするだけでなく、データベースは複数のドキュメントを含むACIDトランザクションもサポートする必要があるため、Couch / Mongoまたはその他のNoSQLデータベースを使用して破棄しました(RavenDBはUnixシステムで実行する必要があるため使用できません)。
それを念頭に置いて、SQLデータベースの上にそれを実装する方法を考えようとしてきました。これが私がこれまでに思いついたものです:
各ユーザーは、これら2つのテーブルを含むデータベースを持っており、システムが「インデックス」テーブルに適切にデータを入力できるように、ユーザーはクエリを実行する必要のあるフィールドを宣言する必要があります。したがって、ユーザー「A」が「名前」と「年齢」によるクエリを有効にするようにアカウントを構成すると、そのユーザーが「名前」または「年齢」プロパティを持つドキュメントを挿入するたびに、システムは「インデックス」にもレコードを挿入します。テーブル。「property」列には名前/年齢が含まれ、「value」にはプロパティ値が含まれ、「document_id」は対応するドキュメントを指します。
たとえば、ユーザーが次のドキュメントを挿入するとします。
これにより、「documents」テーブルに挿入され、「indexes」テーブルにさらに2つの挿入が行われます。
次に、ユーザー「A」がサービスに次のクエリを送信したとします。
このクエリは、次のSQLに変換されます。
私の質問:
- ユーザーがクエリで多数の条件(たとえば20〜30のAND条件)を使用できる可能性があることを知っていると、サブクエリのネストが非常に高くなり、上記のSELECTクエリはほとんどのデータベースシステムでどれほど効率的ですか( postgres、mysql ...)?
- 上記のソリューションは、最終的に数百万/数十億のjsonドキュメントを含むデータベースで実行可能ですか?
- 私の要件を満たすためのより良い方法はありますか?
- 複数のドキュメントを含むACIDトランザクションを実行でき、Unixシステムで実行できるスケーラブルなドキュメントデータベースはありますか?
java - JTA Transaction Managerは実行時にどのようにデプロイされますか?
ドキュメントにアクセスしやすいため(src / docs / jars / etcにアクセスするためにサインアップして登録するAtmikosとは対照的に)、JTAに頭を悩ませ、実装としてBitronixを任意に選択しようとしています。 )。
Bitronixを(TomcatとGlassFishを使用して)JTA実装として使用したい場合、その基本アーキテクチャー(JTA自体の基本アーキテクチャーである可能性があります)は何ですか?トランザクションマネージャーは、(JMSブローカーのように)接続する実際のサーバー/ランタイムですか?それとも、これは、トランザクションが必要なときにいつでも構成してヒットできるAPIですか?
JTAについての私の理解は、次のようなものがあるということです。
- あなたのコード
- リソースマネージャー-一部のACID準拠の永続性のためのアダプター(データストアやメッセージブローカーなど)
- トランザクションマネージャー-コードとリソースマネージャー間のトランザクションAPI呼び出しを管理します
Bitronixは単なるトランザクションマネージャーですか?もしそうなら、それは別のアプリケーション、あなたと一緒にデプロイする必要がある別のJAR / WARですか、それともアプリ内に「埋め込まれて」実行されますか?前もって感謝します!