0

[Open Source] #20 Teable: Kiến trúc "No-code Postgres" và giải pháp xử lý dữ liệu hàng triệu dòng

Trong thế giới No-code, hầu hết các công cụ đều gặp phải bài toán hiệu năng khi dữ liệu vượt quá 50,000 dòng do lưu trữ dữ liệu dạng JSON hoặc Document không tối ưu. Teable ra đời để phá vỡ rào cản đó bằng cách kết hợp trải nghiệm bảng tính (spreadsheet) với sức mạnh thực sự của một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).

🛠️ 1. Hệ sinh thái công nghệ: Monorepo & Enterprise-grade Stack

Github: https://github.com/teableio/teable

Teable được xây dựng dưới dạng Monorepo (pnpm workspaces), cho phép quản lý đồng nhất giữa core, sdk, và plugins:

  • Backend Orchestrator: Chạy trên NestJS (Node.js). Đây là framework hướng module mạnh mẽ, giúp Teable dễ dàng quản lý các nghiệp vụ phức tạp như phân quyền (RBAC) và xử lý dữ liệu lớn.
  • Frontend Engine: Sử dụng Next.js (React) kết hợp với Shadcn UITailwind CSS, mang lại giao diện tinh tế, tốc độ render nhanh và hỗ trợ tốt cho Accessibility.
  • Database Management (Dual-layer):
    • Prisma: Dùng để quản lý tầng Metadata (Thông tin hệ thống, User, Workspace).
    • Knex.js: Dùng để quản lý tầng Physical Data. Khi bạn tạo một "Bảng" trên giao diện, Teable không lưu vào JSON mà dùng Knex để tạo một bảng vật lý thật sự (CREATE TABLE) trong Postgres.
  • Real-time Collaboration: Sử dụng ShareDB kết hợp thuật toán OT (Operational Transformation). Đây là kỹ thuật giúp nhiều người cùng chỉnh sửa một ô dữ liệu đồng thời mà không bị xung đột (tương tự Google Docs).

🏗️ 2. Trụ cột kiến trúc: SQL-native và Formula Compiler

Điểm làm nên sự khác biệt của Teable nằm ở cách nó "nói chuyện" với Database:

Kiến trúc CSDL tầng kép (Blueprint vs Physical)

Teable tách biệt hoàn toàn giữa định nghĩa và thực thi:

  1. Lớp Meta: Lưu trữ "bản vẽ" của bảng (Cột này là kiểu số, cột kia là liên kết).
  2. Lớp Vật lý: Mỗi bảng của người dùng là một bảng SQL thực sự trong Postgres. Điều này cho phép Teable tận dụng tối đa Index, Triggers và khả năng tối ưu hóa của Postgres, giúp hệ thống xử lý hàng triệu dòng dữ liệu mượt mà.

Formula Compiler (Biên dịch công thức)

Thay vì tính toán công thức bằng JavaScript ở Server (gây chậm và tốn RAM), Teable sử dụng ANTLR4 để xây dựng một trình biên dịch công thức:

  • Nó phân tích cú pháp kiểu Excel của người dùng và biên dịch trực tiếp thành câu lệnh SQL thuần túy.
  • Công thức được lưu dưới dạng Generated Columns (STORED) trong Postgres. Mọi phép tính đều do Database xử lý ở mức độ nhị phân, mang lại hiệu năng tối đa.

🔄 3. Phân tích chuyên sâu Luồng hoạt động (Data Lifecycle)

Sơ đồ dưới đây mô tả quá trình từ lúc người dùng thao tác trên trình duyệt cho đến khi dữ liệu được ghi xuống đĩa cứng một cách an toàn và thời gian thực:

image.png

Giải mã các kỹ thuật "Pro-level" trong mã nguồn:

  1. Visitor Pattern trong DDL Generation: Trong phần xử lý database, Teable áp dụng Visitor Pattern. Khi bạn đổi kiểu dữ liệu một cột (ví dụ từ Text sang Number), hệ thống sẽ "duyệt" qua các loại Field và sinh ra mã SQL ALTER TABLE tương ứng cho từng loại Database (Postgres/SQLite).
  2. Integrity Management (Quản lý toàn vẹn): Teable tự động quản lý các Foreign Keys và Junction Tables ở tầng DB khi bạn thực hiện các liên kết (Link) giữa các bảng. Điều này đảm bảo dữ liệu không bao giờ bị "mồ côi" (orphan data).
  3. Observability (Giám sát): Dự án tích hợp sâu OpenTelemetrySentry, cho phép theo dõi từng câu lệnh SQL chậm (Slow Query) và vết lỗi từ Frontend xuống tới tận Database.

⚖️ 4. So sánh chiến lược

Tiêu chí Teable Airtable NocoDB / Baserow
CSDL Gốc PostgreSQL (Physical) Proprietary (Đóng) Thường dùng bảng Map JSON
Giới hạn dòng Triệu dòng (theo Postgres) Chục nghìn dòng Trung bình
Real-time Có (ShareDB/OT) Hạn chế/Polling
Công thức SQL-native (Cực nhanh) Server-side JS (Chậm) Server-side JS
Quyền sở hữu Tuyệt đối (Self-host) Không có

✅ Kết luận: Tại sao nên chọn Teable?

Teable là một minh chứng cho việc kết hợp nhuần nhuyễn giữa Design Patterns truyền thống và Web Technologies hiện đại. Nếu bạn là một Developer/Architect đang tìm kiếm một nền tảng:

  1. Linh hoạt như bảng tính nhưng phải chắc chắn như Database.
  2. Cần xử lý dữ liệu lớn (Big Data) ở cấp độ doanh nghiệp mà không muốn tốn công xây dựng Backend từ đầu.
  3. Muốn một hệ thống Real-time thực thụ để team làm việc chung.

Thì Teable chính là sự lựa chọn không thể bỏ qua. Đây là một "vũ khí" mới cực mạnh trong bộ công cụ phát triển phần mềm hiện đại.


Hy vọng bản phân tích chuyên sâu này mang lại giá trị thực tế cho bạn. Đừng quên UpvoteFollow mình để đón xem những dự án kỹ thuật thú vị tiếp theo!


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí