Amazon Web Services ブログ

Category: MySQL compatible

統合ワークロードに向けた MySQL と互換性がある Amazon Aurora を計画・最適化する方法

MySQL と互換性がある Amazon Aurora はデータベースワークロード統合を検討中のお客様から好評をいただいています。Aurora MySQL は、ハイエンドな商用データベースの速さや信頼性と、オープンソースデータベースのシンプルさと高い費用対効果とを組み合わせたリレーショナルデータベースエンジンです。また Aurora MySQL は、標準の MySQL Community Edition に比べ最大 5 倍のスループットを実現します。 今回のブログ記事では、大規模な統合データベースワークロードのために行う Amazon Aurora の最適化に役立つガイダンスをいくつかお伝えします。また、「統合の費用はどれくらいかかりますか?」や「データセットはどのくらいの大きさにできますか?」など、よくある質問にお答えします。 上記の質問はシンプルですが、必ずしも回答がシンプルになるわけではありません。回答は、お使いのデータセットやワークロードのパターンによって大きく異なります。 データベース統合の定義 統合のユースケースに関しては、以下の要素に的を絞り、それからコンテキストに応じた Aurora MySQL の操作方法について詳細を説明します。 テーブルのサイズ。統合により、一般的にテーブルは大きくなります。アドテック、IoT、消費者向けアプリケーション分野の場合、通常は大きな同種アプリケーションのデータベースをそれぞれにデータのサブセットが含まれる大量のシャードに分割します。Aurora ではシャーディングを完全になくすことはできないかもしれませんが、より少数のシャードに統合して操作上のオーバーヘッドを減らすことができます。 テーブルの数。テーブル数の増加も、統合の結果見られることです。この結果は、各テナントが通常、独自のデータベースまたはテーブルセットを有する場合にテナントの分離が必要な SaaS アプリケーションで一般的なものです。このタイプの複数のテナントは数が少なくより大きな Aurora クラスターにまとめられ、テナントあたりの操作コストを削減します。 データベースの使用率。さらに多数の同時接続を行うなど、統合データベースワークロードの使用率が多くのメトリクスで増加します。 実際には、同じプロジェクト内の複数の要素で使用率が増加することになります。以下のガイドラインは、各要素でワークロードを最適化するのに役立つはずです。 「大きい」とは具体的にどのくらいのサイズですか? Amazon Aurora には最大容量に制限があります。私たちの最も重要な成果は、Aurora クラスターで 64 TB という最大の保存容量です。最大容量により、Aurora クラスターに物理的に保存できるデータ量の上限が決められます。また、個々のテーブルの大きさについて上限が決められます。 加えて、MySQL と互換性があるデータベースエンジンとして、Aurora MySQL は MySQL と InnoDB ストレージエンジンから多くの特徴を受け継いでいます。これらの特徴には効果的な統合に影響を与えるものがあります。 大きなテーブルサイズを最適化する方法 Amazon Aurora […]

Read More

暗号化技術を使用して個人データを保護しながら、Amazon Aurora の MySQL 互換版に移行する

AWS ではセキュリティが最優先です。また、お客様にとってもこれは同じことです。私たちは個人データを保護するために膨大な量のリソースを使用し、当社のお客様にとってデータの保護が容易になるよう継続的に機能強化を図っています。Amazon Aurora の MySQL 互換版を含め、AWS のサービスはすべて、EU の一般データ保護規則 (GDPR) に準拠しています。  詳細については、Amazon のウェブサイトで一般データ保護規則 (GDPR) センターを参照してください。 Amazon の主要データストレージと処理サービスの 1 つである、Amazon Aurora の MySQL 互換版では、幅広い暗号化とデータアクセスコントロールオプションを提供しています。これらはこうしたサービス上で保存した個人データを保護しやすいように設計されています。データ保護の責任は現在進行中の運用に限られたものではなく、データの移動や移行といったアクティビティにも伴います。 今日のお客様は個人データの保護方法に大きな関心を寄せており、彼らが保存および処理するデータにも目を配っています。この結果、暗号化されたデータベースへデータを移行したり、データの転送時に暗号化形式を使用したりといった決定を下すことが増えています。このブログ記事では、Amazon Aurora の MySQL 互換版と安全な移行を実行する様々なパターンと、それを可能にするサービス機能についてご紹介します。 Amazon Aurora の MySQL 互換版の暗号化データストレージと処理機能 Amazon Aurora の MySQL 互換版では、次に示すように、お客様が暗号化技術を使用して個人データを保存および処理できるようにするいくつかの機能を提供しています。 Amazon Aurora では AWS Key Management Service (AWS KMS) を通じて管理するキーを使用してデータベースを暗号化することが可能です。Amazon Aurora データベースで暗号化が有効になると、保存されているデータ、自動化されたバックアップ、スナップショットが暗号化されます。 Amazon Aurora の MySQL 互換版を使用することで、データベースインスタンスに暗号化された接続を確立でき、またクライアントに暗号化された接続を使用するよう強制することもできます。 復元時には自分の望む […]

Read More

MySQLデータベースをAuroraへ移行する方法をマスターする

By Nathaniel Kangpan, SVP Technology & Data Services, Kepler Group 私は過去12ヶ月の間に(a)クラウドベースのインフラストラクチャを使うことに踏み出していない、もしくはその様なチームがいない(b)2018年のロードマップにクラウドを使うことが乗っていないクライアントに会っていません。ハードウェアからクラウドへ移行した場合のTotal Cost of Ownership(TCO)の節約は無視できません。 しかし、所有しているハードウェアからAWSのようなクラウドベースのインフラストラクチャに移行する際には、本当に何を期待するべきですか? Amazon EC2などの仮想サーバー上にソリューションを複製するだけでいいですか、Amazon RDSのようなマネージドサービスを増やすべきででしょうか? Kepler Groupでは、インフラストラクチャの95%以上が2014年後半からAWS上で稼働しています。過去数年にわたり、多くのお客様に機転となる時に何を期待しているかをアドバイスしました。私達はマーケティングデータベース管理サービスを提供しています。クライアントとの最も一般的な議論の1つは、リレーショナルデータベースをAWSに移行する際に抱えるメリットと課題を理解する助けとなることです。   Global Fortune 100の例 私たちは通常、Global Fortune 100クライアントのために完成した代表的なプロジェクトを中心に、データベースクラウドの移行に関する会話行っています。この特定のクライアントにとって、私たちは最初に、データセンターのハードウェア上にMySQLデータベースを構築しました。その後、MySQLを実行しているEC2インスタンスに移行し、最終的にAmazon Aurora MySQLに移行をしました。クライアントのユースケースと基本的なデータスキーマは、この間にあまり変化しませんでした。そのため、私たちはソリューションの管理がますます効率化されるようになるにつれ、同じMySQLデータベースを複数のフレームワークで実行することの長所と短所について多くのことを学びました。 今回の対象のデータベースは、マーケティングおよびセールスカスタマーリレーションシップマネジメント(CRM)データベースでした。一連の電子メールおよびセールスチームベースのマーケティングキャンペーンで、レポートおよび分析ユースケースのために複数のサードパーティソースにデータを継続的に集約しました。私たちのチームは、データベースの管理に加え、マネージドサービスとしてレポートと分析の提供を担当する主なユーザーです。 このプロジェクトは、スコープと予算の面で一般的に管理していた物の小規模なものでした。クライアントのニーズを満たすことに加えて、次の点に細心の注意を払う必要がありました: データベースメンテナンスの負荷を低く抑える インフラストラクチャコストの制限 信頼性の高いバックアップおよびリカバリプロセスを確保する 前述のように、データベース用に3つの異なるインフラストラクチャソリューションを使い、各バージョンのメリットと課題についてかなりのことを学びました: v1.0:オンプレミスハードウェア上のLinuxでMySQLを実行する v2.0:Amazon EC2上のLinuxでMySQLを実行する v3.0:MySQLと互換性を持つAmazon Aurora 次の移行の概要では、各バージョンへの移行の決定と、その過程で得た利点と課題について説明します。   Version 1.0: オンプレミスハードウェア上のLinuxでMySQLを実行する 2013年後半にこのクライアントとの関係を開始したとき、クラウドベースのサービスを検討し始めましたが、私たちのインフラストラクチャは、データセンターを基盤とするハードウェアソリューションでした。クライアントサービスや厳しい締め切りで働いている多くの人が理解できるように、理想的な長期的なソリューションを最初から構築するのではなく、迅速に稼働させることを優先する必要がありました。私たちは、オンプレミスハードウェア上のLinuxとMySQLの組み合わせから開始することにしました。これは、このプロジェクトで作業しているエンジニアが最も慣れている構成だったからです。 利点 この初期のアプローチの唯一のメリットは、エンジニアがハードウェア+ Linux + MySQLの構成でよく作業していたことです。必要な開発フレームワーク、データ転送メカニズムなどはすべてかなり理解されており、大きな技術的驚きは期待できませんでした。これにより、限られたAWS経験を持つクラウドベースのソリューションに飛び込むのとは対象的に、納期と予算に対するリスクを最小限に抑えながら顧客の設定した期限を迎えることができるという自信が得られました。 チャレンジ しかし、ハードウェア環境で解決策を維持することには、かなりの数の問題がありました。AWSへの移行を後で行うまでは、これらの非効率性を十分に理解していませんでした。具体的には、クラウドと比較してハードウェアソリューションでは次のような課題に直面しました: かなり高いサーバーとデータベースのメンテナンスとアップグレードの運用負荷 時間の経過とともに増加するデータ量に対応する、シームレスではない垂直スケーリングプロセス […]

