- 公開日
ノーテーションは2000億のデータエンティティをどのように処理するのか。
- 著者

- 名前
- AbnAsia.org
- @steven_n_t
Notionのすべてはブロックです。テキスト、画像、リスト、データベースの行、そしてページもブロックです。

ノーテーションのアーキテクチャは、独自のデータモデルをサポートするように設計されており、基本的な情報単位である「ブロック」を中心に構成されています。ブロックは、テキスト、画像、データベースエントリなどのさまざまな種類のコンテンツを表現できます。このアーキテクチャにより、柔軟でダイナミックなユーザーエクスペリエンスを実現し、ユーザーは高度にカスタマイズされた方法でデータを作成および操作できます。
ノーテーションのアーキテクチャの主な特徴
- ブロックベースのデータモデル
全てがブロックである:ノーテーションでは、すべてのコンテンツはブロックとして扱われます。ブロックはノーテーションのLEGOです。これには、テキスト、画像、データベース行、さらにはページ全体も含まれます。各ブロックにはメタデータが関連付けられており、アプリケーション内で自由に変換または移動できます。
柔軟性:このブロックモデルにより、ユーザーは厳格な制約なしに情報を整理できます。これにより、さまざまなユースケースやワークフローに適応しやすくなります。
- データベース設計
関係データベース:ノーテーションは、PostgreSQLを基本的なデータベースシステムとして使用しています。初期には、単一のPostgreSQLインスタンスで動作していましたが、データ量の増加に伴い、シャーディングを使用したより複雑なアーキテクチャに進化しました。
シャーディング戦略:2023年中頃の時点で、ノーテーションのデータベースアーキテクチャは、96台のデータベースサーバーに分割され、ワークスペースIDに基づいて論理的にシャード化されています。これにより、特定のワークスペースに属するすべてのブロックが一緒に保存され、効率的なトランザクションと一貫性が保たれます。
- スケーラビリティとパフォーマンス
クラスタ化されたアーキテクチャ:クラスタ化されたサーバーの使用により、ノーテーションはデータベースを水平方向にスケールできます。各シャードは、PostgreSQLスキーマとして表現され、データ量の増加に伴いパフォーマンスを維持しながら管理できます。
APIのやり取り:クライアントアプリケーションは、Node.js Webサーバーを使用する専用のAPIサーバーを通じてデータベースとやり取りします。この設定により、コネクションプーリングを使用して効率的にコネクションを管理することでパフォーマンスが向上します。
- データ管理と成長
データレイクインフラストラクチャ:ノーテーションは、データ分析およびレポートのために、ELT(Extract、Load、Transform)パイプラインを実装しています。Fivetranなどのツールを使用して、PostgreSQLからSnowflakeへのデータを取り込み、さらに分析しています。
急速なデータ成長:ノーテーションのブロックデータの量は、2021年の20億から2024年中頃の200億に急激に増加しました。この成長により、データ管理戦略の継続的な最適化が必要です。
ノーテーションでのデータベース設計
ノーテーションでのデータベースの作成は、簡単で、以下のステップを含みます。
データベースブロックの作成:ユーザーは、任意のノーテーションページで「/database」を入力して、インラインまたはフルページのデータベースタイプにアクセスできます。
列とエントリの追加:ユーザーは、データベース内の各エントリにプロパティを定義できます。これには、テキスト、数値、日付などのタイプが含まれます。
ビューのカスタマイズ:ノーテーションは、ユーザーの好みに応じてデータを視覚化するための複数のビュー(テーブル、ボード、ギャラリー)をサポートしています。
データベースのリンク:ユーザーは、リンクされたプロパティを使用して、異なるデータベース間の関係を作成できます。これにより、データの相互接続性が向上します。
ノーテーションのアーキテクチャは、柔軟なブロックベースのモデルと堅固な関係データベース管理原則を組み合わせて、情報を整理するための強力なツールを作成します。スケーラブルなインフラストラクチャとユーザーに優しい設計により、ユーザーは複雑なデータセットを効果的に管理できます。また、カスタマイズとコラボレーションのための必要なツールも提供します。このユニークな組み合わせにより、ノーテーションは、個人用の生産性向上とチームコラボレーションシナリオの両方に適しています。
初期のノーテーションでは、すべてのブロックをPostgresデータベースに保存していました。
当時、Postgresデータベースは、オンラインユーザー トラフィックからオフライン分析および機械学習まで、すべてを処理していました。
2021年、ノーテーションは、Fivetranを使用してPostgresからSnowflakeへのデータを取り込み、480のコネクタを使用して480のシャードをSnowflakeのテーブルに書き込むという、シンプルなETLを開始しました。
しかし、このアプローチには、Postgresデータが増加したときにいくつかの問題がありました。
❌480のFivetranコネクタを管理することは、非常に困難です。
❌ノーテーションのユーザーは、新しいブロックを追加するよりも、ブロックを更新することが多いため、Snowflakeのデータ取り込みが遅くなり、コストが増加します。
❌データの消費は、より複雑で重いものになります(AIワークロード)
2022年、ノーテーションは、Debeziumを使用してPostgresからKafkaへのデータを取り込み、Apache Hudiを使用してKafkaからS3へのデータを書き込むという、インハウスのデータレイクアーキテクチャを導入しました。
日本語版は Ai 支援を使用しているため、小さな間違いが存在する可能性があることをご了承ください。
著者
Ai Base Network (ABN), ABN ASIAは、アカデミアに深く関わり、アメリカ、オランダ、ハンガリー、日本、韓国、シンガポール、ベトナムでの仕事経験を持つ人々によって設立されました。ABN ASIAは、学問とテクノロジーが機会と出会う場所です。最先端のソリューションと優れたソフトウェア開発サービスにより、ビジネスがレベルアップし、グローバルシーンに挑戦できるよう支援しています。 私たちの取り組み: より速く。 より良い。 より信頼性が高くなります。 ほとんどの場合、価格も安くなります。
いつでも、ITサービス、デジタルコンサルティング、既製のソフトウェアソリューション、または提案依頼書(RFP)をお探しの際は、お気軽にお問い合わせください。お問い合わせ先は[email protected]です。お客様のテクノロジーに関するニーズにお応えします。

© ABN ASIA