2016-06-25 5 views
0

私は、というと大量の地理空間と時間問合せを処理できるという要件を満たすNoSQLテクノロジを探しています。パフォーマンス。 Sparkと一緒に提案されたNoSQLテクノロジーを使用して、数百GBからTBのデータをバッチ処理する必要があります。これは明らかにいくつかのノードを持つクラスタ上で実行されます。私が実行したいクエリの地理空間および時間問合せ用のNoSQLテクノロジーはどれですか?

タイプ:

  • 「フィールド< =値」のような属性の「正常な」クエリBBOX以内に依存しているすべてのデータを照会するよう
  • 基本的な地理空間クエリ。
  • 時間は、すべてのデータ「> =時間11時00分と時間< = 14時00」「日付< = 2011年1月1日」など
  • 3つのクエリの種類のすべての組み合わせ(クエリ」のようなものを問い合わせます場所はBBOX内と日付の2011年1月1日と時間< =午前14時とfield_x < = 100" )

私は現在、私のユースケースのために可能であるが、私は全くのことで圧倒していた技術を評価しています上のどこにあります利用可能な技術の量。私はMongoDBやCassandraのような人気のある技術について考えました。どちらも私のユースケース(Stratios LuceneインデックスのみのCassandra)に適用されるようですが、さらに優れた技術があるかもしれません。

これらの要件に基づいて他のテクノロジを大きく上回る技術はありますか?

答えて

2

私はGB単位の数百のデータ

だが、本当にカサンドラの使用例のTBには、バッチ処理にしたいです。 Cassandraは、まず書き込みパフォーマンスに最適化されています。あなたが本当に巨額の執筆をしていれば、カサンドラはあなたのための良い選択肢になるかもしれません。 CassandraはExploratory Queryのデータベースではありません。カサンドラは既知のクエリのデータベースです。読み取りレベルでは、Cassandraはシーケンシャル読み込みに最適化されています。 Cassandraは、データを順番にしか照会できません。これを無視することも可能ですが、お勧めしません。膨大な量のデータが、間違ったデータモデルで、Cassandraの問題になる可能性があります。おそらく、ハープベースのデータベースシステムがあなたのためのより良いオプションです。 「日付< = 2011年1月1日」など

時間クエリ「時間> = 11時と時間< =午前14時」

カサンドラは、時系列データのための本当に良いです。

「フィールド< =値」のような属性の「正常な」クエリ

あなたはあなたのデータベースをモデル化する前にクエリを知っていれば、カサンドラも良い選択です。

3つのクエリタイプ(「ロケーションがbbox内の日付01.01のすべてのデータをクエリする」などのすべての組み合わせ)。カサンドラは良い解決策になる可能性が2011時間=午前14時<とfield_x < = 100" )

なぜできた私が言ったように:。?あなたは、あなたのテーブルを作成する前に、これは照会を知っている必要があり、あなたが知っている場合。あなたはそれがあなたのために良い解決策であるあなたは、時間帯や場所(市、国、コンテンツなど)を必要とするクエリの数千を持っていること。まともなパフォーマンスで大規模に

時間クエリ。

カッサンドラは、このユースケースではエラーが発生します。データは既に必要な順番になっています。 MonoDBは、MySQLの使用例の良い代替品です。より良い縮尺を必要とするが、mongodbを拡大することはCassandraのように単純ではなく、柔軟に行うことができ、一貫性を気にする。カサンドラは最終的な一貫性がスケーラブルであり、パフォーマンスが本当に重要です。 MongoDBにも関係があり、Cassandraではありません。カッサンドラでは、パフォーマンスが気になるのですべてが非正規化されています。

+0

sensor_id、タイムスタンプ、場所(すべてのレコードで利用できない!)、キー、値を含むcassandra列ファミリについて考えました。私のフィールド "キー"上のクラスタリングキーを持っているので、私は各論理ログエントリの複数のキー/値を持つことができます。 場所を問い合せるときには、返されるジオクエリのタイムスタンプのタイムスタンプに基づいて、常にデータを引き出す必要があります。たとえば、私のジオクエリーが "25.06.2016-21:18:30"という日付のレコードを返す場合は、最後の-5分と+5分を読みたいと思っています。シーケンシャルな読み込みが本当に便利になるかもしれません。 問題が表示されます。 [1/2] – j9dy

+0

私のログエントリのすべてにその場所が含まれているわけではありません。だから私は場所のために、例えば "内のbbox" - クエリを照会するとき、私は場所を含む単一のエントリを得るかもしれません。これは、私が最初にジオクエリーを実行し、それを完了させ、その後、返された各レコードの日付/時間フィールドを取得し、ジオクエリーによって返された各日付の-5および+5分に基づいて順次チャンクを読むことを必要とする。それから私は本当に必要なデータを持っています。また、 "key = velocity OR key = whatever"のように、 "key"フィールドをフィルタリングする必要があります。これは問題ですか?これをスピードアップする方法はありますか? – j9dy

関連する問題