Read More

Amazon Aurora MySQLやAmazon RDS for MySQLへIAM authenticationを利用してSQL Workbench/Jから接続する

この記事では、Aurora MySQLクラスタに接続するために既に使用しているツールでIAM認証を使用する方法を説明します。この手順は、Amazon RDS for MySQLインスタンスでも同様にご利用頂けます。提供されたスクリプトを使用して、リソースをプロビジョニングしたり、IAM認証用に環境を構成したりすることができます。

スクリプトを使用してIAM認証情報を使用して、mysqlコマンドラインツールまたはSQL Workbench / Jを使用してクラスタに接続します。GitHubリポジトリでは、この投稿で使用されているコードサンプルをご覧いただけます。

Read More

AWS CloudFormationを使用してOracleからAmazon Aurora MySQLに移行する方法(パート1)

特に、OracleからAmazon Aurora PostgreSQL、OracleからAmazon Aurora MySQL、またはMicrosoft SQL サーバーからMySQLへの異種データベースの移行では、データベースの移行はかなり難しいです。ソース・データベースのスキーマ構造、データ・タイプ、およびデータベースのコードは、ターゲット・データベースのスキーマ構造、データ・タイプ、およびデータベース・コードとかなり異なる場合があり、データの移行が開始される前にスキーマおよびコードの変換ステップが必要です。これにより、異種データベースの移行が二段階のプロセスになります。 この2部構成の移行ブログシリーズの第1部では、AWS CloudFormationスタックを構築し、OracleデータベースからAmazon Aurora MySQLデータベースにデータを移行するプロセスを示すのに役立つリソースをデプロイします。パート2では、この記事で作成したリソースを基に、AWS Glueを使用してデータを抽出、変換、ロード(ETL)する方法を示します。 AWSには、異種の2段階移行のための AWS Schema Conversion Tool(AWS SCT)やAWSデータ移行サービス(AWS DMS)などの直感的なツールがあります。これらのツールは、移行オーバーヘッドと複雑さを軽減します。移行プロセスを最適化するためのこれらのツールおよび設定の詳細については、 「OracleデータベースをAmazon Auroraに移行する方法」をご参照ください。 図1:異種データベースの移行手順 この記事では、セルフサービスのデモンストレーションによる簡単な移行を紹介します。AWS SCTおよびAWS DMSコアの概念を理解し、なれるのに役立ちます。現在、Amazon Aurora、Amazon Redshift、または Amazon DynamoDB への移行の場合には、1 インスタンスごとに AWS DMS を 6 ヵ月無料で利用することができます。 移行プロセスを実証するため、AWS CloudFormationスクリプトを使用して、Oracleデータベース(HRDATA)が事前にインストールされたAmazon EC2インスタンス、Aurora MySQLクラスタ、およびAWS DMSレプリケーションインスタンスをデプロイします。移行プロセスに役立てるため、Amazon Virtual Private Cloud (Amazon VPC)、およびそのネットワーキング構成、Amazon S3バケット、そして AWS Identity and Access Management (IAM) のロールとポリシーなどのその他の必要なコンポーネントも使用します。AWS CloudFormationスタックのデプロイには、10〜12分かかります。この例の全体的なウォークスルーは1時間以内で完了できます。 […]

