3

できれば ODBC 経由で、複数の接続をサポートする必要があります。クライアントは、同じマシン上で個別のプロセスとして実行されます。クライアントが他の場所で持続性を処理するため、持続性は必要ありません。重要な場合、クライアントは C++ で記述されています。

データは非常に単純で、関連のない双方向マップのセットです。アクセスは、値または範囲 ( between X and Y) によって直接行われ、更新はありません。ここでは実際には SQL は必要ないため、SQL 以外のソリューションも検討できます。

クライアント アプリケーションはマルチプロセスであり、複数のマシンで実行できます。各マシンには、ローカル クライアントによって中央ストアに対して更新される、そのような DB のローカル コピーが必要です。

複数の編集:

  1. プラットフォームは Linux です
  2. セキュリティ上の理由から、RAM ディスクはオプションではありません。マシンにアクセスできる人がデータを表示できるようにしたくありません。
  3. データは暗号化された形式でのみ永続化する必要があるため、ソリューションではデータをまったく永続化しないか、永続化のためにユーザー定義のフィルター/プラグインを許可する必要があります。
4

7 に答える 7

1

RAMデータベースを開いた状態でSQLiteを使用しない特別な理由はありますか?

于 2010-11-22T16:54:57.220 に答える
1

これは、Linux で使用できるトリックです。「レイジー アンマウント」と呼ばれます。

  1. tmpfs をどこかにマウントする
  2. それを使用するためにいくつかのプロセスを開始し、そのディレクトリに chdir() します。mysql インスタンスを使用できます。mysql は常にそのデータ ディレクトリに対して chdir を実行します。
  3. プロセスが正常に起動したら、-l (lazy) オプションを使用して tmpfs をアンマウントします。

現在、tmpfs は存在し、プロセスがアクセスしている限り存在し続けますが、マウントポイントに存在しなくなったため、無関係なプロセスからはアクセスできなくなりました。

これは決して root が tmpfs のデータを取得するのを止めるものではなく、少し難しくするだけであることに注意してください。

また、スワップされる可能性があることにも注意してください。そのため、永続的でないことが絶対に必要な場合は、スワップを無効にする (または暗号化されたスワップを使用する) 必要があります。

于 2010-11-25T15:12:38.390 に答える
1

それに慣れているという理由だけで、私はmysqlを使います。これをメモリ内データベースとして使用するには、テーブル タイプとしてメモリを使用します。Redis はメモリ内の NoSql データベースであり、おそらくこれに最適です (メモリ内で実行され、永続化のためのディスク書き込みのみを無効にすることができます)。

于 2010-11-22T15:52:22.050 に答える
1

セキュリティ上の理由から、RAM ディスクはオプションではありません。マシンにアクセスできる人がデータを表示できるようにしたくありません。

あなたは運が悪いです。とにかく、マシンにアクセスできる人なら誰でも /proc/$PID/mem からデータを表示できます。

非ルート アクセスについて話している場合は、chmod 700 で /tmp/$directory/ メソッドを使用します。

于 2010-11-23T18:09:19.627 に答える
0

目的のためにマウントした tmpfs を datadir= で mysql を使用します。もちろん、すべてのデータが失われるため、起動時に (mysql_install_db などを使用して) データベースをインストールする起動スクリプトを作成する必要があります。

于 2010-11-22T16:38:54.060 に答える
0

Boost.MultiIndexを試してください。明らかな選択ではありませんが、リレーショナル DB の概念に基づいています。

要素の同じコレクションに対するマルチインデックスの概念は、リレーショナル データベースの用語から借用されたものであり、単純なセットとマップでは不十分な複数インデックスのリレーショナル テーブルの精神で、複雑なデータ構造の指定を可能にします。std::set、std::list、ハッシュ セットなどの類似の STL コンテナーをモデルにした、幅広いインデックスが提供されています。

于 2010-11-22T15:27:22.937 に答える
0

memcachedは実行可能なソリューションになる可能性があります。これは、一定期間値を保持するように設定でき、スケーラブルで、セットアップと使用開始が簡単なキー値ストアです。また、あらゆる種類の環境で実行されます。特にメインページはほとんど役に立たないため、詳細については wiki サイトを参照してください。

于 2010-11-22T16:45:32.677 に答える