web-dev-qa-db-ja.com

Cassandra CQLの集計クエリ

現在、分析アプリケーションのデータストアとしてCassandraを評価しています。生データをCassandraにダンプし、主に集計クエリを実行する計画でした。 CQLを見ると、次のような従来のSQL演算子をサポートしていないようです。

  • 平均、合計、カウントなどの一般的な集計関数-個別など。
  • Groupby-オペレーターを持つ

ドキュメントで上記を達成するのに役立つものは何も見つかりませんでした。また、拡張機能などの機能を提供するためのフックがあるかどうかも確認しました。 Mongodbのデータベースmap-reduce、またはリレーショナルDBのユーザー定義関数のように言います。

人々は有料のDatastaxEnterprise Editionについて話しますが、これもプレーンなCassandraではなく、Hadoop-Hive-Pig-Hadoopなどの個別のコンポーネントを介して実現されます。または、データをDBにダンプする前に必要な事前集計を行うことについての提案があります。 Cassandra書き込みは高速です。

少なくとも私たちが必要とする基本的なものについては、オーバーヘッドが多すぎるように見えました。ここで基本的な何かが欠けていますか?

これについての助けをいただければ幸いです。

12
samantp

集約は、2.2.0-rc1リリースで利用可能な CASSANDRA-4914 の一部としてcassandraで利用可能です。

2
mikea

ある特定のアプリケーションでは、書き込み速度にCassandraを使用し、アプリにデータをより圧縮された、わずかに集約された要約フォームに圧縮させます。次に、1時間ごとのジョブを実行して、 Postgresテーブルへの要約フォーム。このアプローチはエレガンスのスコアが高くありませんが、シンプルであり、プライマリデータ入力パスを複雑にしたり、CQLに特注の集計を構築したりすることなく、アドホック分析クエリを実行できることを意味します。アプリ。

2
0x6e6562

Apache Luceneプラグイン( https://github.com/Stratio/cassandra-lucene-index )を使用してCUSTOMINDEXESをCassandraに作成するか、別のプラグインを使用することができますElasticsearch( https://www.elastic.co/products/elasticsearch )のような目的に合ったソフトウェア(検索エンジンデータストア)もスケーラブルでオープンソースです。

Elasticsearchは、集計データに基づくデータの視覚化のためにKibanaに沿って使用することもできます。

1
brunocrt

これをチェックしてください

ネイティブアグリゲート

カウント

Count関数を使用して、クエリによって返された行をカウントできます。例:

SELECT COUNT (*) FROM plays;
SELECT COUNT (1) FROM plays;

また、特定の列のnull以外の値をカウントするためにも使用できます。

SELECT COUNT (scores) FROM plays;

最大と最小

Max関数とmin関数を使用して、特定の列のクエリによって返される最大値と最小値を計算できます。例えば:

SELECT MIN (players), MAX (players) FROM plays WHERE game = 'quake';

合計関数を使用して、特定の列のクエリによって返されるすべての値を合計できます。例えば:

SELECT SUM (players) FROM plays;

平均

Avg関数を使用して、特定の列のクエリによって返されるすべての値の平均を計算できます。例えば:

SELECT AVG (players) FROM plays;

独自のアグリゲートを作成することもできます。アグリゲートの詳細については、こちらをご覧ください: http://cassandra.Apache.org/doc/latest/cql/functions.html?highlight=aggregate

1
CommonSenseCode

Cassandraは、拡張性とパフォーマンスを維持しながら、配布と可用性の問題を解決したストレージエンジンと見なしています。もちろん、トレードオフは柔軟性と機能性です。これは常にデータベースの世界では、機能とパフォーマンスの間でトレードオフがあります。

そうは言っても、Cassandraは、Sparkなどのサードパーティソフトウェアと非常にうまく連携します。Sparkは、ユースケースに非常に役立つ可能性があります。オープンソースがあります。コネクタ https://github.com/datastax/spark-cassandra-connector これはSparkインテリジェントに分析を見つけて実行するのに役立ちますCassandra =データ。

SparkSQLを使用すると、SELECT合計とほとんどのHive準拠のクエリを実行できます。

1
MarcintheCloud

データの性質によっては、時系列などのデータに対して集計を実行する必要がある場合は、Kdb +を検討する必要があります。

時系列テレメトリデータの保存についてもCassandraを評価していました。これは完璧だと思いました。しかし、集計関数がないことがわかりました。おそらくこれはPigとHiveで解決できます。しかし、データの取り込み、保存、分析を1つの言語に組み合わせたソリューションが存在する場合、なぜそれを検討しませんか?

1
David Hall

私たちの場合と同じように、それは単なる提案です。 cassandraデータベースで集計を行うには、クラスター内の大きなデータに対して非常に優れたパフォーマンスを発揮するmap-reduceコードを内部で生成するPIGやHiveなどの言語を使用する必要があります。そのためにはHadoopが必要です。処理後、処理されたデータをcassandra datbaseまたはsqoopにmysqlデータベースに書き込むことができます。

1
RCS