現代のオンライントランザクション処理システムには、適切なスケーリングと一貫性が求められます。この記事では、NewSQLを用いたデータベースクエリについて解説し、コーダーやプログラマーがトランザクションを整理し、製品のロールアウトを計画し、よくある落とし穴を回避できるようにします。詳細を解説する前に、NewSQLとは何か、そしてプログラマーがどのように使用するのかを定義することが重要です。
NewSQL とは何ですか? また、プログラマーはそれをどのように使用しますか?
NewSQLは、オンライントランザクション処理に定評のあるMySQLとNoSQLのスケーラビリティを応用した、リレーショナルデータベース管理システム(RDBMS)の最新クラスです。NewSQLはSQLとNoSQLの利点を組み合わせ、多様なスキーマを活用した整理されたデータベースを一貫性を持って提供します。NewSQLシステムの代表的な例としては、CockroachDB、Google Spanner、VoltDBなどが挙げられます。それぞれが大規模なトランザクションデータを効率的に処理するための独自の機能を備えています。
NewSQLは、重要なデータを扱うほとんどのエンタープライズシステム間の競合を解消しようとします。こうしたデータは、通常のDBMSでは大きすぎる場合があり、SQLやNoSQLと互換性のないトランザクション情報が含まれている可能性があります。NewSQLは、トランザクション処理のために強力なコンピュータを購入したり、カスタムソフトウェアを開発したりする必要がないため、中間処理を省きます。これらの作業は、開発コストとインフラコストの両面で大きな負担となります。
NewSQLでデータベースを作成する際に従うべき重要なルール
NewSQLでデータベースをクエリする際は、関連する行を同じデータベースノードにグループ化するパーティションキーを選択し、ノード間の操作を最小限に抑えます。小規模なトランザクションから始めると、競合や書き換えの可能性が軽減されます。関連のない行を結合するようなデータレイアウトは、パーティションを混乱させる可能性があるため、避けてください。大規模なトランザクションを効率的に処理するには、マテリアライズド・ビューを使用してください。
NewSQL でデータベースをクエリするための操作上のヒント
高負荷状態でデータベースをテストし、データ更新の速度を追跡した後、データベースを再起動します。特に新しいデータが定期的に挿入される場合、セカンダリインデックスを監視して、処理速度の向上と上書きの増加のバランスを取ります。リバランスとバックアップを自動化し、指標とインデックス比率を追跡し、一時的な競合にはクライアント側ロジックを適用することで、時間を節約し、効率的な運用を実現します。
これらのヒントを活用することで、NewSQLを使ったデータベースクエリは、従来のSQLプロトコルとNoSQLを融合させ、スケーラブルで一貫性のあるオンライントランザクション処理を実現します。上記のルールに従い、可能な限りテストを行い、受信データを継続的に監視することで、NewSQLを使ったデータベースクエリのパフォーマンスを予測通りに維持できます。Webテクノロジーに関するその他のリソースについては、 Webテクノロジーカテゴリをご覧ください。