6

データのプルと書き込みに bittorrent プロトコルを使用する分散 SQL データベースのアイデアがあります。

議論のために、これがメッセージング アプリケーションであるとしましょう。このアプリケーションでは、何千人ものユーザーが、メッセージング ウィンドウとメッセージを書き込むための入力ボックスを含むプログラムを実行します。

書き込まれた各メッセージは、独自の sqlite DB に対して INSERT を実行します。

それがどのようにできるか

  • 基本的に DB を作成するためのスキーマ/DDL を含む .torrent ファイルをダウンロードし、ローカル マシンに作成します。
  • 「書き込み」アクションが実行されると (ユーザーがメッセージを送信したい場合など)、その INSERT 行 (デルタのようなもの) は次の 2 つのことを行います。
    • 独自の内部 DB に書き込みます
    • その行から、messaging-[my-ip]-[UTC_timestamp].torrent のような名前の .torrent ファイルを作成し、トラッカーに投稿します。
  • アプリを実行しているすべての人は、トラッカーを継続的にスキャンして、この特定の名前のファイル (おそらく特定の日付以降) を探し、.torrent をダウンロードしてホストし、ローカル DB で INSERT コマンドを実行します。

その場合、大量のデルタ ファイル、冗長性のためにすべての P2P がホストされ、多くのマシンでローカルの .sqlite DB を更新することになります。

私が抱えているいくつかの問題

  • 特定のファイル名の torrent をスクレイピングするにはどうすればよいですか? http bittorrent トラッカーの仕様を読みましたが、特定の情報名に基づいてファイルを照会することしかできないようです。ファイルのグループ、またはファイル名に基づいてクエリを実行する方法はありませんか?

  • トラッカーから .torrent ファイルをダウンロードするにはどうすればよいですか? 中央サーバーでファイルをホストする必要がありますか、それともトラッカーを使用して何らかの方法でファイルをダウンロードできますか? .torrent ファイルを自分でホストする必要がある場合は...

    • 私のウェブサイトがダウンした場合、アプリケーションは更新を取得できなくなるため、これは分散型 DB の目的を無効にしないでしょうか?

事前に助けてくれてありがとう。

4

1 に答える 1

7

Bittorrent は不変のやや大規模なデータ セットの配布用に設計されており、複数の torrent にまたがる操作を実際には認識していません。データベースは主に、比較的小さなデータのチャンクを変更し、それらのさまざまなサブセットに対して操作を実行することを目的としています。

データベースのセマンティクスをビットトレントに押し込もうとしても、ほとんど喜びはありません。

せいぜい、データベースのスナップショットを配布するために使用できます。
新しいコンテンツが古いものを変更せずにファイルを追加/削除するだけである場合、bittorrent は以前の torrent からデータをリサイクルするのに少し手を加えるだけでかなりうまくいく可能性があります。

それを超えるものは、プロトコルにいくつかの大幅な変更を加える必要があり、もはやバニラ ビットトレントではなくなります。

于 2015-01-31T04:46:52.360 に答える