Cómo procesa Notion 200 mil millones de objetos de datos / Sudo Null IT News

Fotos del autor del post.

Fotos del autor del post.

Transición de Soluciones solo para PosgreSQL a tu propio lago de datos para separar la carga de lectura para las necesidades de análisis e inteligencia artificial.


Introducción

si usaste Nociónentonces sabrá que le permite hacer casi todo: tomar notas, programar, crear listas de lectura y administrar proyectos.

Noción es una herramienta flexible. Podrás personalizar el espacio hasta que sientas que has conseguido lo que deseas.

Todo dentro Noción representa un bloque: texto, imágenes, listas, filas de base de datos e incluso páginas.

Estas unidades dinámicas se pueden convertir en otros tipos de bloques o moverse libremente dentro Noción.

Los bloques son LEGO de Noción.

Postgres los gobernó a todos.

Inicialmente, Notion almacenó todos los bloques en una base de datos de Postgres. En 2021 fueron más de 20 mil millones. Ahora el número de bloques ha aumentado a 200 mil millones.

Antes de 2021, todo estaba colocado en una única instancia de Postgres.

Actualmente, la base de datos está dividida en 480 segmentos lógicos, que se distribuyen en 96 instancias de Postgres, de modo que cada una es responsable de 5 segmentos.

Postgres procesó todo, desde el tráfico de usuarios en línea hasta análisis fuera de línea y aprendizaje automático.

Al darnos cuenta de las grandes demandas de análisis e inteligencia artificial, decidimos crear nuestra propia infraestructura para ellos.

Fivetrans y Snowflake

Primero, en 2021 se creó un ETL simple que utilizaba Fivetran para transferir datos de Postgres a Snowflake. Se utilizaron 480 conectores para escribir 480 fragmentos en tablas sin formato de Snowflake por hora.

Luego, Notion combinó estas tablas en una tabla más grande para análisis y aprendizaje automático.

Pero este enfoque encontró algunos problemas a medida que crecía el volumen de datos de Postgres:

Administrar 480 conectores Fivetran fue una pesadilla:

  • Los usuarios de Notion actualizan bloques con más frecuencia de lo que agregan nuevos. Este patrón de actualización intensiva ralentiza y aumenta el costo de procesar los datos de Snowflake.

  • El consumo de datos es cada vez más complejo y pesado (cargas de trabajo de IA)

Notion ha comenzado a construir su propio almacén de datos.

lago de datos

Se establecieron los siguientes requisitos para el sistema:

  • Almacén de datos escalable para almacenar datos tanto sin procesar como procesados.

  • Ingestión y cálculo de datos rápidos y rentables para cualquier carga de trabajo. Especialmente con datos que se actualizan con frecuencia.

En 2022, se introdujo su propia arquitectura DataLake, cuya esencia es transferir datos de Postgres a Kafka utilizando Debezium, seguido de transferencia a Apache Hudi y S3.

Este almacén de objetos actúa como un punto final para los consumidores:

Spark se utiliza para procesar los miles de millones de bloques resultantes y sus actualizaciones.

Gracias a la creación de dicho subsistema, fue posible reducir significativamente los costos operativos.

A continuación se muestra el canal principal de carga de datos:

1 conector Debeizum CDC en 1 instancia de Postgres.

  • Los conectores se implementan y administran en Kubernetes en AWS (EKS)

  • El conector puede procesar cambios de filas de Postgres a velocidades de decenas de MB/s.

  • Odin tema Kafka en 1 mesa de Postgres.

  • Todos los conectores consumen datos de 480 segmentos y escriben en el tema apropiado para una tabla determinada.

  • Apache Hudi Delta Streamer se utiliza para recibir mensajes de Kafka y escribir datos en S3.

  • La mayoría de los trabajos de ciencia de datos se escribieron en PySpark.

  • Para tareas más complejas, se utiliza Scala Spark. Notion también utiliza procesamiento paralelo y de subprocesos múltiples para acelerar el procesamiento de 480 segmentos.

Victorioso

  • Enviar datos de Snowflake a S3 ahorró a Notion más de un millón de dólares en 2022, con ahorros aún más significativos en 2023 y 2024.

  • El tiempo total para recibir y procesar datos con Postgres se ha reducido significativamente: de más de un día a varios minutos para tablas pequeñas y un par de horas para las grandes.

  • La nueva infraestructura de datos abre oportunidades adicionales para el uso de análisis. Ayudó a introducir con éxito nuevas funciones de inteligencia artificial en 2023 y 2024.


en lugar de completar

Sistemas tolerantes a fallas más distribuidos, patrones, guías arquitectónicas, entrevistas de diseño de sistemas en la comunidad de Telegram sistema_diseño_mundo.

Publicaciones Similares

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *