Cloud SQL for PostgreSQL の新たな拡張機能: 接続性および新しいデータ型のサポート
Google Cloud Japan Team
※この投稿は米国時間 2020 年 12 月 18 日に、Google Cloud blog に投稿されたものの抄訳です。
オープンソースのデータベース PostgreSQL は、簡単な手順で拡張機能を追加できる仕組みになっているのが特長です。データベースに拡張機能を読み込むと、もともと組み込まれていた機能のように使用できます。これにより、PostgreSQL インスタンスに機能が追加されるため、既存の PostgreSQL 機能に加えてデータベースの拡張機能を使用できます。
今年 Cloud SQL for PostgreSQL では 10 個以上の拡張機能がサポートされるようになったため、お客様は、PostgreSQL コミュニティで作成された拡張機能に加え、Cloud SQL で管理されるデータベースのメリットを活用できるようになりました。
今年導入された拡張機能には、インスタンス間で外部テーブルにアクセスできるようにする機能(postgres_fdw)、テーブルおよびインデックスから肥大化した部分を削除し、必要に応じてクラスタ化されたインデックスの物理的順序を復元する機能(pg_repack)、PostgreSQL からメモリ内のページを管理する機能(pgfincore)、データベース ページの内容を詳細に調べる機能(pageinspect)、空き領域マップ、可視性マップ、ページレベルの可視性情報を確認する機能(pg_freespacemap と pg_visibility)、PostgreSQL データベース間でのリモート プロシージャ コールを可能にするプロシージャル言語ハンドラ(PL/proxy)があります。また、postgresql-hll データ型もサポートされるようなりました。
このたび、データベース内の接続をサポートする拡張機能が新たに追加されました。また、使用できるデータ型も増え、IP アドレスおよび電話番号の格納や、それらに対するクエリの実行が簡単になりました。
新しい拡張機能: dblink
dblink は、今年すでに導入済みのデータベース間の接続機能(PL/Proxy および postgres_fdw)を補完するものです。データベースのアーキテクチャによっては、アプリケーション データベースの外にあるデータに対してクエリを実行したり、ローカル トランザクション内の独立した(自律した)トランザクションで同じデータベースに対してクエリを実行したりするなど、さまざまな状況が発生する可能性があります。dblink を使えば、リモート データベースに対してクエリを実行でき、ご利用の環境内での柔軟性および接続性が高まります。
dblink は、結果を返す SQL ステートメントごとに、SELECT ステートメントに含める形で使用できます。同じクエリを何度も実行したり、今後再び使用したりできるように、ビューを作成しておくことをおすすめします。そうすれば、接続文字列や名前情報が変更になった場合に、コードを何か所も修正しなくて済みます。
dblink を使用しても、複雑さおよびパフォーマンス負荷を抑えるために、基本的には、できる限り同じデータベース内にクエリ対象データを保持してスキーマを活用することを引き続きおすすめします。また、透明性や、標準化、パフォーマンスを重視する場合は、postgres_fdw の使用をご検討ください。
新しいデータ型: Ip4r と prefix
インターネット プロトコルの IPv4 および IPv6 は両方とも広く普及しています。IPv4 は Internet Protocol Version 4 の略です。IPv6 は、より広範な IP アドレス範囲に対応する次世代のインターネット プロトコルであり、1998 年に IPv4 を置き換える目的で導入されました。
Ip4r では、IPv4 および IPv6 のアドレスまたはアドレス範囲の格納に 6 種類のデータ型を使用できます。これらのデータ型は、組み込みのデータ型である inet および cidr に比べて機能とパフォーマンスが優れています。これらのデータ型では、PostgreSQL の主キー、一意キー、b ツリー インデックス、制約などの機能を使用できます。
prefix のデータ型は、電話番号のプレフィックスに対応しています。コールセンターや電話システムを所有しており、通話のルーティングや、電話番号とオペレーターの照合に関心をお持ちのお客様は、プレフィックス データを簡単に格納し、業務を効率化することができます。prefix では、prefix_range データ型を使ってテーブルやインデックスを作成する、CAST 関数を指定する、テーブルに対してクエリを実行するといったことが可能です(使用可能な演算子: <=, <, =, <>, >=, >, @>, <@, &&, |, &)。
新しい拡張機能を使ってみる
Cloud SQL for PostgreSQL ですでにサポートされている 8 つの拡張機能に加えて、dblink、Ip4r、prefix も使用可能になりました。PostgreSQL 拡張機能の詳細および利用できる機能についてもご確認ください。
- Product Manager, Google Cloud Platform, Maayan Rossmann