Publié le

Comment Notion gère-t-il 200 milliards d'entités de données ?

Auteurs

Tout dans Notion est un bloc — du texte, des images, des listes, des lignes de base de données et même des pages.

Image

L'architecture de Notion est conçue pour supporter son modèle de données unique, qui tourne autour de « blocs » - les unités fondamentales d'information qui peuvent représenter divers types de contenu, tels que du texte, des images et des entrées de base de données. Cette architecture permet une expérience utilisateur flexible et dynamique, permettant aux utilisateurs de créer et de manipuler des données de manière hautement personnalisable.

Fonctionnalités clés de l'architecture de Notion

  1. Modèle de données basé sur des blocs
  • Tout est un bloc : dans Notion, tout le contenu est traité comme un bloc. Les blocs sont les LEGO de Notion. Cela inclut du texte, des images, des lignes de base de données et même des pages entières. Chaque bloc a des métadonnées associées et peut être transformé ou déplacé librement au sein de l'application.

  • Flexibilité : ce modèle de blocs permet aux utilisateurs d'organiser les informations sans contraintes strictes, facilitant ainsi l'adaptation à divers cas d'utilisation et flux de travail.

  1. Conception de la base de données
  • Base de données relationnelle : Notion utilise PostgreSQL comme système de base de données sous-jacent. Initialement, il fonctionnait sur une seule instance PostgreSQL, mais a depuis évolué vers une architecture plus complexe impliquant le partitionnement pour gérer efficacement les charges de données croissantes.

  • Stratégie de partitionnement : à partir de mi-2023, l'architecture de base de données de Notion se compose de 96 serveurs de base de données partitionnés en partitions logiques en fonction des ID d'espace de travail. Cela garantit que tous les blocs appartenant à un espace de travail spécifique sont stockés ensemble, facilitant les transactions efficaces et la cohérence.

  1. Évolutivité et performances
  • Architecture en cluster : l'utilisation de serveurs en cluster permet à Notion de scaler sa base de données horizontalement. Chaque partition est représentée comme un schéma PostgreSQL, ce qui aide à gérer le volume de données croissant tout en maintenant les performances.

  • Interaction avec l'API : les applications clientes interagissent avec la base de données via un serveur API dédié fonctionnant sur des serveurs Web Node.js. Cette configuration améliore les performances en gérant efficacement les connexions grâce au regroupement de connexions.

  1. Gestion et croissance des données
  • Infrastructure de lac de données : Notion a mis en place un pipeline ELT (Extract, Load, Transform) pour les analyses et les rapports de données, en utilisant des outils tels que Fivetran pour ingérer des données de PostgreSQL dans Snowflake pour une analyse plus approfondie.

  • Croissance rapide des données : le volume de données de blocs dans Notion a considérablement augmenté - passant de plus de 20 milliards de blocs au début de 2021 à plus de 200 milliards de blocs à mi-2024. Cette croissance nécessite une optimisation continue de leurs stratégies de gestion des données.

Conception de bases de données dans Notion

La création de bases de données dans Notion est simple et implique plusieurs étapes :

  • Créer un bloc de base de données : les utilisateurs peuvent initier une base de données en tapant /database dans n'importe quelle page Notion pour accéder à différents types de bases de données (en ligne ou en page complète).

  • Ajouter des colonnes et des entrées : les utilisateurs peuvent définir des propriétés pour chaque entrée dans la base de données, y compris des types tels que du texte, des nombres, des dates, etc.

  • Personnaliser les vues : Notion prend en charge plusieurs vues (tableau, tableau, galerie) pour visualiser les données en fonction des préférences de l'utilisateur.

  • Lier des bases de données : les utilisateurs peuvent créer des relations entre différentes bases de données en utilisant des propriétés liées, améliorant ainsi l'interconnectivité de leurs données.

L'architecture de Notion combine un modèle de blocs flexible avec des principes de gestion de base de données relationnelle robustes pour créer un outil puissant pour organiser les informations. Son infrastructure évolutivité et sa conception conviviale permettent aux utilisateurs de gérer des ensembles de données complexes de manière efficace tout en fournissant les outils nécessaires pour la personnalisation et la collaboration. Ce mélange unique rend Notion adapté à la fois à la productivité personnelle et à la collaboration d'équipe.

Initialement, Notion stockait tous les blocs dans la base de données Postgres.

À l'époque, les bases de données Postgres géraient tout, du trafic utilisateur en ligne aux analyses et à l'apprentissage automatique hors ligne.

En 2021, ils ont commencé le voyage avec un ETL simple qui utilisait Fivetran pour ingérer des données de Postgres dans Snowflake, en utilisant 480 connecteurs pour écrire 480 partitions dans des tables Snowflake brutes toutes les heures.

Mais cette approche avait des problèmes lorsque les données Postgres ont augmenté :

❌ Gérer 480 connecteurs Fivetran est un cauchemar.

❌ Les utilisateurs de Notion mettent à jour les blocs plus souvent qu'ils n'en ajoutent de nouveaux. Ce modèle de mise à jour lourd ralentit et augmente le coût de l'ingestion de données Snowflake.

❌ La consommation de données devient plus complexe et lourde (charges de travail d'IA)

En 2022, ils ont mis en place une architecture de lac de données interne qui a ingéré des données de Postgres dans Kafka en utilisant Debezium, puis a utilisé Apache Hudi pour écrire de Kafka à S3.

Veuillez noter que la version française est assistée par Ai, des erreurs mineures peuvent donc exister.

Auteur

AiUTOMATING PEOPLE, ABN ASIA a été fondée par des personnes ayant des racines profondes dans le milieu académique, avec une expérience professionnelle aux États-Unis, aux Pays-Bas, en Hongrie, au Japon, en Corée du Sud, à Singapour et au Vietnam. ABN ASIA est l'endroit où l'académie et la technologie rencontrent l'opportunité. Avec nos solutions de pointe et nos services de développement logiciel compétents, nous aidons les entreprises à se développer et à s'imposer sur la scène mondiale. Notre engagement : Plus vite. Mieux. Plus fiable. Dans la plupart des cas : moins cher également.

N'hésitez pas à nous contacter chaque fois que vous avez besoin de services informatiques, de conseils en matière de numérique, de solutions logicielles prêtes à l'emploi, ou si vous souhaitez nous envoyer des demandes de propositions (RFP). Vous pouvez nous contacter à l'adresse [email protected]. Nous sommes prêts à vous aider avec tous vos besoins technologiques.

ABNAsia.org

© ABN ASIA

AbnAsia.org Software