Xuất bản vào

Notion xử lý 200 tỷ thực thể dữ liệu như thế nào?

Tác giả

Mọi thứ trong Notion đều là một khối—văn bản, hình ảnh, danh sách, hàng cơ sở dữ liệu và thậm chí cả các trang.

Image


Kiến trúc của Notion được thiết kế để hỗ trợ mô hình dữ liệu độc đáo của nó, xoay quanh "khối" - các đơn vị thông tin cơ bản có thể đại diện cho các loại nội dung khác nhau, chẳng hạn như văn bản, hình ảnh và các mục nhập cơ sở dữ liệu. Kiến trúc này cho phép trải nghiệm người dùng linh hoạt và động, cho phép người dùng tạo và thao tác dữ liệu theo cách tùy chỉnh cao.

Các Tính Năng Chính của Kiến Trúc Notion

  1. Mô Hình Dữ Liệu Dựa Trên Khối
  • Mọi Thứ Là Khối: Trong Notion, tất cả nội dung được coi là một khối. Các khối là những viên gạch LEGO của Notion. Điều này bao gồm văn bản, hình ảnh, hàng cơ sở dữ liệu và thậm chí là toàn bộ trang. Mỗi khối có siêu dữ liệu liên quan và có thể được biến đổi hoặc di chuyển tự do trong ứng dụng.

  • Tính Linh Hoạt: Mô hình khối này cho phép người dùng tổ chức thông tin mà không bị ràng buộc nghiêm ngặt, giúp dễ dàng thích ứng với các trường hợp sử dụng và quy trình làm việc khác nhau.

  1. Thiết Kế Cơ Sở Dữ Liệu
  • Cơ Sở Dữ Liệu Quan Hệ: Notion sử dụng PostgreSQL làm hệ thống cơ sở dữ liệu cơ bản. Ban đầu, nó hoạt động trên một phiên bản PostgreSQL đơn lẻ nhưng đã phát triển thành kiến trúc phức tạp hơn liên quan đến phân mảnh để quản lý tải dữ liệu ngày càng tăng một cách hiệu quả.

  • Chiến Lược Phân Mảnh: Tính đến giữa năm 2023, kiến trúc cơ sở dữ liệu của Notion bao gồm 96 máy chủ cơ sở dữ liệu được phân chia thành các phân mảnh logic dựa trên ID không gian làm việc. Điều này đảm bảo rằng tất cả các khối thuộc về một không gian làm việc cụ thể được lưu trữ cùng nhau, tạo điều kiện cho các giao dịch hiệu quả và nhất quán.

  1. Khả Năng Mở Rộng và Hiệu Suất
  • Kiến Trúc Cụm: Việc sử dụng các máy chủ cụm cho phép Notion mở rộng cơ sở dữ liệu theo chiều ngang. Mỗi phân mảnh được đại diện dưới dạng một lược đồ PostgreSQL, giúp quản lý khối lượng dữ liệu ngày càng tăng trong khi duy trì hiệu suất.

  • Tương Tác API: Các ứng dụng khách tương tác với cơ sở dữ liệu thông qua một máy chủ API chuyên dụng hoạt động trên các máy chủ web Node.js. Thiết lập này tăng cường hiệu suất bằng cách quản lý kết nối hiệu quả thông qua việc gom kết nối.

  1. Quản Lý và Phát Triển Dữ Liệu

Cơ Sở Hạ Tầng Hồ Dữ Liệu: Notion đã triển khai một đường dẫn ELT (Trích xuất, Tải, Biến đổi) cho mục đích phân tích và báo cáo dữ liệu, sử dụng các công cụ như Fivetran để nạp dữ liệu từ PostgreSQL vào Snowflake để phân tích sâu hơn.

  • Sự Phát Triển Nhanh Chóng Của Dữ Liệu: Khối lượng dữ liệu khối trong Notion đã mở rộng đáng kể - từ hơn 20 tỷ khối vào đầu năm 2021 lên hơn 200 tỷ khối vào giữa năm 2024. Sự phát triển này đòi hỏi tối ưu hóa liên tục các chiến lược quản lý dữ liệu của họ.

Thiết Kế Cơ Sở Dữ Liệu Trong Notion

