アドベントカレンダー2日目という事で運用する時のTipsを書こうと思いましたが、他に運用している人を知らないので予定を変更します。
PipelineDBは頻繁にバージョンアップされているので、その内容を遡ってみたいと思います。
なお、私は今PipelineDBのEnterpise版(write scale)の検証をしていますが、NDAがあるのでそれらの情報を書くのはNGっぽいです。
というわけで、当たり障りの無いアップデート情報と、その解説(気になったものだけをピックアップ)をします。
性能改善のアップデートが多いので最新版を使う事を推奨します。
0.8.0
- 起動ポートがpostgresqlと同じポートになりました
- Smarter Step-sizes for Sliding Window Queries
- その他大量の改善
Sliding Windowの改善とは、
streamに高頻度でデータを投入すると、実体のデータを持つテーブル(mrel0)に細かい単位で記録されていってしまいます。continuous viewを参照する時はこの実体テーブルを集計して結果を返すため、大量のレコードをselect, groupingする事になります。
このバージョンから、WHERE句の arrival_timestamp
にhour
やminute
等の関数をサポートするようになりました。hour
やminute
はdate_trunc
のaliasなので、date_trunc
で出来る事は全てサポートされています。
これを指定する事で、実体のデータもこの単位で作るようになるため、大幅な性能改善をする事ができます。
0.8.1
- Kafkaをサポート
- TopKの処理を Filtered Space Saving のアルゴリズムでサポート
- Sliding Windowの改善
- 各種バグFixと性能改善
-
stream_commit_interval
のオプションを追加
このバージョンから、amazon-linuxのrpmでインストールした時に各スクリプトの権限設定がぶっ壊れているのが直りました。0.8.0では、pipeline-init等に適切なパーミッションが設定されていませんでした。
また、このバージョンから\d
でcontinuous viewが表示されなくなりました。
(最新の0.8.4より後のnightly buildでは直っています)
0.8.3
- アドホックな継続クエリのサポート
- TopKは今まで固定長の型しかサポートしなかったが、可変長の型をサポートするように
- Keyed Min/Max のサポート
-
step_factor
を使ってSliding Windowを調整できるように - 1個のstreamから複数のcvを作る時の性能改善
padhoc
というコマンドラインツールが追加され、アドホックにCVを試せるようになりました。
padhoc -c 'select x::text, count(*) from stream group by x'
このような感じで使います。
コンフィグファイルでadhoc queryを有効にしてサーバを起動しないと使う事はできません。
TopKは今まで固定長の型(intなど)しかサポートしませんでしたが、VARCHAR等もサポートするようになりました。
Keyed Min/Maxとは、その名の通りkeyed_max
keyed_min
をサポートするするようになりました。keyed_max(arg1, arg2)
は、arg1が最大のarg2を保持するためのものです。
ちょっと気になるのは、arg1
が同じ値の場合に最後のarg2ではなく最初のarg2が返ってくる点です。
0.8.4
- マルチコア環境下での性能改善
- 書き込みI/Oの改善
- 厳密な異なり数の算出が可能に
書き込みI/Oについて、
streamにデータが連続で来ますが、例えばbloomFilterやHLLの場合、同じ値が連続して来た場合に律儀に更新しに行く必要はありません。このバージョンから、同じ値が連続で来ている場合は、後続の値の更新はしないようになりました。
厳密な異なり数について、
今までは、count(distinct column)
とすると確率的データ構造のHyperLogLogを使って算出します。厳密な異なり数は出せなかったのですが、このバージョンから exact_count_distinct(column)
を使う事ができるようになりました。
まとめ
というわけで、最新版を使いましょう。
アップグレードする時にデータを移行したい場合は、以下のような方法で出来るようです。
(データを消しても良いならクリーンインストールをオススメします)