7

アプリケーションのデータを永続的に保存したいと考えていますが、本格的なリレーショナル データベースは必要ありません。構造が単なる (キー、値) のペアである、基本的な「キャッシュ」のような永続ストレージで本当にうまくいくことができました。

データベースの代わりに最適でスケーラブルなオプションは何ですか?

4

11 に答える 11

12

ファイルに格納されているデータベースであるSQLiteが常に存在します。SQLite には既に組み込みの同時実行性があるため、ファイルのロックなどを心配する必要はなく、読み取りも非常に高速です。

ただし、多数のデータベースの変更を行っている場合は、トランザクション内で一度にすべてを行うのが最善です。これにより、変更クエリが発行されるたびにではなく、一度だけファイルに変更が書き込まれます。これにより、複数の変更を行う速度が劇的に向上します。

変更クエリが発行されると、それがトランザクション内であるかどうかにかかわらず、そのクエリが終了するまでデータベース全体がロックされます。これは、非常に大きなトランザクションが他のプロセスのパフォーマンスに悪影響を与える可能性があることを意味します。これは、データベースにアクセスする前にトランザクションが完了するまで待機する必要があるためです。実際には、これがそれほど目立つことはありませんが、発行するデータベース変更クエリの数を最小限に抑えることを常にお勧めします。

于 2008-11-28T16:53:52.397 に答える
6

「永続キャッシュ」が必要で、すでにmemcachedを使用している場合はmemcachedbを確認してください。これは、memcachedプロトコルを使用する永続的なハッシュテーブルであり、新しいクライアント(ただし新しいデーモン)は必要ありません。

于 2008-11-28T17:16:31.850 に答える
3

最近似たような質問をします。以下にいくつかの選択肢を示します。

于 2008-11-28T19:19:10.933 に答える
2

スケーラビリティが必要な場合は、RDBMS が最適です。最も基本的なレベルでは、データ構造をファイルにシリアル化できますが、同時実行性を制限するファイル ロックの問題を考慮する必要があります。

SQLite は SQL ファイルベースのデータベース エンジンであり、永続的なデータベース デーモンなしで実行できますが (たとえば、PHP では拡張機能として実行されます)、同時実行性の問題もあります (この質問への回答を読んでください。 SQLite が適しています)。

本物の DRBMS を使用しないという本当に正当な理由がない限り、MySQL またはその他の「本格的な」エンジンを使用することをお勧めします。

于 2008-11-28T16:55:37.150 に答える
1

CounchDBを試すことができます。これは非常に柔軟なドキュメント指向データベースであり、スキーマを事前に定義する必要はありません。これはErlangで書かれており、このおかげで非常にスケーラブルなソリューションと見なされています。これは、RESTインターフェースを介して簡単に照会できます。

于 2008-11-28T18:28:31.393 に答える
1

Key = Valueペアの場合、単純なロードおよび保存手順でINIファイル形式を使用して、それをロードし、メモリ内のハッシュテーブルに保存できます。

これは、dbで動作するようにロードおよび保存手順を変更するだけで、後で任意のサイズにスケールアップできます。

于 2008-11-28T18:00:10.110 に答える
1

埋め込みデータベースが必要なJavaプログラムを作成している場合は、 hsqldbを参照してください。これは、Javaで作成されており、Javaプログラムから呼び出された場合はsqliteよりもはるかにうまく機能するためです。

于 2008-11-28T17:04:42.733 に答える
1

Javaを作成している場合は、直接含めることができるJavaデータベースの実装があります(Jaredはhsqldbについて言及していますが、他にもあります)。

SQLiteは静的な包含には問題ありませんが、Cなどの互換性のある言語を使用している場合は、アプリケーションにMySQLを含めることもできます。

SQLも利用できるようにしていただければ幸いです。XMLファイルはもはやそれをカットしません。おそらく数年前にPDAソフトウェアを作成したときですが、iPhoneやAndroidでさえSQLiteが含まれています。

于 2008-11-28T17:08:46.157 に答える
1

インメモリモードのhsqldbは、フラットファイルベースのデータベースよりもはるかに優れたパフォーマンスを提供します。使い方もとても簡単です。また、テーブルが大きくなりすぎた場合は、ディスクにキャッシュするオプションもあります。このパフォーマンス比較を確認してください。

http://hsqldb.org/images/imola_retrieve.jpg
(ソース:hsqldb.org

于 2008-11-28T17:15:37.030 に答える
1

本当にスケーラブルなものが必要な場合は、フラット ファイルや XML ファイルは選択しません。データが大きくなると、パフォーマンスが低下する可能性があります。

ある段階で大量のデータがある場合でも、データベースを選択します。ニーズに合わせて非常に単純なスキーマを持つSQLIteのようなものを検討します。

于 2008-11-28T16:53:02.443 に答える
1

本当にそうすべきかどうかはわかりませんが、それが本当に軽いのであれば、XML ドキュメントに情報を保存することだけを考えたことがありますか? SQLiteを検討していない場合は?

于 2008-11-28T16:54:32.643 に答える