Linux上の分散システムにキーと値のペアを格納するための最速の方法を実装する必要があります。データベースのレコードは、平均で256バイトという非常に小さいものです。高性能分散ファイルシステム/データベースを実装する
私は、open()、write()、read()システムコールを使用して、ファイル内のオフセットでキーと値のペアを直接書き込むことを考えています。私はバッテリーでSSDディスクを使用するので、fdatasync()システムコールを省略することができます。したがって、システムの予期しないシャットダウンが発生した場合、ACID準拠について心配する必要はありません。 Linuxはすでにディスクキャッシュの実装を提供しているため、メモリに既にロードされているセクタでは読み書きは行われません。これは(私が思う)データを保存する最も速い方法です、例えばGT.MやIntersystemのGlobalsのような他のキャッシュ可能なデータベースエンジンよりもはるかに高速です。
しかし、データは複製されず、複製を達成するために、別のLinuxサーバのファイルシステムをNFSでコピーしてそこにコピーすることができます。たとえば、2つのデータサーバ(1つのローカルサーバと1つのリモートサーバ) 2つのopen()、2つのwrite()、2つのclose()呼び出しを発行します。リモートサーバー上でトランザクションが失敗した場合は、「同期がとれていない」とマークし、リモートサーバーが戻ったときに正常なファイルを再度コピーします。
このアプローチについてどう思いますか?それは速くなるでしょうか?私はUDP over NFSを使うことができるので、TCP Stackのオーバーヘッドは避けます。
アドバンテージリストは、これまでのところ、このように書きます:
- 、Linuxのディスクキャッシュ再利用コードの
- 数行
- 高性能
私が見つけるにはC.でこれをコーディングしますファイルのレコード私は物理的な場所へのポインタでメモリにbtreeを保持します。
お待ちください。お待ちください。なぜあなたは*書く必要がありますか?これはクラスか何かのためですか? – chrisaycock
いいえ、Webアプリケーション用です – Nulik
GDBMを基本ライブラリとして使用することを検討しましたか? –