New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add LZ4 compression instead of LZO compression #223

Merged
merged 1 commit into from Oct 21, 2014

Conversation

Projects
None yet
2 participants
@naoa
Member

naoa commented Oct 21, 2014

#221 よりLZOはGPLだったんですね。気づきませんでした。
調べてみると他のオープンソースもライセンスの問題でLZOだけ外出ししていたりするみたいですね。

LZ4とLZ4HCの性能が気になって仕方がなかったので同じようにベンチマークを取ってみました。

結果としてはやはりselectで10件出力するぐらいではSnappyとあまり変化は見えない感じですね。zlibはあきらかにqpsが落ちていますが、LZ4はほとんどqpsが落ちていません。(14クライアントだけ少し差がでていますが。)
カラムからデータを取り出すところに高負荷がかかるような処理を加えればSnappyとも少しは変わってくるかもしれません。

LZ4HCも試しましたが読み出し速度を保ったまま、書き出し速度を犠牲するにことにより多少サイズが減らせますが
わざわざ用意する必要があるかは微妙な感じでした。

LZ4かSnappyが使えれば、LZOを選択する必要はなさそうですし私もLZOの代わりにLZ4が入るといいなぁと思います。

よければご検討をお願いします。

qps_lz4

size_lz4

load_lz4

kou added a commit that referenced this pull request Oct 21, 2014

Merge pull request #223 from naoa/add-lz4-compression
Add LZ4 compression instead of LZO compression

Patch by Naoya Murakami. Thanks!!!

@kou kou merged commit c22fb23 into groonga:master Oct 21, 2014

1 check failed

continuous-integration/travis-ci The Travis CI build failed
Details
@kou

This comment has been minimized.

Show comment
Hide comment
@kou

kou Oct 21, 2014

Member

ありがとうございます!取り込みました!

Member

kou commented Oct 21, 2014

ありがとうございます!取り込みました!

cosmo0920 added a commit to cosmo0920/groonga that referenced this pull request Oct 21, 2014

fix lz4 support reporting in --version
* In groonga#223, lzo compression support dropped and add lz4 compression support.
@naoa

This comment has been minimized.

Show comment
Hide comment
@naoa

naoa Oct 21, 2014

Member

ありがとうございます!今後、実データで圧縮カラムの有用性、ソートやドリルダウン、関数などで問題がないか等検討する予定です!

Member

naoa commented Oct 21, 2014

ありがとうございます!今後、実データで圧縮カラムの有用性、ソートやドリルダウン、関数などで問題がないか等検討する予定です!

@kou

This comment has been minimized.

Show comment
Hide comment
@kou

kou Oct 23, 2014

Member

それは助かります!
期待しています!

も、もし、実データでの検証が終わった後に余裕があったらでいいんですが、 https://github.com/groonga/groonga/blob/master/benchmark/bench-range-select.c みたいなやつのsortバージョンがあると、開発者としては助かります。。。

Member

kou commented Oct 23, 2014

それは助かります!
期待しています!

も、もし、実データでの検証が終わった後に余裕があったらでいいんですが、 https://github.com/groonga/groonga/blob/master/benchmark/bench-range-select.c みたいなやつのsortバージョンがあると、開発者としては助かります。。。

@naoa

This comment has been minimized.

Show comment
Hide comment
@naoa

naoa Oct 23, 2014

Member

おお!圧縮カラムのソートの効率化いれていただいたんですね。もちろんお手伝いしたいと思います。
ただ、実データは、これ以外にもちょっとまだ残作業が残ってまして、検証はもう少し後になりそうです。
なんとかすぐ対応できるようにしたいと思っていますが、色々と忙しくて。。
でも、まあなんとかしたいと思います。
↑のdrnbenchの検索クエリをいじるのであれば、簡単にとれるのですがそれじゃだめですかね。。
まあちょっと見てみます。

ちなみに、これは圧縮したカラムをソートする場合の改良ですか?圧縮したカラムと圧縮していないカラムを含むテーブルで、圧縮していないカラムでソートするのも影響あったりしますか?

基本全文検索以外はしないでっかい本文カラムだけを圧縮させて、ソートやドリルダウンが必要なカラムは圧縮させないつもりでした。甘かったですかね。。

Member

naoa commented Oct 23, 2014

