大きなJSONファイルをデータベースに保存するための最良の方法は何ですか?CouchDBについては知っていますが、使用するサイズのファイルはサポートされないと確信しています。
それらを読み取ってから更新するのに時間がかかるため、ディスクからそれらを読み取るのは気が進まない。このファイルは最大30,000個の要素の配列であるため、各要素を従来のデータベースに個別に保存すると、すべてを選択しようとすると死んでしまうと思います。
CouchDBには2メガを超えるドキュメントがたくさんあり、それらを正常に処理します。それらの制限は時代遅れです。
唯一の注意点は、デフォルトのjavascriptビューサーバーにはかなり遅いJSONパーサーがあるため、大きなドキュメントではビューの生成に時間がかかる可能性があることです。私のPythonビューサーバーをCベースのJSONライブラリ(jsonlib2、simplejson、yajl)で使用するか、JSONシリアル化にさえヒットしない組み込みのerlangビューを使用すると、ビューの生成が非常に高速になります。
一度に1つ(または複数)の特定の要素にアクセスする場合は、大きなJSONを従来のDBの行と列に分割する方法はありません。
一度にアクセスしたい場合は、XMLに変換してDBに保存できます(おそらく圧縮されています-XMLは非常に圧縮可能です)。ほとんどのDBエンジンは、XMLオブジェクトの保存をサポートしています。次に、それを1回で読み取ることができ、必要に応じて、SAXなどの前方読み取りアプローチまたはその他の効率的なXML読み取りテクノロジーを使用して、JSONに変換し直すことができます。
しかし、@ therefromhereがコメントしたように、いつでも1つの大きな文字列として保存できます(圧縮すると何かが向上するかどうかをもう一度確認します)。
ここでは実際にはさまざまな選択肢はありません。次のようなものを使用してRAMにキャッシュするかmemcached
、データベース(PostgreSQL / MySQLのようなRDBMSまたはCouchDBのようなDOD)を使用してディスクの読み取りと書き込みにプッシュできます。これらの唯一の実際の代替手段は、最も頻繁にアクセスされるドキュメントをmemcachedにキャッシュして読み取るハイブリッドシステムです。これは、多くのサイトの運用方法です。
2 + MBはデータベースにとって大したことではなく、十分なRAMがあれば、RAMをキャッシュして効果的に使用するのに十分なインテリジェントな仕事をします。これらのドキュメントにアクセスするタイミングと頻度、およびユーザーにサービスを提供する方法の頻度パターンはありますか?