最近のニュースはそれを壊しました YandexがDBMS「YDB」のソースコードを公開、SQL 言語および ACID トランザクションのサポートを実装します。
DBMS ゼロから構築され、当初は耐障害性を確保することを目的として開発されました、障害時の自動回復と拡張性。 Yandex は、10 万を超えるノードを含む実用的な YDB クラスターを立ち上げ、数百ペタバイトのデータを保存し、毎秒数百万の分散トランザクションを処理していることに注意してください。
YDBの主なノベルティ
YDB の際立った機能の XNUMX つは、 YQL テーブルでリレーショナル データ モデルを使用する (YDB クエリ言語) は、データ スキーマのクエリと定義に使用されます。 大規模な分散データベースで動作するように適応された SQL の方言。 ストレージ スキーマを作成する場合、ファイル システム上のディレクトリに似たテーブルのツリー状のグループ化がサポートされます。 JSON 形式のデータを操作するための API が提供されています。
ザ・ フォールトトレラント構成を作成する機能 これらは、ディスク、ノード、ラック、さらには個々のデータセンターに障害が発生しても機能し続けます。 YDBは、ゾーンのXNUMXつに障害が発生した場合にクラスターの状態を維持しながら、XNUMXつのアベイラビリティーゾーン間での同期展開とレプリケーションをサポートします。
データアクセスのサポート データベースでアドホック分析クエリを実行するように設計されたスキャンクエリを使用し、読み取り専用モードで実行され、grpcストリームを返します。
さらに、それも目立ちます PDisk コンポーネントを使用してブロック デバイスにデータを直接保存する ネイティブと VDisk 層。 VDisk に加えて、ディスクの可用性とパフォーマンスを分析して問題が検出された場合に除外する DSProxy も実行します。
の その他の機能 目立つ:
- 仮想ブロックデバイスや永続キューに至るまで、YDB 上にさまざまなサービスを構築できる柔軟なアーキテクチャ。 さまざまなタイプのワークロードへの適合性: OLTP および OLAP (分析クエリ)。
- マルチユーザー (マルチユーザー) 構成とサーバーレス構成のサポート。
- クライアントを認証する機能。 ユーザーは、リクエスト数やデータ サイズのレベルでリソース消費を考慮したり、特定のコンピューティング リソースやストレージ スペースをレンタル/予約したりして、共有の共通インフラストラクチャ上に独自の仮想クラスターとデータベースを作成できます。
- 古いデータを自動的に削除するためにログの有効期間を調整する機能。
- DBMS とのやり取りとリクエストの送信は、コマンド ライン インターフェイス、組み込み Web インターフェイス、または C++、C# (.NET)、Go、Java、Node.js、PHP、Python のライブラリを提供する YDB SDK を介して行われます。
- アプリケーションの遅延を最小限に抑えて障害から自動的に回復し、データを保存するときに指定された冗長性を自動的に維持します。
- 主キーに対するインデックスの自動作成と、任意の列へのアクセス効率を向上させるためのセカンダリ インデックスの定義機能。
- 水平方向のスケーラビリティ。 負荷と保存されるデータのサイズが増加しても、新しいノードを接続するだけでクラスターを拡張できます。 コンピューティング層とストレージ層が分離されているため、コンピューティング層とストレージ層を個別に拡張できます。 DBMS 自体は、利用可能なハードウェア リソースを考慮して、データと負荷の均等な分散を監視します。 世界のさまざまな地域にある複数のデータセンターをカバーする地理的に分散した構成を実装することが可能です。
- 複数のノードとテーブルにまたがるクエリを処理する場合の、強力な整合性モデルと ACID トランザクションのサポート。 パフォーマンスを向上させるために、一貫性チェックを選択的に無効にすることができます。
- 自動データレプリケーション、サイズまたは負荷が増加した場合の自動パーティショニング(パーティショニング、シャーディング)、およびノード間の自動負荷とデータバランシング。
最後に、 YDB は Yandex プロジェクトで使用されることに注意してください。 コードは C/C++ で書かれており、Apache 2.0 ライセンスの下で配布されています。ソース コードとその詳細を確認できます。 次のリンクで.