導入企業は驚異的な速度でデータを蓄積しており、膨大なストレージ容量を必要としています。開発者は、テラバイト規模のデータの保存と処理に苦労することがよくあります。Apache Igniteは、トランザクション、分析、ストリーミングワークロード向けのメモリ中心の分散データベース、キャッシュ、および処理プラットフォームであり、ペタバイト規模のデータに対してメモリレベルのパフォーマンスを提供します。Igniteは、アプリケーションや多様なデータソースにまたがるデータの整理と管理のための、高性能な分散型インメモリフレームワークを提供します。 Ignite の際立った特徴は、分散 SQL 結合を完全にサポートしていることです。Ignite は、共存データ結合と非共存データ結合の両方をサポートしています。共存結合では、各ノードの利用可能なデータセットに対して結合が実行され、大量のデータをネットワーク経由で移動する必要はありません。このアプローチは、分散データベースの中で最高のスケーラビリティとパフォーマンスを提供します。Ignite は他のリレーショナルデータベースと同様に動作しますが、制約とインデックスの処理が若干異なります。Ignite は第 1 レベルと第 2 レベルの両方のインデックスをサポートしていますが、一意性をサポートするのは第 1 レベルのインデックスのみです。永続性に関しては、Ignite のメモリ永続性はメモリ内とディスク上の両方で適切に機能しますが、ディスク永続性は無効にすることができます。Ignite は通常、インメモリデータベースとして使用されます。 開発の歴史特性
シーン3つの主な使用例
保管モードApache Ignite Tier 1 Storageは、メモリのパフォーマンス上の利点とディスクベースデータベースのスケーラビリティおよび永続性を兼ね備えた最先端のストレージアーキテクチャを実装しています。ストレージモードには、インメモリモード、インメモリ + 外部データベースモード、Tier 1データベースモードがあります。 メモリモードインメモリコンピューティングソリューションのあらゆる利点を活用することで、データは最小限のレイテンシと最大限のスループットで保存・処理されます。データセット全体はメモリ内でのみ利用可能です。ノード障害の影響を軽減するため、クラスター内に少なくとも1つのデータのバックアップコピーを保持することをお勧めします。これは、データキャッシュ、ハイパフォーマンスコンピューティング、Webセッションキャッシュ、そして継続的なデータストリームのリアルタイム処理に適しています。 メモリ + 外部データベースモード既存のディスクベースのデータベースやバックエンドシステムの上にIgniteをキャッシュレイヤーとして導入することで、既存のデータベースの高速化とオフロードを実現します。RDBMSやApache Cassandra、MongoDBなどのNoSQLデータベースなどの既存のデータベースの上にIgniteをキャッシュレイヤーとして使用するために、IgniteはApache Cassandraとのすぐに利用可能な統合機能を提供しています。他のNoSQLデータベースのようにすぐに統合できない場合は、独自のCacheStoreインターフェース実装を提供できます。 多層データベースモデル通常、メモリキャッシュとデータベースは永続化機能に限界があります。しかし、Ignite にはそのような制限はありません。利用可能なメモリを超えてデータを永続化し、再起動時のメモリウォームアップをスキップします。データの100%がIgniteのネイティブ永続化に永続化され、メモリにキャッシュされるデータは同量以下です。キャッシュされるデータが多いほど、パフォーマンスが向上します。アプリケーションはメモリ内とディスク上のレコードのみをクエリできるため、利用可能なメモリ容量を超えて透過的にスケーリングできます。Ignite はディスクからデータを提供できるため、再起動時のメモリウォームアップは不要です。 分散SQLネイティブSQLサポートにより、Igniteは標準SQLデータベースのように使用できます。Apache Igniteには、JDBCおよびODBCドライバーに加え、Java、C#、C++、Pythonなどのプログラミング言語をサポートするSQL APIが付属しています。Igniteは、SELECT、UPDATE、INSERT、DELETEを含むすべてのDMLコマンドをサポートし、分散システムに関連するDDLコマンドのサブセットも実装しています。Igniteの顕著な特徴は、分散SQL結合を完全にサポートしていることです。Igniteは、共存データ結合と非共存データ結合の両方をサポートしています。共存結合では、大量のデータをネットワーク経由で移動することなく、各ノードの利用可能なデータセットに対して結合が実行されます。このアプローチにより、分散データベースで最高のスケーラビリティとパフォーマンスが実現します。 分散ACIDIgniteは、分散ACIDトランザクションを完全にサポートし、メモリレベルとディスクレベルの両方で同一の一貫性を保証する、強力な一貫性プラットフォームです。Igniteのトランザクションは、複数のノード、複数のキャッシュ(またはテーブル)、そして複数のパーティションにまたがって実行できます。アプリケーションでは、楽観的ロックと悲観的ロックの両方が利用可能です。楽観的モードではデッドロックフリーのトランザクションもサポートされ、ビジネスコードレベルでの分散デッドロックを回避できます。 Ignite は 2 フェーズ コミット プロトコルを採用しています。分散システムでは、トランザクションが複数のノードにまたがる場合があり、参加しているすべてのノード間でデータの一貫性を確保することは明らかに重要な課題です。たとえば、ノードに障害が発生した場合、障害が発生したノード上のトランザクションは完全にコミットできません。このようなシナリオでは、データの一貫性を保証するために広く使用されている方法が 2 フェーズ コミット プロトコル (2PC) です。Ignite は、2 フェーズ コミット プロトコルの最高速な実装を提供します。さらに、トランザクションが 1 つのパーティションまたは 1 つのノードのみに関係する場合、Ignite はより高速な 1 フェーズ コミット プロトコルを使用します。トランザクション内でデータが変更されると、Ignite は変更をコミットする前に、ローカル トランザクション マップ内にトランザクション状態を保持します。コミットすると、データは関連するリモート ノードに送信され、関連するデータのプライマリ レプリカを保持しているノードのみがトランザクションに参加します。 一貫性と持続性を刺激するIgnite のネイティブ永続化機能を使用すると、すべての更新が Write-Ahead Log (WAL) ファイルに書き込まれるため、トランザクション実行中にクラスターまたはノードに障害が発生した場合でも、一貫性が確保されます。WAL の目的は、アタッチモードで更新をディスクに伝播することです。これは、データをディスクに永続化する最速の方法です。クラスターまたはノードに障害が発生した場合、WAL は障害シナリオに対するリカバリメカニズムを提供し、クラスターは常に最後に正常にコミットされたトランザクションの状態にリカバリできます。 一貫性とサードパーティの永続性Ignite が RDBMS などのサードパーティデータベース上のキャッシュ層として実行される場合でも、Ignite はキャッシュされたデータと外部データ間のトランザクションの一貫性を確保します。例えば、RDBMS が永続化層として使用されている場合、Ignite は関連するクラスタノードにコミットメッセージを送信する前に、トランザクションをデータベースに書き込みます。このように、データベース層でトランザクションエラーが発生した場合でも、Ignite は関連するすべてのノードにロールバックメッセージを送信し、両者間のデータの一貫性を維持します。 建築
結論はApache Ignite は、分散インメモリコンピューティングに特化したオープンソース プロジェクトです。Ignite はデータをメモリ内に保存し、複数のノードに分散することで高速なデータ アクセスを実現します。また、データを非同期に永続層に伝播するオプションも備えているため、開発者にとってデータベース キャッシュに使用する際の選択肢として最適です。Apache Ignite は、分散ストレージ、分散コンピューティング、分散サービス、ストリーム コンピューティングなど、多くの最新の分散概念を統合しています。さらに、Java 言語をサポートし、JDK との優れた統合性も備えているため、既存の JDK API との互換性も確保されています。スレッド プールを開始する際、ローカル スレッド プールか分散スレッド プールかを気にする必要はなく、タスクを送信するだけで済みます。Apache Ignite は、RDBMS、Hadoop、Spark、Kafka などの従来のリレーショナル データベースや、主流のビッグ データ スイートとの統合に、柔軟性が高くユーザー フレンドリなコンポーネント API を提供しています。 |