おお!圧縮カラムのソートの効率化いれていただいたんですね。もちろんお手伝いしたいと思います。
ただ、実データは、これ以外にもちょっとまだ残作業が残ってまして、検証はもう少し後になりそうです。
なんとかすぐ対応できるようにしたいと思っていますが、色々と忙しくて。。
でも、まあなんとかしたいと思います。
↑のdrnbenchの検索クエリをいじるのであれば、簡単にとれるのですがそれじゃだめですかね。。
まあちょっと見てみます。

ちなみに、これは圧縮したカラムをソートする場合の改良ですか?圧縮したカラムと圧縮していないカラムを含むテーブルで、圧縮していないカラムでソートするのも影響あったりしますか?

基本全文検索以外はしないでっかい本文カラムだけを圧縮させて、ソートやドリルダウンが必要なカラムは圧縮させないつもりでした。甘かったですかね。。

@kou

This comment has been minimized.

Show comment
Hide comment
@kou

kou Oct 24, 2014

Member

あ、いや、効率化じゃなくて、動くようにしただけです。
既存のソート処理はデータへの生ポインターを使ってコピーを減らしていたんですが、圧縮カラムだとそれができないので、データをコピーしています。なので、圧縮なしのカラムより遅くなるはずです。

検証はすぐじゃなくてぜんぜん大丈夫です!まずは動くことが大事なので。

↑のdrnbenchの検索クエリをいじるのであれば、簡単にとれるのですがそれじゃだめですかね。。
まあちょっと見てみます。

概算ということで確認してみたい気もしますが、実データでの検証結果でも確認できるので、無理してやってもらわなくても大丈夫です!
余裕があったら。。。くらいなので、(余裕がなさそうなので)大丈夫です!

ちなみに、これは圧縮したカラムをソートする場合の改良ですか?圧縮したカラムと圧縮していないカラムを含むテーブルで、圧縮していないカラムでソートするのも影響あったりしますか?

前述の通り、動くようにしただけなので改良ではありません。

圧縮していないカラムのみでソートする場合は従来の処理を使うので影響はありません。1つでも圧縮カラムが含まれていると、今回追加したデータコピーが発生する方法を使います。(なので、遅くなると思う。)

基本全文検索以外はしないでっかい本文カラムだけを圧縮させて、ソートやドリルダウンが必要なカラムは圧縮させないつもりでした。甘かったですかね。。

いえ、それが現実的な使い方だと思います。たぶん、テキストデータ以外は圧縮効果よりも圧縮するオーバーヘッド(処理時間もそうですし、ヘッダーとかついて元のデータより大きくなることもありそう)の方が大きくてうれしくないんじゃないかと思います。

Member

kou commented Oct 24, 2014

あ、いや、効率化じゃなくて、動くようにしただけです。
既存のソート処理はデータへの生ポインターを使ってコピーを減らしていたんですが、圧縮カラムだとそれができないので、データをコピーしています。なので、圧縮なしのカラムより遅くなるはずです。

検証はすぐじゃなくてぜんぜん大丈夫です!まずは動くことが大事なので。

↑のdrnbenchの検索クエリをいじるのであれば、簡単にとれるのですがそれじゃだめですかね。。
まあちょっと見てみます。

概算ということで確認してみたい気もしますが、実データでの検証結果でも確認できるので、無理してやってもらわなくても大丈夫です!
余裕があったら。。。くらいなので、(余裕がなさそうなので)大丈夫です!

ちなみに、これは圧縮したカラムをソートする場合の改良ですか?圧縮したカラムと圧縮していないカラムを含むテーブルで、圧縮していないカラムでソートするのも影響あったりしますか?

前述の通り、動くようにしただけなので改良ではありません。

圧縮していないカラムのみでソートする場合は従来の処理を使うので影響はありません。1つでも圧縮カラムが含まれていると、今回追加したデータコピーが発生する方法を使います。(なので、遅くなると思う。)

基本全文検索以外はしないでっかい本文カラムだけを圧縮させて、ソートやドリルダウンが必要なカラムは圧縮させないつもりでした。甘かったですかね。。

いえ、それが現実的な使い方だと思います。たぶん、テキストデータ以外は圧縮効果よりも圧縮するオーバーヘッド(処理時間もそうですし、ヘッダーとかついて元のデータより大きくなることもありそう)の方が大きくてうれしくないんじゃないかと思います。

