YugabyteDB 2.16 一般提供のアナウンス

Tomohiro Ichimura
The Distributed SQL Blog
12 min readJan 20, 2023

本記事は、The Distributed SQL Blogsにて2022年12月15日に公開されたAnnouncing the General Availability of YugabyteDB 2.16を翻訳および一部訳注を追加しております。最新情報は英語版の記事を参照してください。

この度、最新の安定版リリースであるYugaybteDB 2.16の一般提供をアナウンスいたします。

YugabyteDB 2.16は本番環境での利用を想定されたもので、機能拡張と過去のリリースにおいてプレビューとして提供されていた機能のGA版が含まれております。この新しいリリースは、先行して発表された、最新のプレビューリリースとしていち早く革新的な機能を含んだYugabyteDB 2.17に続く形での発表となります。

YugabyteDB 2.16は、迅速に、信頼性をもって、正確なデータへのアクセスを実現することで、みなさまのビジネスに貢献するという我々の継続的な注力を特徴づけるものとなります。

より高くなるお客様の期待に応えること、さらには開発者やIT運用者の生産性向上を可能となります。

YugabyteDB 2.16において新しく拡張された機能と、本番利用に向けて一般提供となった機能をより詳しく知るために、本アナウンスの内容を読み進めて頂けますと幸いです。

YugabyteDB 2.16リリースの注目ポイント

YugabyteDB 2.16は、将来の保証されたデータベースとして幅広いビジネスクリティカルなアプリケーションに対応します。

データベースモダナイゼーションの推進において、大きな障壁となる課題を排除し、開発者の生産性をコアとして、レガシーあるいは多くのデータベースでは実現できない新しい価値を企業の組織に提供します。

YugabyteDB 2.15においてアナウンスされた機能は、一般の利用からのフィードバックを得ながら、社内のテストプロセスと追加開発が行われました。本番環境での利用を想定し、一般提供された特筆すべき機能としては、Packed Column ストレージ・フォーマットという、バルクデータロードとストレージ容量の削減に貢献する機能があります。

新しいKMSオプションによるセキュリティ連携の強化: Google Cloud KMSとAzure KMS

セキュリティの課題に取り組む際には、使い慣れた、あるいは既に社内承認を得ているツールやプロセスの利用がまず考えられます。

YugabyteDB 2.16はより広いキー管理システム(KMS)の選択肢を提供します。今回、Google Cloud KMSとAuzure Key Vaultサービスもサポート対象となりました。このオプションの幅が広がった事で、既にサポート済みのHashiCorp VaultとAWS KMSに加えて、集約されたキー管理を提供するKMSのオプションにおける主流のサービスを全てサポートすることができました。

YugabyteDB AnywhereのUIを使った直感的な操作により、YugabyteDBユニバースに対して必要なユニーバースキーを生成するためのKMS構成を設定することが可能となります。Azure KMSとGoogle Cloud KMSともに、単一もしくは複数のキーを含んだkey vault(暗号化キーとシークレット)で構成され、各キーは複数のバージョンを持つことが可能です。KMS構成をYugabyteDB Anywhereで定義する前に、まずは各KMSサービスにおいてkey vaultを作成しておく必要があります。

より便利で堅牢なCDCの機能拡張

Change Data CaptureはYugabyteDB 2.16においてもベータ機能ではありますが、YugabyteDB AnywhereとYugabyteDB Managedへの統合は継続的に行われており、YugabyteDB 2.16においてはCDCの機能を拡張するいくつかの主要な機能が実装されております。

主要な利便性における改善は、スナップショットとストリーミングの二つのモードのサポートです。YugabyteDB 2.16においては、利用者による手動のスナップショットとストリーミングモードの変更操作が不要となりました。この変更は透過的に行われます。スナップショットの操作が完了した後に、ストリーミングモードは自動的に実施されます。

その他、YugabyteDB 2.16における主要なCDC機能の拡張は以下の通りです:

  • 動的な新しいテーブルの追加: 新しいテーブルの追加がアドホックに既存のCDCストリームに対して行われます
  • スキーマ変更の実施: CDCストリームに関連づけられたテーブルに対するスキーマ変更を実施
  • 高可用性のあるスナップショット: レコードを含むテーブルに対してストリームを作成した場合、ストリームはテーブルのスナップショットを作成し、テーブルから全てのデータをストリームとして流します。テーブル全体のスナップショットが完了すると、YugabyteDBはテーブルに発生した変更についてストリーミングを開始します。スナップショットの操作において高可用性を追加しました。
  • CDCイベントにおける以前の行のイメージ: 以前のイメージとは書き込みによる影響があった行の以前の状態です。CDCイベントの一部として受け取ることが可能となりました。

Kubernetesにおけるユニバース作成をシンプルに

YugabyteDBはKubernetes向けに最適なデータベースアーキテクチャを備えています。多くの企業や組織が、コンテナ化されたアプリとサービスが利用可能なクラウドネイティブなアーキテクチャの採用にシフトしつつあります。
YugabyteDB 2.16では以下の機能拡張を提供しております。

  • k8sユニバースにおけるリードレプリカのサポート: YugabyteDB Anywhereから簡単にデプロイできるリードレプリカにより、データのリードコピーが分散され、より読み込みのレイテンシーを大幅に抑えることで、ユーザ体験を大幅に改善することが可能となります。より適切なユーザ体験を受けるためにメインクラスターに近い場所にユーザーがいる必要はありません。リードレプリカの構成をk8s環境でも実施することが可能です。
  • k8s プロバイダ向けにユニバースレベルでの編集が可能に: k8sのユーザはイメージレジストリや、ストレージクラス、podのラベリングなどの設定を再利用したり編集する必要があります。これらの設定をそれぞれ異なるk8sプロバイダ向けに作るのではなく、ユニバースレベルのhelmを提供することで、ユニバースの作成・編集をする際に、設定内容の上書きをする箇所を特定することが可能となります。
  • k8s Cert Managerのサポート: Cert Managerはk8sのコントローラーで、プライベートPKIをはじめ、 Let’s Encrypt, HashiCorp Vault, Venafiといった幅広い証明書発行者による証明書の作成とライフサイクル管理をサポートします。YugabyteDB AnywhereはCert Managerと統合されることで、k8sユニバース向けのCert managerがサポートする全ての発行者による証明書とそのライフサイクルをシームレスに管理することが可能となります。

xClusterレプリケーションの拡張による差別化

YugabyteDB xClusterレプリケーションは、高性能かつ高いレベルでのデータ保護が必要不可欠で、RPOと同期レプリケーションがあまり重要ではないアプリケーションに最適な機能です。

xClusterレプリケーションを最も簡単に設定する方法は、YugabyteDB Anywhereが提供するUIやAPIを通じて設定することで、独立したYugabyteDBクラスタ間における非同期のレプリケーションを管理することが出来ます。

単方向あるいは双方向のxClusterレプリケーションが構成可能です。YugabyteDB 2.16においては、xClusterのセットアップで以下の改善がなされております。

  • レプリケーション設定における自動的なブートストラッピング: ブートストラッピングにより、レプリケーションを開始する前に、ターゲットのユニバースをソースユニバースと同じチェックポイントにします。これにより、ソースとターゲットのユニバースにおける一貫性が確保されます。ブートストラッピングが必要かどうかは、動的に検知されるので、ブートストラッピングにおけるバックアップとリストアにおいて、ストレージ構成を再利用することが可能です。ブートストラッピング時のスレッドによる並列処理の数は指定することもできます。より大きい数を指定した場合は、バックアップやリストアの時間を大幅に短縮しますが、ユニバースへの負荷が増加します。ブートストラップが不要なテーブルのレプリケーションを先に設定して、その後ブートストラップが必要なテーブルを処理するという操作をデーターベース毎に行うことになります。
  • レプリケーションの不具合検知:レプリケーションに問題があったことを検知することができるようになりました。
  • API経由でのレプリケーションのリスタート: APIを利用してレプリケーションをリスタートすることができるようになりました。また(UIから)Universeタブに移り、ソースのユニバースを選択し、Tasksタブを選択することでその進捗が確認できるようになりました。
  • モニタリング機能の拡張: モニタリング機能の一部として、テーブル毎のレプリケーションの状態が確認できるようになりました。

バックアップとリストア処理を約5倍のスループットに高速化

際限なく増え続ける、グローバルに展開されるデータに対して、DBAの皆様は限られた時間の中で肥大化するバックアップデータを取り扱うという困難な課題に対応する必要があります。我々は継続的にバックアップとリストアのスループットの改善と、リストア時間の短縮に取り組んでおります。

YugabyteDB 2.16では、新しいアーキテクチャとして各ノードが並行してデータを直接バックアップターゲットに送信します。これにより、ボトルネックを改善して、デプロイメントのサイズに応じてスケールするバックアップを可能とします。リストアも同様です。

まず先行するノードがその他の対象ノードと並行して調整を図り、ダンプファイルからの読み取りを行い、ノードのリストアをします。この新しいスケーラブルなアーキテクチャにより、以前のバージョンに比べて各ノードのバックアップとリストアの時間が最大で5倍ほど改善します。この新しい機能をご利用頂くために構成変更の必要なく、今まで通りにデプロイをすることでご利用頂くことが可能です。

より詳細はYugabyteDB 2.17: Faster, Better Protection for Your Business-Critical Apps (日本語訳: YugabyteDB 2.17:ミッションクリティカルなアプリケーションをより早く安全に)もしくはBack up and Restore Universesをご覧ください。

プロビジョニング前後とアップグレード時のカスタムフックの実装(APIのみ)

YugabyteDBのユーザは独自のスクリプトを、特定のタスクの前後に実行する必要があります。例として、

  • クラスターノードのプロビジョニング後にソフトウェアをインストールして構成する
  • 脆弱性対応のためにソフトウェアをアップデートする
  • アップグレードの前後で、実施前もしくは実施後のチェック処理を走らせる

YugabyteDB 2.16は YugabyteDB Anywhereにおいてカスタムフックをサポートするフレームワークを提供します。 これらのフックはノードがプロビジョニングされる前後、アップグレードの前後、あるいはAPIから、トリガーされます。フックは一意で、それ自身を含むテキストファイルで、べき等操作、つまり同じ操作を何度行っても同じ結果が返る必要があります。カスタムフックの動作環境としては、現状ではBashもしくはPythonがサポートされます。

YSQL向けの新しいNode.jsスマートドライバーによる容易なロードバランシング

分散データベースにおいて最適なパフォーマンスを維持するための重要なポイントは、コネクションとノード間の負荷を管理することです。

高性能と耐障害性をもつYugabyteDBに対して、クラスタを意識したスマートドライバを介して、クラスタ内の各ノードにアプリケーショントラフィック(例えば、データベースのコネクション)を分散させることが容易に実現できます。

スマートドライバにより、特定のシングルノードへの高負荷(CPUとメモリ)が発生することを避け、ホットノードの発生を防ぎます。YugabyteDB 2.16はPostgreSQL node-postgresドライバをベースに開発された、コネクションのロードバランス機能を追加したYSQL向けの分散Node.jsドライバである、YugabyteDB node-postgresスマートドライバが含まれております。

さあ、はじめましょう、そしてより詳細を知るには

我々のフラグシップ製品である、エンタープライズ・グレードの機能を数多く実装した、最新のYugabyteDB 安定版バージョン 2.16をリリースできることを大変光栄に思います。

より詳細を知りたい方、試しに使ってみたい方は、ぜひ以下の情報もチェックしてください。

  • YugabyteDB 2.16はすぐ利用できます ダウンロードはこちら!
    インストールは数分で完了します
  • もしあなたがスタートアップ企業にお勤めの場合は、YugabyteDB Managed Quantum Leap プログラムへの参加をご検討下さい。最大 10,000 USドルの支払いをYugabyteDB Managed データベースの本番環境にてご利用頂けます。
  • Slack にご参加ください!より多くのコミュニティメンバーや、Yugabyteのエンジニアリングチームとのコミュニケーションとつながりましょう!(日本の方に向けた#yb-japan-usersチャネルがございます)

--

--