Read More

MySQL5.7互換のAmazon AuroraでJSONを利用する

MySQL 5.7でのJSONサポートについて重要な点は? MySQL 5.6では、数値、日付と時刻、文字列(文字とバイト)の型、および空間データ型をサポートしています。これらの型は広くサポートされていますが、これらの基本データ型は、アプリケーションを進化を作成する際の柔軟性を制限します。 MySQL 5.6を使用している場合は、アプリケーションに機能を追加する計画する際に2つの選択肢があります。最初のオプションは、アプリケーションで現在必要なすべてのフィールドを含む完全なスキーマを設定することです。その後アプリケーションで新しいフィールドが必要な場合は、スキーマを更新してその列を追加する必要があります。このアプローチにはいくつかの利点があります。新しいフィールドにインデックスを作成することができます。また、Amazon Auroraのfast DDLのような機能により、列を追加する際の影響を最小限に抑えることができます。ただし、データベース・スキーマの変更を実行し、その変更に対応するためにSQL文を更新する必要があります。 2番目のオプションは、文字列を使用して柔軟なフィールドセットをエンコードし、アプリケーションレイヤーで文字列を解析することです。柔軟性はありますが、この方法ではデータを解析するのに無駄なコストがかかります。 この様な場面ではJSONが適しており、必要とされる柔軟性を提供することで優れた方法を提供します。 JSONは、データを解析するためのコードを書く必要がないという利点も提供します。ORMまたは言語ランタイムで処理が可能です。JSONサポートはMySQL 5.7.8で導入されました。 これらの利点に加えて、JSONをネイティブ・タイプとしてMySQLで使用することで、データベースはJSONカラムに保存されているJSONドキュメントを自動的に検証できます。無効なドキュメントではエラーが発生します。ネイティブタイプのJSONでは、データベース中でJSON形式を最適化することもできます。JSONカラムに格納されたJSONドキュメントは、ドキュメント要素への高速な読み取りアクセスを可能にする内部形式に変換されます。サーバーが後でこのバイナリ形式で格納されたJSON値を読み取る必要がある場合、その値をテキスト表現から解析する必要はありません。バイナリ形式は、サーバーがサブオブジェクトまたはネストされた値をキーまたは配列のインデックスで直接参照できるように構成されています。これは、ドキュメント内の前後の値をすべて読み取らずに行います。 Amazon AuroraはMySQL 5.7との互換性をサポートしています。つまり、MySQL 5.7互換のAuroraを利用してJSONデータ型を使用したアプリケーションを開発できるようになりました。 この記事の残りの部分では、JSONデータ型とMySQL互換のAuroraを使用する電化製品のECサイトのサンプルアプリケーションをご紹介します。 スキーマの作成 電化製品は、ラップトップ、携帯電話、プリンター、テレビ、DVDなど多様なもを取り扱います。また、製品の属性もどうように多くなります。このため、さまざまな機能や属性を検索できるように、製品属性を正規化された形式で保存するのは難しいくなります。たとえば、製品比較のためにこれを行えるようにします。 まず、店舗用のデータベースを作成します。 CREATE DATABASE online_store; USE online_store 簡単にするため、データベースにはブランド、カテゴリ、製品という3つのテーブルのみ作成します。brandsとcategoriesテーブルにはJSONフィールドがありませんので、先に進むために説明は省かせて頂きます。 CREATE TABLE brands ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(255) NOT NULL ); CREATE TABLE categories ( id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY […]

Read More

DataSunrise Database Security を使用した Amazon Aurora データベースアクティビティのモニタリング

DataSunrise 社エンジニアリングリーダー、Radik Chumaren DataSunrise は、多種多様なデータベースのためのアクティビティモニタリング、データマスキング (動的および静的マスキング)、データベースファイアウォール、および機密データ検出を含む、幅広いセキュリティソリューションを提供するデータベースセキュリティソフトウェア企業です。DataSunrise の目標は、外部および内部の脅威と脆弱性からデータベースを保護することです。お客様はよく、DataSunrise Database Security が Amazon Aurora、Amazon Redshift、Amazon RDS for MySQL、Amazon RDS for PostgreSQL、Amazon RDS for MariaDB、Amazon RDS for Oracle Database、および Amazon RDS for Microsoft SQL Server を含む AWS で実行される異なる種類のデータベースエンジンを保護するときに、統合された制御とシングルユーザーエクスペリエンスを提供することから DataSunrise Database Security を選択しておられます。 DataSunrise は、アクティブなデータとデータベースのセキュリティに加えて、監査などの受動的なセキュリティの両方を提供します。アクティブなセキュリティは、機密データへの不正アクセスの防止、疑わしい SQL クエリのブロック、SQL インジェクション攻撃の防止、またはリアルタイムでのデータの動的なマスキングと難読化などの事前定義されたセキュリティポリシーに基づいています。DataSunrise は、高可用性、フェイルオーバー、および自動スケーリングを備えています。 この記事では、監査としても知られる受動的なセキュリティに焦点を当てます。今回は、DataSunrise が Aurora で何を監視するか、どのように機能するか、およびその使用開始方法について説明します。今後の記事では、アクティブなセキュリティ、データマスキング、および機密情報の検出を含む、セキュリティにおけるその他の側面を取り上げます。 DataSunrise 監査の対象 DataSunrise は、SQL クエリ、データフロー、バインディングなどの監査を可能にします。収集される情報には、SQL クエリの詳細と、それらの実行による結果が含まれます。SELECT […]

Read More

AWS SCT と AWS DMS を使ってMySQLから Amazon Aurora に移行する方法

MySQLは素晴らしいオープンソースデータベースエンジンで、そのコスト効率から多くの企業で使われています。しかし、その他のオープンソースデータベースと同様に、ビジネスで使えるレベルの性能を出すには多くの労力が必要です。 データベースサイズが増えるとMySQLのスケーラビリティとクラッシュリカバリの複雑さも増します。レプリケーションスレーブを追加することでMySQLデータベースをスケールさせると、特にMySQLマスターで多くの書き込みが発生した場合に、レプリケーションラグを非常にに小さな値で維持することは困難を伴います。ほとんどの場合、安定したパフォーマンスを維持することは難しいです。 一方、Amazon Aurora では最大15個のリードレプリカを追加できます。また、書き込みノードで発生した変更を再実行するために必要な従来のバイナリログ (binlog) レプリケーションのパフォーマンスをAuroraでは気にする必要がなくなります。これはAuroraクラスターボリューム内のデータは、クラスター内のライターとリーダーに対して単一の論理ボリュームとして見えるためです。 多数のテーブルを含む大規模なデータベースでの高速リカバリも Amazon Aurora の重要な利点の一つです。従来のMySQLの実装では、データベースが大きくなるにつれてリカバリ時間が長くなります。MySQLはREDOログファイルを使用するため、クラッシュするとMySQLはテーブルの検出や検証オペレーションを大量に実行します。データベースの表領域が大きいほど、リカバリに必要な時間は長くなります。この影響は MySQL 5.7 でも当てはまります。 このような要因から、MySQLから Amazon Aurora への移行に関心が集まっています。この移行を実行するにはいくつかの方法がありますが、今回は Amazon RDS for MySQL またはオンプレミスや Amazon EC2 上のMySQLから Amazon Aurora with MySQL compatibility への同種間移行について考えます。 同種間移行の方法 AWSホワイトペーパーのサイトにある Amazon Aurora Migration Handbook で同種間移行のための推奨方法がリストされています。Amazon RDS for MySQL から移行するのであれば、RDSスナップショットでの移行方法を使用できます。この方法では、RDS MySQL のDBインスタンスのスナップショットから Aurora MySQL DB クラスターを作成します。これは非常に簡単です。Amazon Aurora へニアゼロダウンタイムで移行した場合は、ソースとなる RDS MySQL DBインスタンスからAuroraリードレプリカを作ることができます。RDSが Amazon Aurora […]

Read More

Amazon Aurora: MySQL 5.7互換をリリース

Amazon AuroraのMySQL 5.7互換版が皆様にご利用頂けるようになりました。JSONサポート、空間インデックス、generated columnsなどをご利用頂け、MySQL 5.7より最大5倍高速です。 Amazon Auroraの空間インデックスの作成は、MySQL 5.7よりも20倍以上の書き込みパフォーマンスと10倍以上の読み込みパフォーマンスとなっています。この機能がどのように実装されているかについては、AWSデータベースブログをご覧ください。またAmazon Auroraのドキュメントもご参照下さい。 Aurora with MySQL compatibilityがご利用頂ける13リージョン(US East (N. Virginia), US East (Ohio), US West (Oregon), US West (N. California), Canada (Montreal), Europe (Ireland), Europe (Frankfurt), Europe (London), Europe (Paris), Asia Pacific (Tokyo), Asia Pacific (Sydney), Asia Pacific (Seoul), and Asia Pacific (Mumbai))全てでご利用頂けます。 ハイエンドな商用データベースのパフォーマンスと可用性を、オープンソースデータベースのシンプルさとコスト効率と組み合わせたAmazon Aurora (MySQLとPostgreSQL互換のリレーショナルデータベース)の詳細については、Amazon Auroraの製品ページをご覧ください。 CLIを用いた際のエンジンバージョンの指定方法や、スナップショットを利用したアップグレードなどAurora MySQL5.7互換に関する詳細な情報はドキュメントやフォーラムアナウンスをご覧ください。 […]

Read More

Amazon Aurora under the hood: Z-order curvesを用いたgeospatial indexの作成

Amazon Auroraのような高性能データベースシステムを設計する場合、一般的に最も幅広いワークロードを大きく改善出来るように取り組みたいと考えるかと思います。しかし時には、ゲームチェンジャーになりえる機会がある場合、特別な用途向けに改善を行うこともあります。 geospatial indexとはなにか、なぜ考慮する必要があるのか? 地理空間分析では、XY(Z)座標に沿った近さ、隣接性、重なりを識別することができます。 そのような分析を実行する必要があるアプリケーションには様々な例があります。タクシーアプリでは、利用可能な最寄りのタクシーを見つけることができます。不動産アプリは、サンフランシスコのPacific Heights地区で販売されている物件を探すことができます。 空間分析は、他にも多くの用途でも役立ちます: マーケティング – 店舗から2マイル以内のすべての見込み顧客をターゲットにプロモーションを行います 資産管理 – 顧客の位置と密度に基づいて影響を最小限に抑えるために修理ユニットを配置します リスク分析 – 顧客の居住地や職場の近くで車の盗難が発生した場合のリスクを見積もります 詐欺検出 – 前回のトランザクションからの距離に基づいて詐欺と考えられる取引の可能性を推定します ロジスティクス計画 – 運行の範囲を最小限にするように、トラブルのチケットを現場の技術者に割り当てます これらのアプリケーションは、高性能な空間データのインデックスから利益を得ることができます。残念なことに、Bツリーのような伝統的なインデックスは、Linlandのために作られたものであり、FlatlandやSpacelandではそうではありません。そのため、高性能な空間インデックスが必要です。 Rツリーとは? 最も一般的に使用される空間インデックスはRツリーです(詳細はこちらの論文を参照してください)。 MySQLとOracleはどちらもR-treeを使用しています。基本的な考え方は、バランスサーチツリーないにバウンダリーレクタングルを保存することです。リーフはデータポイントであり、各内部ノードは、その下のノードのミニマムバウンダリーレクタングルです。したがって、次の例では、長方形Aはリーフノードです。このノードは、矩形NおよびTによって順番に境界が作成されます。 Rツリーの主な問題は、安定していないことです(つまり、決定論的です)。挿入順序が異なると、異なるツリーが生成され、パフォーマンスの特性が大きく異なります。私たちのテストでは、ランダムな挿入順序では、最適な順序で構築されたツリーよりも1桁も性能が劣化したツリーが生成されました。これは、データの挿入順序が予測できず、変更可能なOLTP環境では明らかに問題になります。このような状況では、Rツリーは時間とともに性能が劣化します。1つの回避策は、データを定期的にインデックスを再構築することです。しかし、インデックスの再構築は負荷がかかります。加えて通常この作業は、手作業が必要であり、数時間かかることがあります。また、その期間中の他のトランザクションは遅くなる可能性があります。 そのため、Rツリーは人気がありますが、常に良好なパフォーマンスは得られません。 他にいい方法はあるのか? 私たちはそう考えています!トランザクションと同時実行に最適なデータ構造があります。それはBツリーです。 あらゆる場面で使用され、高いパフォーマンスを発揮するのはデータベースにとって基本です。 しかし、ちょっと待ってください。私はB-treeが多次元データに対してうまく機能しないと言いました。それは本当です。2次元を1次元にマップするトリックがあります。 私たちは、space-filling z-order curves(空間充填zオーダー曲線)を使用して行います。これは、ポイントのz値は、その座標値のバイナリ表現をインターリーブすることによって計算されます。zオーダー曲線は、これらの点をz値の順に横切る線です。たとえば、次の図は、0≤x≤7、0≤y≤7の整数座標の場合のz値を示しています(10進数と2進数の両方を示しています)。 zオーダー曲線上のBツリーの単純な実装では不十分です。なぜこれが当てはまるのかを知るために、以下の例を見てみましょう。緑色の四角形内のすべての点をBツリーで検索すると、クエリー領域外に30個の余分なz値(黄色い三角形の警告標識が付いている物)がスキャンされます。 元のクエリをより少ない偽陽性z値をカバーする小さなクエリに分割することで、この問題を改善します。(これを行うために幾つかの方法を使用していますが、それはこの記事でお伝えする範囲を超えています) それは私たちがポイントするために必要なものすべてを提示します。ポリゴンはどのように空間充填曲線で動作するのでしょうか?ポリゴンが単一点のように見えるまでズームアウトしたとします。どの程度ズームアウトしなければならないかは、ポリゴンの”レベル”によります。各空間オブジェクトは、オブジェクトのレベルとzアドレスの組み合わせとしてBツリーに格納されます。zアドレスがポイントのように見えるまでズームアウトしたので、zアドレスをポイントのように扱うことができます。他のシステムでは、このレベルを手動で指定する必要があります。明らかに、予測不可能で変更可能なデータを扱うOLTPシステムでは動作しません。このレベルはユーザーの設定なしで自動的に設定します。 Auroraのgeospatial indexesは、MySQL 5.7よりもselect-only(1秒当たりの読み込み回数)ワークロードで10倍以上、write-only(1秒当たりの書き込み回数)で20倍以上優れています。具体的には、サイズが1 GB未満のデータセットでSysbenchを使用して、AuroraとAmazon RDS for MySQL 5.7をdb.r3.8xlargeインスタンスを用いて計測しました。select-onlyのテストでは、2,000クライアントとST_EQUALSクエリを使用しました。write-onlyテストでは、4,000のクライアントを使用しました。 ご質問がある場合は、aurora-pm@amazon.comまでご連絡ください。 About the Author Sirish Chandrasekaran is a product […]

Read More