@naoa

This comment has been minimized.

Show comment
Hide comment
@naoa

naoa Oct 24, 2014

Member

あ、いや、効率化じゃなくて、動くようにしただけです。

そうなんですね!勘違いしてすいません!

前述の通り、動くようにしただけなので改良ではありません。
圧縮していないカラムのみでソートする場合は従来の処理を使うので影響はありません。1つでも圧縮カラムが含まれていると、今回追加したデータコピーが発生する方法を使います。(なので、遅くなると思う。)

了解しました。圧縮カラムでない処理に対しては影響がないということでよかったです!

も、もし、実データでの検証が終わった後に余裕があったらでいいんですが、 https://github.com/groonga/groonga/blob/master/benchmark/bench-range-select.c みたいなやつのsortバージョンがあると、開発者としては助かります。。。

ということは、これは、圧縮カラムに対するsortということですよね?
実データでの検証となると、たぶんでかすぎて圧縮じゃなくてもひどい気がするので、あえて圧縮を考えて
いないカラムを圧縮させてソートする感じになりますかねぇ。。

Member

naoa commented Oct 24, 2014

あ、いや、効率化じゃなくて、動くようにしただけです。

そうなんですね!勘違いしてすいません!

前述の通り、動くようにしただけなので改良ではありません。
圧縮していないカラムのみでソートする場合は従来の処理を使うので影響はありません。1つでも圧縮カラムが含まれていると、今回追加したデータコピーが発生する方法を使います。(なので、遅くなると思う。)

了解しました。圧縮カラムでない処理に対しては影響がないということでよかったです!

も、もし、実データでの検証が終わった後に余裕があったらでいいんですが、 https://github.com/groonga/groonga/blob/master/benchmark/bench-range-select.c みたいなやつのsortバージョンがあると、開発者としては助かります。。。

ということは、これは、圧縮カラムに対するsortということですよね?
実データでの検証となると、たぶんでかすぎて圧縮じゃなくてもひどい気がするので、あえて圧縮を考えて
いないカラムを圧縮させてソートする感じになりますかねぇ。。

@kou

This comment has been minimized.

Show comment
Hide comment
@kou

kou Oct 24, 2014

Member

も、もし、実データでの検証が終わった後に余裕があったらでいいんですが、 https://github.com/groonga/groonga/blob/master/benchmark/bench-range-select.c みたいなやつのsortバージョンがあると、開発者としては助かります。。。

ということは、これは、圧縮カラムに対するsortということですよね?

はい!そのつもりでした!
補足すると、同じデータに対して、非圧縮カラムと圧縮カラムを作ってそれについてソートしたときの実行時間がわかるベンチマーク、というつもりです。(aaaaa, aaaab, aaabb, みたいなテストデータを自動生成してそれを圧縮・非圧縮のカラムにいれてソートする、というイメージです。)

実データでの検証となると、たぶんでかすぎて圧縮じゃなくてもひどい気がするので、あえて圧縮を考えて
いないカラムを圧縮させてソートする感じになりますかねぇ。。

なるほど!
実データで検証する予定がないのであれば無理してやってもらわなくても大丈夫です!

Member

kou commented Oct 24, 2014

も、もし、実データでの検証が終わった後に余裕があったらでいいんですが、 https://github.com/groonga/groonga/blob/master/benchmark/bench-range-select.c みたいなやつのsortバージョンがあると、開発者としては助かります。。。

ということは、これは、圧縮カラムに対するsortということですよね?

はい!そのつもりでした!
補足すると、同じデータに対して、非圧縮カラムと圧縮カラムを作ってそれについてソートしたときの実行時間がわかるベンチマーク、というつもりです。(aaaaa, aaaab, aaabb, みたいなテストデータを自動生成してそれを圧縮・非圧縮のカラムにいれてソートする、というイメージです。)

実データでの検証となると、たぶんでかすぎて圧縮じゃなくてもひどい気がするので、あえて圧縮を考えて
いないカラムを圧縮させてソートする感じになりますかねぇ。。

なるほど!
実データで検証する予定がないのであれば無理してやってもらわなくても大丈夫です!

@naoa naoa deleted the naoa:add-lz4-compression branch Aug 15, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment