BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース Postgres 10の開発者向け機能

Postgres 10の開発者向け機能

原文(投稿日:2017/12/24)へのリンク

読者の皆様へ: あなたのリクエストに応じて、大切な情報を見逃すことなく、ノイズを減らす機能を開発しました。お気に入りのトピックを選択して、メールとウェブで通知をもらいましょう

人気のRDBMSであるPostgreSQL第10版が数週間前にリリースされた。21年目を迎えたPostgresは、信頼性、低コスト、成熟度、そしてもちろんオープンソースであることで、開発者の人気を集めている。

Postgres 10にはいくつかの新機能があるが、その中には、開発者にとって大いに刺激的なものが含まれる。10Cloudsブログ記事で、それら機能のいくつかを詳細に説明している。 Postgres 10では、マスタテーブルのトリガが不要になり、ネイティブパーティショニングがこれまでよりもシンプルになった。具体的に言うと、パーティション化されたテーブルの作成が容易になったことに加えて、開発者の視点からは、これらのテーブルに対する問合せや挿入がパーティション化されていないテーブルと同じになった。

マルチカラム統計はPostgres 10のもう一つの改善点である。異なる列のデータを関連付けることにより、クエリプランナは、where句が実際よりも適切な選択肢として評価されることによって、誤ったプランが選択され、実行がスローダウンするような特殊ケースを回避できるようになる。Postgresで実現したこの改善は、SQL界では画期的なものだ。

Postgres 10は並列性も向上している。インデックスとインデックスのみの検索、並列マージジョイン、ビットマップヒープスキャンが使用できるようになった。パラレルクエリは別のワーカを通じて実行されるため、パラレル化のメリットよりもワーカのセットアップとティアダウンのコストの方が高くなる場合もある。デフォルトでは、パラレルテーブルスキャンは8Mバイト以上のテーブルと512Kバイト以上のインデックスを持ち、8以上のワーカを使用するテーブルに対して有効である。ただしこれらのオプションは、必要に応じて変更も可能だ。

もうひとつの重要な新機能は、JSON内のフルテキスト検索と、JSONB形式のカラムである。特定言語用のフルテキストインデックスを作成すれば、JSONフィールドの値を直接検索することが可能になる。JSONカラムのフルテキストインデックスは他のカラム型と同等であるため、クエリでは、to_tsqueryおよびto_tsvector関数を含んだテキスト検索構文を使用する必要がある。

IDENTITY列と自動インクリメント列も改善された部分だ。新たな実装はやや冗長ではあるが、SQL標準に準拠しているので、他データベースとの移行が容易になる。それに加えてPostgres 10では、異なるIDからリスタートするようにシーケンスを変更する必要がなくなった。カラムを変更すればPostgresがこのカラムがシーケンスであることを認識してくれるので、データベースの日々の操作が簡素化される。

予想されたように、後方互換性のない変更がいくつかある。浮動小数点タイムスタンプのサポートが削除され、バージョン8より前のpg_dumpが廃止されている。また、レプリケーションとpg_basebackupツール関連のデフォルトもいくつか変更された。バージョン番号が3項目から2項目に変更された。いずれにせよ、開発者のスクリプトでは、ソートおよび比較可能な一貫性のあるバージョン番号を返すserver_version_numなどを使用するべきだ。

この記事を評価

採用ステージ
スタイル

この記事に星をつける

おすすめ度
スタイル

BT