シンガポールのSupabaseは、PostgreSQL用の実験的なCRDT拡張機能である「pg_crdt」を、12月10日(現地時間)にオープンソースで公開した。
CRDT(Conflict-free Replicated Data Type)は、特定の問題を解決するために設計された特別なタイプのデータ構造であり、更新が適用された順序に関係なくデータの最終状態が同じになるよう変更をマージできる。
CRDTを使用することで、複数のユーザーが同じデータに変更を加えられるようになり、中央の機構などによって各ユーザーのアクションを調整する必要はない。
今回、リリースされたpg_crdtは、CRDTサポートをPostgreSQLにデータ型として追加する拡張機能で、変更がデータベースに保存される際に問題が発生することのない、複数のユーザーによる同時でのデータ編集を可能にしている。
なお、RealtimeによってPostgreSQLのログ先行書き込み(WAL)からデータベースの変更をブロードキャストし、WALには基礎となるデータの完全なコピーが含まれているため、小さな更新によってドキュメント全体がすべての共同作業者にブロードキャストされる。したがって、頻繁に更新されるCRDTは、多くのWALと不要なタプルを生成する。また、PostgreSQLの大規模なCRDTは更新時にシリアライゼーション/デシリアライゼーションのオーバーヘッドを大量に生成することに留意する必要がある。
この記事は参考になりましたか?
- この記事の著者
-
CodeZine編集部(コードジンヘンシュウブ)
CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です