4 ポイント 投稿者 xguru 2023-07-07 | 1件のコメント | WhatsAppで共有
  • SQLiteデータベースをクラウドストレージに保存したうえで、DB全体をダウンロードしなくても読み書きを可能にするシステム
    • 現在は Azure Blob Storage と Google Cloud Storage をサポート
  • Block Cache VFS モジュールを利用: デーモンレスモード(Read/Write)とデーモンモード(Read-Only)で動作

GN⁺ の要約

  • 「クラウド対応 SQLite」(CBS) システムは、データベースをクラウドストレージアカウントに保存し、ストレージクライアントがデータベース全体をダウンロードせずにアクセスできるようにします。
  • 複数のクライアントが同時にデータベースへアクセスできますが、データベースに書き込めるクライアントは1つだけです。
  • CBS は現在 Azure Blob Storage と Google Cloud Storage をサポートしており、他のクラウドストレージシステムもサポートできる可能性があります。
  • SQLite データベースは固定サイズのブロックに分割され、クラウドストレージシステムに保存されます。
  • このシステムは、クラウドストレージコンテナ管理のための基本要素、リモートデータベースへのローカルアクセスを提供するデーモンプロセス、クラウドデータベースにアクセスするための VFS モジュールで構成されます。
  • CBS を使用するには、アプリケーションで必要な C ファイルとヘッダーファイルをビルドしてリンクし、libcurl と openssl にリンクする必要があります。
  • システムは自動化されたテストスイートを使ってテストできます。
  • データベースはコマンドラインツールを使ってクラウドストレージアカウントへアップロードできます。
  • クラウドストレージに保存されたデータベースへアクセスするには、VFS を作成し、コンテナを接続し、データベースハンドルを開き、SQL スクリプトを実行する必要があります。
  • システムは、新しいクラウドストレージシステムをサポートし、仮想テーブルを実装するための API を提供します。
  • この記事では、クラウドストレージシステムにおける安全なコンテナの使用について説明しています。
  • コンテナは安全または非安全に接続でき、安全な接続では AES OFB 暗号化を使ってデータを暗号化します。
  • ローカルクライアントがデーモンプロセスから暗号鍵を取得するには、有効なクラウドストレージ認証情報が必要です。
  • この記事では、クラウドストレージシステム向けの組み込みモジュール「azure」と「google」について言及しています。
  • CBS API とコマンドラインツールには、モジュール仕様、ユーザー名、認証値が必要です。
  • この記事では、「azure」モジュールの詳細と、認証用の SAS トークンを生成する方法を提供しています。
  • 「google」モジュールでは、CBS を Google Cloud Storage に接続するためにプロジェクト ID とアクセストークンが必要です。
  • この記事では、複数クライアントからの同時アクセスと、変更を確認するためにコンテナをポーリングする必要性について触れています。
  • Blockcachevfs は bcv_uploadbcv_pollbcv_client の3つの PRAGMA 文をサポートします。
  • 仮想テーブルインターフェースは bcv_container テーブルと bcv_database テーブルで構成されます。
  • bcv_container テーブルには接続されたコンテナに関する情報が含まれ、bcv_database テーブルには各コンテナのデータベースに関する情報が含まれます。
  • この記事では、blockcachevfs データベース内のさまざまなテーブルの構造と機能について説明しています。
  • bcv_database テーブルには、データベースに対するローカルな変更に関する情報が含まれます。
  • bcv_http_log テーブルは、VFS または接続されたデーモンによって実行された HTTP リクエストを記録します。
  • bcv_kv テーブルは、アプリケーションがクラウドストレージコンテナにデータを書き込めるようにします。
  • bcv_kv_meta テーブルは、クラウドストレージサーバーの HTTP ヘッダーへの読み取り専用アクセスを提供します。
  • この記事では、blockcachevfs データベースでのさまざまな操作に関するコマンドラインリファレンスも提供しています。
  • デーモンコマンドにより、blockcachevfsd プロセスをサーバーとして実行し、クライアントからの接続を受け付けられるようになります。
  • デーモンプロセスは、設定およびロギングのためのさまざまなオプションをサポートします。

1件のコメント

 
GN⁺ 2023-07-07
Hacker Newsの意見
  • 大規模なSQLiteデータベースをチャンクとして配信し、HTTPレンジリクエストでクエリする開発者の経験共有
  • このプロセスを支援するsql.js-httpvfsというライブラリへの言及
  • 開発者は350MBのSQLiteデータベースを小さな断片に分割してGitHubにアップロード
  • プロジェクトを確認し、コンソールとネットワークタブでテストすることを推奨
  • 別のコメント投稿者は、リモートデータストアを使う際のキャッシュ一貫性、同時実行性、ネットワーク分断、認証の問題への懸念を提起
  • 一定期間ごとにデータベースをtmpfsファイルシステムにコピーし、オブジェクトストレージにコピーする、より単純な解決策を提案
  • 問題解決、安価で高速なファイルコピー、外部デーモン不要、単純なグローバルロック、スレッドセーフ性、ネットワーク分断なし、外部認証などの利点を強調
  • 別のコメント投稿者は、PostgreSQLがすでに同じ問題を解決しているのに、なぜ組み込みデータベースであるSQLiteをクラウドサービスにデプロイするのか疑問を呈する
  • ストレージをクラウドに移すと、レイテンシと単純さが損なわれると主張
  • 別のコメント投稿者は、SQLiteにpg_dumpmysqldumpに相当するコマンドがあるか尋ねる
  • システムは現在Azure Blob StorageとGoogle Cloud Storageをサポートしており、AWSは除外される可能性があると言及
  • 別のコメント投稿者は、この機能が公式にサポートされているのか、それとも「技術的には可能」という状況なのか確信が持てない
  • 外部クラウドストレージに対してDatasetteを実行できるのか疑問を呈する
  • 別のコメント投稿者は、データベースへの書き込みを一度に1クライアントのみに保証することへの懸念を提起
  • SQLiteのVFSレイヤーは、クラウドオブジェクトストレージを実装するために柔軟で使いやすいと言及
  • キャッシュは実装の難しい側面になり得ることに言及
  • 別のコメント投稿者は、クラウドでSQLiteを使う代わりに他のリレーショナルデータベースを使うという発想に混乱を覚える。SQLiteはもともとローカル利用のために設計されたため。