2016-06-22 1 views
1

このシナリオでは、金融市場データ(ファンドの価格など)を収集し、SQLテーブルに格納します。カサンドラは、この種の時系列データとSQLサーバの良い選択ですか?

で最も一日一回

通常、ファンドの価格なので、表にはなります

FundId Date  Price1  Price2 

我々はいくつかのデータが欲しい場合は、単純なクエリを実行します:

select Date, Price1, Price2 from FundPriceTable where Date between XX and XX 

しかし、私たちが集まってますます多くのデータ、上記のクエリのパフォーマンスが低下し始めた。私たちは統計情報の再索引付けと更新を試みました。問題は、膨大なデータを取り出すとき(例えば1000ファンドの10年間の履歴を取得するなど)にはかなりの時間がかかることです。

私はこのシナリオ(全く参加しません)、Cassandraのようなシステムはどんなパフォーマンス上の利点(同じハードウェアを仮定する)を表示するのだろうか?

私はCassandraとSQL Serverの間でいくつかのベンチマーク記事を見つけようとしましたが、残念ながら何も見つかりませんでした。

答えて

1

スキーマによって異なります。パフォーマンスの向上は、パーティションキーによって異なります。あなたの例: データを日または月単位で分割することができます。あなたはタイムスタンプの間のすべてのデータを取得するこれらの3回の問い合わせで

select * from fundPricesByDay where month = 1 AND timestamp > 60000; 
select * from fundPricesByDay where month = 2; 
select * from fundPricesByDay where month = 3 AND timestamp < 99999; 

:あなたが第一及び第三の月の間のすべてのデータが必要な場合は

fundPricesByDay (month int, timestamp timestamp, productId text, Price1 float, Price2, PRIMARY KEY(month, timestamp, productId)) 

は、あなたが3つのクエリを実行することができます。この例では、月ごとに吐出しています60000と99999です。しかし、異なるvNodeですべてのクエリを実行します。これは、各ノードがSQLより少ない行を処理する必要があることを意味します。パフォーマンスが向上します。 Cassandraがどのように機能するかを少しお読みください。テーブルをどのように増強できるかを理解してください。

同じハードウェアを明示的に求めます。多分、パフォーマンスの向上はありません。単にベンチマークしてください。しかし、Cassandraは、スケーラビリティとパフォーマンスの組み合わせで確実に勝つでしょう。 SQLには限界があります(ハードウェアに依存しますが、クラスタリングは可能ですが実装が複雑で制約もあります)、Cassandraにはスケーラビリティとパフォーマンスにこのような制限はありません。 (またはそれ以上:良いスキーマを持っているときに限界に達するのは本当に難しいです。)

+0

ありがとう、私は初期の研究をしていますので、かなり時間がかかりそうです。あなたが言及した3つのクエリのために、それは同時に自動的に実行されるか、私のコードでそれを行うために複数のスレッドを作成する必要がありますか? – daxu

+0

あなたの言語にもよりますが、一般的にすべてのコードasyncを照会することができます。私はscala、php、nodejsドライバで作業し、すべてのドライバでは非同期オプションです。 –

関連する問題