ウィリアムのいたずらの、まちあるき、たべあるき

ウィリアムのいたずらが、街歩き、食べ物、音楽等の個人的見解を主に書くブログです(たま~にコンピューター関係も)

PostgreSQL9.4のJSONB型と、JSON型比較、GINインデックスなど、聞いてきた!

2014-09-12 10:19:54 | Weblog
9月11日、
PostgreSQL9.4 最新情報セミナー
~新しいJSONデータ型開発者のOleg氏を迎えて~

を聞いてきたので、メモメモ




最近勢いでてきた
 日本は、以前からPostgreSQLつよい
 エンタープライズ、基幹業務で使われる
 外国での勢いすごい!
  イギリス気象庁
 GINインデックス

2006年、国際コンファレンス
  ・前文検索
  ・GINインデックス
  ・locale対応

ロシアでの開発状況
 9.4 9月末リリース予定

自己紹介

アジェンダ
 JSONB,いんでくしんぐ、ウォッカ

問題
・BigData
・Webアプリ→サービス指向
  一貫性
  同時実行
  ACIDの負荷をかるく
・新しいDB NoSQL
  スケーラブル、えふぃしゃんと、フォールトトレラント

NOSQL
・キーバリュー
・カラムファミリー
・ドキュメント
・グラフ

問題点
・ACIDが必要でNoSQLの柔軟性
・RDBでスキーマ変更は難しい
・リリースタイミング
・JSONフォーマット=スキーマなしに対応できる!
  課題

PostgreSQLのチャレンジ
・PostgreSQLに半構造化データ
  ストレージ
  演算子
  拡張子
・PostgreSQLはスキーマレスで2003から
 →HStore
Google Insightでしらべると。。。
 2006年→発表したときから注目

HStore
・キーバリューのペア
・スキーマ変更いらない
・インデックスもサポートしている
2006年12月 HStore
2007年  GINインデックス

転地インデックス

GIN2つのツリー
  エントリー:キーワード
  ポスティング:ページ番号とか

汎用転地インデックス

GIN9.4改善点
・圧縮
・検索早くなった
  よく出てくる言語に比例
  めったに確認されないほうに

valueにレアを使うと早い
9.4にするとはやくなる
エクステンション入れても早くなる

シンプルすぎた→JSONへ
HStore VS JSON
・でもJSONはおそい
 →HStoreのドキュメントベースモデル必要
  →JSON

2年前:ねすてぃっどHStore
PGCon2013で
→ネステッドHStoreよりJSONBへ
JSONB;バイナリーJSON

JSON:AS IS
JSONB:重複なし、ソーテッドされている
入力パフォーマンス
  JSON:おそくなる
  JSONB:もっとおそくなる

検索パフォーマンス
  JSONB:1秒
  JSON:9.6秒
 JSONBのほうがはやい

pathとバリューを組み合わせると、2000倍早くなる

MongoDBと比べると・・・
ローディング 13分→JSONB 43秒
検索 ほぼ同じ
インデックス JSONBのほうが早い

指定の仕方
・ルートから特定化
・JSONBの検索言語:JSQuery
   キーへの演算子
   バリュー向け演算子
   タイプチェック
・オプティマイザーがないと遅くなる
   プランナーを使って時間短縮
・JSQuery
  オプティマイザー New
  ヒント-New -noindexなど

・エクステンションで導入可能

マイクロソフト:JSONサポートない
Oracle:ない
MySQL:インデックスとかはサポートしない
PostgreSQL:サポート

GINインデックス
・2つのキー
・インデックスの長さ制限

アクセス方法
・spgist opclass
・GIS フルテキストサーチ
CREATE INDEX USING VODKA(うぉっか)
・インデックスツリーは選べる
・エンティティにSPGistとか
・VODKAでは、Rtree→Bではない
  →マルチカラムインデックス

・いっしょにやりたいひとがいたらかんげい

VODKA(うぉっか):飲み物ではない
 →Optimized Dendriform Keys Array

GIN(じん):飲み物ではない
 →アラビアンナイトの魔法かけるジーニーから

Q&A
ヒントはPostgreSQLいれないっていう方針だけど、
どうやってYESと言わせた?
→エクステンションなんで・・・ってことで・・・


トランザクションに対応しているか?
JSONBは対応している




■PostgreSQL9.4評価検証報告

●Part1 性能アップって、どのくらいですか?
・GINインデックス性能改善
  すべての局面で早くなった
   →ポイント気にせずに作っても
   →さっきの話だと、レアなものを選ぶと

・WALの性能改善
  WAL:トランザクション
  WAL出力量が減った
  →流れるデータで変わる

・WAL書き込みの同時実行性
  CPUコア数多く、ディスクは早いとき

・JSONとJSONB型の比較
  投入はJSONBが少し遅い
   GINインデックス
   関数インデックス
  検索はインデックス使わなくても
   所要時間半分:バイナリで格納

・CouchBaseと比較
  投入
   やはり、couchbaseがはやい。が、大差ないが。。
  並列ランダム更新
   couchbaseがはやい
  読み込み
   GINインデックス使ったほうがはやい

●Part2 この新機能は何ですか?
・レプリケーションスロット
  プライマリとスタンバイをつなぐ絆
  →レプリケーションコンフリクトを起こさないため
   WAL削除の問題を起こさないため

・logicalレプリケーションスロットの可能性

・更新ビューのCHECKオプション
 集約クエリでFILTERオプション

・ALTER SYSTEMで設定変更できる
 ALTER TABLESPACE MOVEで一括移動

・REFRESH MATERIALIZED VIEWの
 CONCURRENTLYオプション
  →マテビューにゆにーくインデックス必要

・ALTER TABLEのロック競合

●レポート形式の資料
「PostgreSQL9.4に関する検証報告」
SRA OSS 日本支社→技術情報→PostgreSQL

JSONBのクラス
 今日現在、いいのはない

アプリに使うときの指針

カラムとの比較

この記事についてブログを書く
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする
« タスクフォース人材、軍師型... | トップ | 分析手法がたくさんあって、... »
最新の画像もっと見る

Weblog」カテゴリの最新記事