Tạo cơ sở dữ liệu trong Notion rất đơn giản và bao gồm một số bước:

  • Tạo Khối Cơ Sở Dữ Liệu: Người dùng có thể khởi tạo cơ sở dữ liệu bằng cách gõ /database trong bất kỳ trang Notion nào để truy cập các loại cơ sở dữ liệu khác nhau (dòng hoặc toàn trang).

  • Thêm Cột và Mục Nhập: Người dùng có thể xác định thuộc tính cho từng mục nhập trong cơ sở dữ liệu, bao gồm các loại như văn bản, số, ngày, v.v.

  • Tùy Chỉnh Chế Độ Xem: Notion hỗ trợ nhiều chế độ xem (bảng, bảng điều khiển, thư viện) để trực quan hóa dữ liệu theo sở thích của người dùng.

Liên Kết Cơ Sở Dữ Liệu: Người dùng có thể tạo mối quan hệ giữa các cơ sở dữ liệu khác nhau bằng cách sử dụng các thuộc tính liên kết, tăng cường sự kết nối của dữ liệu của họ.

Kiến trúc của Notion kết hợp mô hình dựa trên khối linh hoạt với các nguyên tắc quản lý cơ sở dữ liệu quan hệ mạnh mẽ để tạo ra một công cụ mạnh mẽ cho việc tổ chức thông tin. Cơ sở hạ tầng có khả năng mở rộng và thiết kế thân thiện với người dùng của nó cho phép người dùng quản lý các tập dữ liệu phức tạp một cách hiệu quả trong khi cung cấp các công cụ cần thiết cho việc tùy chỉnh và cộng tác. Sự kết hợp độc đáo này làm cho Notion phù hợp cho cả năng suất cá nhân và kịch bản cộng tác nhóm.

Ban đầu, Notion lưu trữ tất cả các khối trong cơ sở dữ liệu Postgres.

Vào thời điểm đó, cơ sở dữ liệu Postgres xử lý mọi thứ từ lưu lượng người dùng trực tuyến đến phân tích ngoại tuyến và học máy.

Năm 2021, họ bắt đầu hành trình với một ETL đơn giản sử dụng Fivetran để nạp dữ liệu từ Postgres vào Snowflake, sử dụng 480 kết nối để ghi 480 phân mảnh vào các bảng thô của Snowflake hàng giờ.

Nhưng cách tiếp cận này gặp một số vấn đề khi dữ liệu Postgres phát triển:

❌Quản lý 480 kết nối Fivetran là một cơn ác mộng.

❌Người dùng Notion cập nhật các khối thường xuyên hơn là thêm mới. Mô hình cập nhật nặng này làm chậm và tăng chi phí nạp dữ liệu vào Snowflake.

❌Việc tiêu thụ dữ liệu trở nên phức tạp và nặng nề hơn (khối lượng công việc AI).

Năm 2022, họ đã triển khai kiến trúc hồ dữ liệu nội bộ, nạp dữ liệu từ Postgres vào Kafka bằng cách sử dụng Debezium, sau đó sử dụng Apache Hudi để ghi từ Kafka vào S3.

TÁC GIẢ

Về ABN Asia: AiUTOMATING PEOPLE, ABN Asia được thành lập từ năm 2012, là một công ty xuất phát từ học thuật, do những giảng viên, cựu du học sinh Hungary, Hà Lan, Nga, Đức, và Nhật Bản sáng lập. Chúng tôi chia sẻ đam mê chung và tầm nhìn vững chắc về công nghệ, mang đến sự đổi mới và chất lượng đỉnh cao cho khách hàng. Phương châm của chúng tôi là: Tốt hơn. Nhanh hơn. An toàn hơn. Trong nhiều trường hợp: Rẻ hơn.

Hãy liên hệ với chúng tôi khi Quý doanh nghiệp có các nhu cầu về dịch vụ công nghệ thông tin, tư vấn chuyển đổi số, tìm kiếm các giải pháp phần mềm phù hợp, hoặc nếu Quý doanh nghiệp có đấu thầu CNTT (RFP) để chúng tôi tham dự. Quý doanh nghiệp có thể liên hệ với chúng tôi qua địa chỉ email [email protected]. Chúng tôi sẵn lòng hỗ trợ với mọi nhu cầu công nghệ của Quý doanh nghiệp.

ABNAsia.org

© ABN ASIA

AbnAsia.org Software