私は、スキンレスJSONデータを含む150万レコードのrethinkdbテーブルを持っています。私はJSONのネストされたフィールドを照会しています。例えば、 'Gate No.'フィールドはJSONの下にあります。rethinkdbの多数のレコードのクエリパフォーマンスを向上させます
私は1MNレコードを含むテーブルで同じクエリを実行した場合は、680ミリ秒で返されたクエリは、しかし、150枚のMNレコードと、クエリは全く戻らない{ 'Name' : 'XYZ', 'Age' : 22, 'Address' : { 'Gate No.' : 7, 'Society' : 'ABC' } }
。 Webコンソールからしばらく実行され、後でエラー:Query terminated by an unknown cause
が返されます。私のJavaアプリケーションからは、クエリは永遠に実行されるようです。
私は4台のサーバでシャーディングを試みましたが、それぞれ3700万個のドキュメントを保持していましたが、それは状況を改善するようには見えません。クエリを実行するにはどうすればよいですか?
PS:JSONデータは完全にスキーマレスなので、データのインデックスは実行可能なオプションではありません。あなたは間違いなく、インデックスを作成する必要があります
まず:私はこのように、この問題に取り組むだろうとあなたが言った余分な情報に基づいて
Hey Kapilは、実行している正確なクエリと、テーブルに作成したインデックスについてさらに詳しい情報を提供できますか? – dalanmiller
私が実行しているクエリは、r.db( 'dbName')テーブル( 'tableName')フィルタ(r.row( 'Address')( 'Gate No。')。eq(7))です。正確に1つのレコードを返す必要があります。このテーブルには、150万レコード(4つのシャード、それぞれ〜37万レコード)が含まれています。私はインデックスを使用していませんが、インデックスを構築するためのクエリはWebコンソールからタイムアウトします。また、JSONファイルはスキーマレスなので、インデックスは機能しないと思いますか? –
フィルタはインデックスをまったく使用しません。あなたはAdress.Gate No.のインデックスを持つgetAllを使う必要があります。 https://www.rethinkdb.com/api/javascript/get_all/ – jishi