AWSは最近、Amazon Aurora Limitless Databaseのプレビューを発表した。この新機能は、毎秒数百万の書き込みトランザクション処理し、一つのAuroraデータベースでペタバイトのデータを管理し、自動水平スケーリングをサポートする。
Amazon Aurora Limitless Databaseは、トランザクション・ルーターまたはシャードのいずれかの複数のデータベース・ノードで構成される2層アーキテクチャを持つ。AWSのプリンシパル・デベロッパー・アドボケイトであるChanny Yun氏は次のように語っている。
シャードはAurora PostgreSQL DBインスタンスで、それぞれがデータベースのデータのサブセットを格納し、より高い書き込み処理能力を達成するための並列処理を可能にしている。トランザクションルーターはデータベースの分散性を管理し、データベースクライアントに単一のデータベースイメージを提示している。
Amazon Aurora Limitless Databaseのアーキテクチャ(出典:AWS News Blog)
Limitless Databaseアーキテクチャのトランザクションルーターは、データロケーションのメタデータを保存し、入力されたSQLコマンドを処理した後に、コマンドをシャードに転送し、クライアントの結果を統一するためにシャードデータを集約し、そして分散データベース全体の一貫性を確保するために分散トランザクションを 監視する。 Limitless Databaseアーキテクチャ内のすべてのノードは、 Limitless Databaseリソースにアクセスするための明確なエンドポイントを持つDBシャードグループの一部である。
開発者は、PostgreSQLで 動作するpsql やその他の接続ユーティリティを使用して、DBシャードグループのエンドポイント( Limitless エンドポイントとも呼ばれる)に接続できる。 Limitless Database内には、データを格納できる2種類のテーブルがある。
- シャードテーブル - シャードキーと呼ばれる指定されたカラムに従ってデータを分割することで、複数のシャードにデータを分散する。
- リファレンステーブル - すべてのシャードで完全なデータを利用でき、結合クエリのパフォーマンスを最適化する。
いったん開発者がシャードテーブルやリファレンステーブルを作成すれば、大量のデータをAurora Limitless Databaseにロードし、標準的なPostgreSQLクエリを使用してテーブル内のデータを操作できる。
AWSの回答者は、Hacker NewsのスレッドでAurora Limitless Databaseの実装の詳細について説明している。
Aurora Limitless Databaseは、データベースに最適化された仮想化(Caspian)、スケールアウトログファーストデータベースストレージ(Grover)、EC2で利用可能な高品質のハードウェアクロックを利用した複数シャードのトランザクションへのカスタムアプローチへの我々の投資に基づいている。内部については、今後数カ月かけて詳しく説明する予定だ。
同時に、Redditのスレッドでは、Aurora Limitless Databaseの潜在的なユーザーについてコメントしている人がいた。
このような大きな規模に対応できるだけの(経験豊富な)人的リソースがない中小規模の企業に適した製品のように思える。しかしまた、そのような規模の企業は、このようなマネージド・サービスにそれほどお金を払わないだろう。
価格設定は確認していないが、「サーバーレス」、あるいは今や「無制限」と名前につくものは、規模が大きくても決して安くはないだろうと想像できる。
最後に、Aurora Limitless Databaseはサインアップフォームから限定プレビューが可能だ。