DuckDB - 組み込みOLAP DBオープンソース
(duckdb.org)"SQLite for Analytics"
-
複雑な分析クエリに最適化された組み込みRDBMS
-
C++11で書かれた依存性のないシングルバイナリとして、ホストプロセス内で実行
-
Python/R/Java/C/C++/Node.js APIを提供
-
SQLiteのように1つのファイルにDBを保存
-
適したユースケース
→ CSV/Parquet などの表形式データの処理および保存
→ 複数の大きなテーブルを Join & Aggregate するインタラクティブなデータ分析
→ 複数の大規模テーブルに同時に大きな変更を行う場合(複数行の追加、またはカラムの追加/削除/変更など)
6件のコメント
組み込みDBでは、OLTPはSQLite、OLAPはDuckDBと住み分けることを目指しているようです。
20年前に登場し、今では組み込み分野を制してしまったSQLiteとは異なり、0.1が出てからまだ1年半ほどしか経っていない新参のオープンソースです。^^
数日前にnode.js APIが新たに追加され、さまざまな形で使いやすくなったようです。
見るたびに思うのですが、OLTPとOLAPの違いがいまいち明確に分かりません。。゚(゚´Д`゚)゚。 何というか、すっきり説明してくれる内容もあまりない気がします。
そうですね。普通によく見かける説明だと、トランザクションと分析(文字どおり)ということになるので、有名なRDBはデータの追加や削除も速いし、分析処理も速いじゃないですか。たとえばオラクルやPostgreSQLがどちらか一方に特化しているとまでは別に言えないですし……。それに、ビッグデータ時代の分析は、どうせそういう連中の領域からはすでに遥か彼方に行ってしまっている感じもするので、今でもOLTPとOLAPを区別することにどんな意味があるのか、よく分からない、という話でした ^^;
OLTP は、追加したり取り出したり削除したりといった処理に特化しています。
OLAP は、入っているデータをあれこれ操作して分析するもの
くらいに考えるとよいのではないでしょうか?
うーん、私の説明の仕方だと
OLTP は横:1行単位で何かが追加されること(新しい注文が入る)
OLAP は縦:特定のカラム全体を読んで計算したり変更したりすること(1日の売上平均を計算する)
OLTPは横
OLAPは縦ですね