先週 Canonicalは、Dqlite1.0プロジェクトのメジャーバージョンのリリースを発表しました, SQLエンジンを開発しています 複数のノードにまたがることにより、データレプリケーション、自動ディザスタリカバリ、およびフォールトトレランスをサポートする組み込みのSQLite準拠。
DqliteはCライブラリです 高可用性と自動フェイルオーバーを備えたレプリケートされたSQLデータベースエンジンを実装します。 頭字語「dqlite」は「DistributedSQLite」の略で、 つまり、dqliteは、アプリケーションの複数のインスタンスを接続し、外部データベースに依存することなく、それらを高可用性クラスターとして機能させることができるネットワークプロトコルでSQLiteを拡張します。
述べたように DBMSは、アプリケーションに接続されたCライブラリの形式で実装されます。 そして、Apache 2.0ライセンスの下で配布されます(元のSQLiteはパブリックドメインで提供されます)。 ライブラリは、既存のSQLiteコードに基づくプラグインです。 これにより、異なるホストで実行されているアプリケーションの複数のインスタンスをリンクするためのネットワークプロトコルサポートが追加されます。
Dqliteで構築されたアプリケーションは、フェールオーバークラスターとして機能できます 自律的なミスによって、外部DBMSから独立しています。
実際には、 CanonicalはLXDコンテナ管理システムでDqliteを使用しています。 ライブラリのアプリケーション領域の中で、エッジコンピューティングシステムでのフォールトトレラントなモノのインターネットデバイスとプロセッサの作成についても言及されています。
データ複製の一貫性を確保するために、Raftアルゴリズムに基づくコンセンサス方式が使用されます。これは、etcd、RethinkDB、CockroachDB、OpenDaylightなどのプロジェクトで使用されます。 Dqliteは、Cで記述された独自の非同期C-raft実装を使用します。
接続処理を多重化し、コルーチンの起動を整理するために、準備されたライブラリlibuvおよびlibcoが使用されます。
同様のrqliteプロジェクトと比較して、Dqliteは完全なトランザクションサポートを提供します、任意のCプロジェクトと通信でき、time()関数を使用でき、SQL式の変換ベースのレプリケーションの代わりにフレームベースのレプリケーションを使用します。
Dqliteで強調表示できる機能は次のとおりです。
- 非同期モードですべてのディスクおよびネットワーク操作を実行します
- データの正確性を確認するための一連のテストの存在
- ネットワークを介した低メモリ消費と効率的なデータ交換
- 永続的なデータベースディスクストレージとトランザクションログ(メモリ内キャッシュ機能付き)
- 障害後の迅速な回復
- Go言語の安定したCLIクライアント。データベースの初期化、レプリケーションの構成、ノードの接続/切断に使用できます。
- ARM、X86、POWER、およびIBMZアーキテクチャーのサポート
- Raftアルゴリズムの実装は、トランザクションの待ち時間を最小限に抑えるように最適化されています。
- libuvをイベントループとして使用する非同期シングルスレッド実装。
- SQLiteプリミティブとデータ型用に最適化されたカスタムワイヤプロトコル。
- Raftアルゴリズムに基づくデータ複製とC-raftでのその効率的な実装。
Ubuntuとその派生物にDqliteをインストールするにはどうすればいいですか?
Canonicalは、Dqliteと対話するためのクライアントを構築する方法に関する情報を提供します。これを参照してください。 次のリンクで。
ここで、システムへのライブラリのインストールについては、 これは、Ubuntuユーザーの方のためにXNUMXつの方法でインストールできます またはそれの他の派生物。 CanonicalはPPAを提供します そこからかなり簡単な方法で入手できます。
このPPAは、端末から追加して、端末で次のコマンドを実行できます。
sudo add-apt-repository ppa:dqlite/v1 sudo apt-get update sudo apt-get install libdqlite-dev
このライブラリをインストールするもうXNUMXつの方法は、コンパイルすることです。 これはシステム上で行われるため、これはUbuntuと他のLinuxディストリビューションの両方にとってより一般的な方法です。
これを行うには、ターミナルを開いて次のコマンドを実行するだけです。
git clone --depth 100 https://github.com/canonical/sqlite.git cd sqlite ./configure --enable-replication make sudo make install cd .. git clone https://github.com/canonical/libco.git cd libco make sudo make install cd .. git clone https://github.com/canonical/raft.git cd raft autoreconf -i ./configure make sudo make install cd ..
必要なすべてのライブラリがインストールされたら、dqlite共有ライブラリを構築するために、次のコマンドを実行できます。
autoreconf -i ./configure make sudo make install