graphprotocol / graphprotocol/hypergraph

Federation & Storage Design

オープン
#362 コメント 2 件 リアクション 0 件 担当者 0 名 GitHub で見る

まだ誰も着手していません。

主要言語
TypeScript
スター
22
フォーク
12
PR マージ指標
30日以内にマージされた PR はありません

説明

This is only relevant to private spaces

Requirements

  • Real-time sync must be possible (Relaying over 1-2 servers would be fine)
  • We space membership we need linear ordering: we either move it on chain or we have dedicated lead sync server per space

Ideas

Proposal A
  • Multi-sync server architecture where sync you can host your own
  • Each space defines a dedicated sync server.
  • On the sync server we one sqlite per Space.
Implications
  • could mean that clients need to connect to a lot of sync servers if you subscribe to several private spaces. Chrome e.g. has a limit of 255 Websocket connections. That said subscribing to multiple space on one sync server could re-use the same connection.
  • real-time sync is easy to achieve in a space
  • migration to another server could be get the sqlite db and upload it there
  • could be that we can leverage Cloudflare for this (they have Sqlite + Websockets and scale well)
Open questions
  • How can I list my private spaces?
  • Where can I find out about which sync server to use for a private space?
  • We have little experience with sqlite per space. Bluesky does it and it seems to work well
  • Has pros and cons regarding versioning (larger eco-system that moves slower, but we also can experiment easier)
Proposal B

One centralized system maintained by the Graph Foundation, Edge & Node, Geo.

Implications
  • the easiest to implement and maintain
  • not decentralized
Proposal C
  • Federation between servers
  • There is one main sync server for each space, but message can be forwarded in a peer to peer network
Open questions
  • I think we have little experience with federation and not sure there are many benefits

コントリビューションガイド

コントリビューションガイドを開く

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

調査の方向性

この issue では、ファイル、テスト、エントリポイントが指定されていません。まず、フェデレーションとストレージに関する3つの提案および未解決の疑問を解決してください。アーキテクチャが選定され、プライベートスペースの同期、メンバーシップの順序付け、サーバー検出の要件が文書化された時点で完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
sqlite, typescript
領域
databases, distributed-systems
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。