2

より具体的には、耐久性を提供するためにセカンダリ ストレージ (HDD など) を必要としないデータベースはありますか?

注:これは私の以前の質問のフォローアップです

4

4 に答える 4

4

トランザクションの永続性が必要な場合は、永続ストレージへの書き込みが唯一の現実的なオプションです (おそらく、独立したデータセンターに独立した電源を備えた多くのクラスターを構築したくない場合でも、同時に障害が発生しないことを祈ります)。一方、それはデータの価値に依存します。不要な場合は、十分なレプリケーションを備えた純粋なインメモリ DB が適切な場合があります。ところで、データを保存した後に HDD でさえ故障する可能性があるため、ここでは理想的なソリューションではありません。レプリケーションのトレードオフを選択するには、http: //www.julianbrowne.com/article/viewer/brewers-cap-theorem を参照してください。

Prevayler http://prevayler.org/は、永続的なストレージでバックアップされたメモリ内システムの例です (コードは非常に単純です)。耐久性は、適切なデバイス (HDD や SSD など) に保持されるトランザクション ログによって提供されます。データを変更する各トランザクションはログに書き込まれ、ログは電源障害またはデータベース/システムの再起動後に DB の状態を復元するために使用されます。Prevayler は別として、メッセージ キューを永続化するために使用される同様のスキームを見てきました。これは、ログが基礎となるストレージに書き込まれるデータのみであることを除いて、「従来の」RDBMS の動作に似ています。ログはレプリケーションにも使用できるため、ログの 1 つのコピーをライブ レプリカに送信し、もう 1 つを HDD に送信できます。もちろん様々な組み合わせが可能です。

于 2010-08-03T06:40:37.517 に答える
1

すべてのデータベースには、耐久性を確保するために不揮発性ストレージが必要です。メモリ イメージは、耐久性のある記憶媒体を提供しません。電源を失った直後に、メモリ イメージが無効になります。同様に、データベース プロセスが終了するとすぐに、オペレーティング システムはインメモリ イメージを含むメモリを解放します。いずれの場合も、データベースの内容が失われます。

変更が不揮発性メモリに書き込まれるまでは、真の耐久性はありません。これは、すべてのデータ変更をディスクに書き込むこと、または行われた変更のジャーナルを書き込むことで構成されます。

スペースやサイズが重要な場合は、フラッシュなどの不揮発性メモリを HDD の代わりに使用できます。ただし、フラッシュには、書き込み可能な書き込みサイクル数に問題があると報告されています。

以前の投稿を確認したところ、最後のサーバーを実行し続けることができる限り、マルチサーバー レプリケーションは機能します。ダウンするとすぐに、キューが失われます。ただし、考えられる Oracle の代替手段は多数あります。

PDA は多くの場合、バッテリ バックアップ メモリを使用してデータベースを格納します。これらのデータベースは、バッテリーが切れると耐久性がなくなります。バックアップは重要です。

于 2010-07-27T03:32:06.590 に答える
0

クラシック イン メモリ データベースはクラシックの耐久性を提供できませんが、要件によっては次のことが可能です。

  • memcached (または同様のもの) を使用して、データが失われる可能性が低い十分な数のノードにわたってメモリに格納します。
  • OracleデータベースをSANベースのファイルシステムに保存する場合、データベース全体がRAMに収まる十分なRAM(たとえば3GB)を与えることができるため、ディスクシークアクセスでアプリケーションがダウンすることはありません. その後、SAN はキャッシュの内容のディスクへの遅延ライトバックを処理します。これは非常に高価なオプションですが、高性能と高可用性が必要であり、余裕がある場所では一般的です。
  • SAN を購入する余裕がない場合は、RAM ディスクをマウントしてそこにデータベースをインストールし、DB レベルのレプリケーション (ログ配布など) を使用してフェイルオーバーを提供します。

永続ストレージを使用したくない理由はありますか?

于 2010-08-01T16:04:54.713 に答える