Phạm Văn Thư
Dữ liệu và phân tích · Nội dung có hỗ trợ AI

Baserow: dựng cơ sở dữ liệu no-code tự lưu trữ cho công ty dịch vụ kế toán

Đăng ngày 12/10/2026

Mục lục bài nghiên cứu
Hình đại diện Baserow — phần mềm dữ liệu và phân tích mã nguồn mở

Baserow: bảng tính có cơ sở dữ liệu PostgreSQL phía sau, và nơi nó đáng thử

Baserow là nền tảng no-code (xây dựng không cần viết mã) cho cơ sở dữ liệu, ứng dụng, tự động hóa, bảng điều khiển và trợ lý AI. README mô tả nó như một sự kết hợp giữa bảng tính và cơ sở dữ liệu, có API đầy đủ, xây trên Django, Vue.js và PostgreSQL. [1] Bài này đọc kho mã ở một commit cố định và không chạy thử phần mềm, vì vậy mọi nhận định về hiệu năng hay độ ổn định đều nằm ngoài phạm vi.

Điều đáng cân nhắc nhất là mô hình cấp phép. Phần lớn mã nguồn nằm dưới giấy phép MIT, nhưng thư mục premium và enterprise có giấy phép riêng đòi hỏi gói đăng ký khi dùng trong sản xuất. [2][11][12] Nói cách khác, Baserow thuộc kiểu open core: lõi mở, một số tính năng nâng cao thuộc phiên bản thương mại. Người đọc cần tách rõ hai nhóm này trước khi lập kế hoạch.

Nên cân nhắc Baserow khi một nhóm nghiệp vụ đang sống trong hàng chục tệp bảng tính, cần phân quyền, biểu mẫu, API và muốn giữ dữ liệu trên máy chủ của mình. Không nên chọn khi nhu cầu thật sự là một hệ thống kế toán có sổ cái, khóa sổ và chuẩn mực báo cáo; Baserow là công cụ dựng cơ sở dữ liệu nghiệp vụ, không phải phần mềm kế toán. Khuyến nghị của bài là thử trên một quy trình phụ trợ trước, chưa chạm vào dữ liệu chính thức của khách hàng.

Khi hồ sơ khách hàng nằm rải rác trong những tệp bảng tính

Một công ty dịch vụ kế toán nhỏ thường quản lý khách hàng bằng nhiều tệp: danh sách khách, lịch nộp tờ khai, tình trạng nhận chứng từ, người phụ trách. Các tệp được chép qua email hoặc chat, bản nào mới nhất phụ thuộc vào trí nhớ của nhân viên.

Bảng tính thuần thiếu ba thứ mà công việc này cần: quyền truy cập theo vai trò, lịch sử thay đổi có thể truy vết và liên kết bảng chặt chẽ giữa khách hàng, hợp đồng và đầu việc. Baserow nhắm đúng khoảng trống đó bằng giao diện giống bảng tính, trong khi dữ liệu nằm ở PostgreSQL và có thể truy cập qua REST API. [1][6]

Cần nói rõ giới hạn của lời hứa no-code. Việc dựng bảng và biểu mẫu nhanh không làm biến mất công việc thiết kế dữ liệu: ai sở hữu trường nào, trạng thái nào hợp lệ, khi nào một bản ghi được coi là đã hoàn tất. Nếu bỏ qua bước này, doanh nghiệp chỉ chuyển sự lộn xộn từ tệp sang một giao diện web đẹp hơn.

Cấu trúc kho mã: backend Django, giao diện Nuxt và lớp mở rộng trả phí

Tài liệu cấu trúc thư mục cho biết toàn bộ dự án nằm trong một kho duy nhất với ba thư mục gốc chính: backend, web-frontend và docs. [6] Backend là một mô-đun Django. Trong đó, ứng dụng core là bắt buộc và chứa các khái niệm nền như workspace (không gian làm việc) và application; ứng dụng api phơi ra REST API; còn thư mục contrib chứa phần backend của plugin database. [6]

Phía giao diện, web-frontend dùng Nuxt và có Dockerfile riêng. Tài liệu còn nhắc một ảnh Docker dựa trên nginx dùng để phục vụ tệp người dùng tải lên, vì Django không phục vụ tệp media khi tắt chế độ gỡ lỗi. [6]

README và giấy phép cho thấy thêm hai lớp nằm ngoài lõi: thư mục premium và thư mục enterprise, mỗi nơi có tệp LICENSE riêng. [1][2][11][12] Tài liệu kiến trúc trường AI mô tả cách chia lớp này trong thực tế: lớp lõi lo phần trừu tượng hóa nhà cung cấp mô hình, còn trường AI, bộ xử lý và việc lên lịch tác vụ nằm ở lớp premium. [3] Do đó, một tính năng xuất hiện trong giao diện chưa chắc thuộc bản miễn phí; cần đối chiếu từng tính năng với thư mục chứa nó.

Baserow database screenshot — Baserow, phần mềm dữ liệu và phân tích mã nguồn mở
Hình 1. Minh họa trong kho mã nguồn chính thức của Baserow. Nguồn: baserow/baserow @c38cdfd. Hình ảnh và nhãn hiệu thuộc về chủ sở hữu tương ứng.

Một ô được cập nhật: từ API, qua hàng đợi Celery, tới màn hình đồng nghiệp

Với dữ liệu thường, đường đi bắt đầu ở REST API hoặc giao diện web. Để cập nhật thời gian thực, tài liệu WebSocket mô tả rằng người dùng xác thực bằng JWT qua REST, sau đó mở kết nối và nhận các thông điệp JSON có trường type cho biết điều gì thay đổi. Kết nối chỉ nhận thông điệp thuộc các workspace mà người dùng tham gia. [9] Đó là cách hai kế toán viên cùng mở một bảng và thấy thay đổi của nhau mà không tải lại trang.

Tài liệu này còn có một chi tiết hữu ích cho người viết tích hợp: tiêu đề WebSocketId cho phép máy khách loại chính mình khỏi thông điệp phát lại của thay đổi mình vừa gửi. [9]

Với trường AI, luồng dài hơn. Bộ xử lý gọi hàm sinh giá trị cho một dòng: kiểm tra cấu hình mô hình, giải công thức lời nhắc theo ngữ cảnh dòng, thu thập tệp đính kèm nếu có, gọi nhà cung cấp, dọn tệp đã tải lên và đối chiếu kết quả với các lựa chọn nếu trường là dạng chọn. [3] Việc sinh hàng loạt chạy như tác vụ bất đồng bộ trong một nhóm luồng; với chế độ tự cập nhật, thay đổi ở trường được tham chiếu tạo bản ghi lịch cập nhật và một tác vụ Celery duy nhất cho mỗi trường, tự lên lịch lại nếu có cập nhật mới trong lúc đang chạy. [3] Điều này có nghĩa chi phí gọi mô hình gắn với số dòng và tần suất sửa dữ liệu, không chỉ số người dùng.

Những gì tài liệu xác nhận, tách theo bản miễn phí và bản trả phí

README liệt kê các nhóm khả năng: kết hợp bảng tính và cơ sở dữ liệu, tạo ứng dụng và cổng thông tin xuất bản trên tên miền riêng, tự động hóa quy trình, bảng điều khiển, trợ lý AI tên Kuma, và định vị API first. [1]

Ở mức mã nguồn, tài liệu trường AI xác nhận nhiều nhà cung cấp mô hình: OpenAI, Anthropic, Amazon Bedrock, Google Gemini, Groq, Mistral, Ollama, OpenRouter, xAI và Z.ai, đăng ký qua một registry. Hai kiểu đầu ra là văn bản tự do và chọn trong danh sách. [3] Trường AI nằm trong lớp premium theo cùng tài liệu đó. [3]

Tài liệu cấu hình bổ sung các giới hạn vận hành có thể chỉnh: số lần thử lại và số webhook tối đa mỗi bảng, giới hạn tốc độ chạy workflow tự động, số ngày lưu lịch sử chạy, và trình chạy mã (code runner) có tiền tố ENTERPRISE trong tên biến với mặc định chạy QuickJS qua wasmtime, thời gian tối đa 5 giây. [8] Tiền tố này gợi ý trình chạy mã thuộc phiên bản enterprise, nhưng bài không kết luận chắc chắn vì tài liệu cấu hình không nói thẳng điều đó.

Baserow form screenshot — Baserow, phần mềm dữ liệu và phân tích mã nguồn mở
Hình 2. Minh họa trong kho mã nguồn chính thức của Baserow. Nguồn: baserow/baserow @c38cdfd. Hình ảnh và nhãn hiệu thuộc về chủ sở hữu tương ứng.

Ai nên dùng: nhóm nghiệp vụ có kỹ năng dữ liệu nhưng không có đội lập trình

Baserow phù hợp nhất với đội vận hành có người am hiểu dữ liệu, chẳng hạn trưởng nhóm nghiệp vụ biết dùng công thức bảng tính, và có người chịu trách nhiệm hạ tầng ở mức Docker hoặc dịch vụ quản lý.

Với đơn vị cần cổng thông tin cho khách bên ngoài, README nói có thể xuất bản ứng dụng trên tên miền riêng. [1]

Không phù hợp khi bạn cần giao dịch có ràng buộc kế toán chặt, khối lượng ghi cực lớn phải tinh chỉnh từng truy vấn, hoặc khi tổ chức cấm tuyệt đối đưa dữ liệu qua nhà cung cấp mô hình ngoài mà vẫn muốn dùng trường AI.

Tình huống đề xuất: công ty dịch vụ kế toán 25 nhân sự theo dõi hồ sơ thuế khách hàng

Tình huống dưới đây là đề xuất giả định, không phải trường hợp đã triển khai. Một công ty dịch vụ kế toán tại Đà Nẵng phục vụ vài trăm doanh nghiệp nhỏ. Mỗi tháng nhân viên phải thu chứng từ, lập tờ khai, nhắc khách ký và nộp đúng hạn. Hiện việc theo dõi nằm trong bảng tính theo từng nhân viên.

Đề xuất thiết kế gồm bốn bảng liên kết: Khách hàng, Kỳ kê khai, Chứng từ cần thu và Đầu việc nội bộ. Biểu mẫu công khai giúp khách gửi chứng từ; chế độ xem kanban theo trạng thái; mỗi kế toán chỉ thấy khách mình phụ trách nhờ phân quyền. Phân quyền chi tiết theo vai trò có thể thuộc gói trả phí, nên phải kiểm tra bảng tính năng của gói thương mại thay vì giả định, vì các tệp đã đọc không nêu rõ.

Với tự động hóa, một webhook có thể báo sang kênh chat nội bộ khi chứng từ chuyển trạng thái đã đủ. Tài liệu cấu hình cho biết webhook mặc định bị chặn gọi địa chỉ nội bộ, nên cần khai báo danh sách IP cho phép nếu đích là hệ thống trong mạng riêng. [8] Trường AI có thể phân loại ghi chú chứng từ theo danh mục, nhưng dữ liệu tài chính của khách gửi cho nhà cung cấp mô hình là quyết định cần có sự đồng ý rõ ràng trong hợp đồng dịch vụ.

Ranh giới quan trọng: Baserow chỉ giữ hồ sơ theo dõi tiến độ. Sổ sách và hóa đơn điện tử vẫn nằm trong phần mềm kế toán chuyên dụng. Nếu công ty muốn xây thêm một kho tri thức nội bộ kiểu second brain, nên bắt đầu từ danh mục quy trình chứ không phải dữ liệu khách hàng.

Triển khai bằng Docker: một ảnh duy nhất cho thử nghiệm, tách dịch vụ khi lớn lên

Tài liệu cài đặt Docker cho biết ảnh baserow/baserow chạy mọi dịch vụ trong một container, mặc định gồm PostgreSQL và Redis nội bộ cùng proxy Caddy, dữ liệu lưu ở thư mục /baserow/data. Ảnh này dành cho triển khai đơn máy; muốn mở rộng ngang thì dùng các ảnh backend và web-frontend tách riêng. [7] Với môi trường sản xuất, tài liệu khuyến nghị mạnh việc dùng PostgreSQL ngoài qua biến DATABASE_URL. [7]

Nâng cấp theo hướng đổi phiên bản ảnh và khởi động lại; Baserow tự chạy migration khi khởi động và có thể nhảy thẳng qua nhiều phiên bản. Tài liệu cũng cảnh báo trường hợp dữ liệu PostgreSQL nhúng tạo trước phiên bản 1.24 cần một bước nâng cấp thư mục dữ liệu riêng. [7] Sao lưu toàn bộ bằng cách sao chép thư mục dữ liệu chỉ nên làm khi đã dừng Baserow, và không bao gồm tệp tải lên nếu đã cấu hình lưu trữ ngoài. [7]

Về cấu hình, số tiến trình Celery mặc định bằng số lõi, có biến để giảm bộ nhớ, và có điểm kiểm tra sức khỏe cho hàng đợi. [8] Tài liệu hạ tầng còn mô tả cách cấu hình replica chỉ đọc cho PostgreSQL bằng các biến DATABASE_READ, nhưng trang đó thuộc hướng dẫn môi trường phát triển nên không nên coi là hướng dẫn sản xuất. [10]

Bảo mật: SSRF, webhook, bí mật cấu hình và dữ liệu gửi ra mô hình ngoài

Hướng dẫn rà soát bảo mật nội bộ của dự án cho thấy các mối quan tâm của nhóm phát triển: phân quyền theo tài nguyên, chống SQL injection, SSRF (máy chủ bị lợi dụng để gọi địa chỉ nội bộ), rò rỉ bí mật qua log và giới hạn tài nguyên. [5] Đây là tài liệu hướng dẫn người rà soát mã, không phải kết quả kiểm thử bảo mật độc lập, nên chỉ chứng minh quy trình tồn tại chứ không chứng minh kết quả.

Tài liệu cấu hình xác nhận một số biện pháp có thể bật: giới hạn yêu cầu đồng thời có danh sách chặn, chặn webhook tới địa chỉ riêng theo mặc định, tùy chọn bảo vệ SSRF cho đồng bộ dữ liệu và SSO, và captcha Cloudflare Turnstile cho đăng ký. [8] Cần đọc kỹ giá trị mặc định từng biến vì có biến mặc định cho phép địa chỉ riêng trong đồng bộ dữ liệu.

Về báo lỗi bảo mật, SECURITY.md chỉ hướng dẫn gửi email chi tiết cho nhà phát triển. [4] Với dữ liệu kế toán, kịch bản đề xuất cần thêm lớp bên ngoài: HTTPS, cô lập mạng, sao lưu mã hóa, và chính sách rõ ràng về những trường nào được phép gửi tới nhà cung cấp mô hình.

README nêu tuân thủ GDPR, HIPAA, SOC 2 Type II, nhưng đó là tuyên bố của nhà phát triển, ngữ cảnh nhiều khả năng là dịch vụ đám mây. [1] Việc tự lưu trữ không thừa hưởng chứng nhận đó; tổ chức chịu trách nhiệm về cấu hình, truy cập và tuân thủ pháp luật Việt Nam về dữ liệu cá nhân.

Giấy phép: MIT cho lõi, giấy phép riêng cho premium, enterprise và tài liệu

Tệp LICENSE ở thư mục gốc nêu: nội dung trong docs dùng CC BY-SA 4.0; nội dung trong premium dùng giấy phép trong premium/LICENSE; nội dung trong enterprise dùng enterprise/LICENSE; JavaScript phía máy khách theo MIT Expat; thành phần bên thứ ba giữ giấy phép gốc; phần còn lại là Baserow Open Source Edition theo MIT. [2] Điều này khác với trường giấy phép của GitHub API, vốn trả về giá trị chung chung và không phản ánh cấu trúc nhiều lớp này.

Hai tệp giấy phép con có nội dung gần giống nhau. Phần mềm chỉ được dùng trong sản xuất nếu có gói đăng ký hợp lệ cho đúng số người dùng và tuân thủ điều khoản dịch vụ. Được phép sao chép và sửa để phát triển, kiểm thử mà không cần đăng ký, nhưng bị cấm sao chép, hợp nhất, xuất bản, phân phối, cấp phép lại hoặc bán. [11][12]

Hệ quả thực tế: dùng bản OSE tự lưu trữ cho mục đích thương mại là được MIT cho phép, còn bật các mô-đun premium hoặc enterprise trong sản xuất cần mua gói. Giấy phép chỉ áp dụng cho mã tại commit đã khảo sát; không bao gồm dịch vụ đám mây, mô hình AI của nhà cung cấp bên thứ ba, hay phần mở rộng do bên khác viết. Còn một tệp LICENSE ở backend/src/advocate nằm trong danh sách tệp của kho; bài chưa đọc nội dung nên không kết luận về nó. Đây là phân tích kỹ thuật, không phải tư vấn pháp lý.

Chi phí: nhân sự, máy chủ và lượng gọi mô hình thay vì một con số

Bài không đưa giá cụ thể vì các tệp đã đọc không có bảng giá và giá có thể thay đổi. Thay vào đó là các loại nguồn lực cần dự toán. Nhóm đầu là con người: một người sở hữu thiết kế dữ liệu, một người phụ trách vận hành, và thời gian đào tạo nhân viên.

Nhóm thứ hai là hạ tầng. Theo tài liệu Docker, một máy chủ đơn đủ cho ảnh tất cả trong một, nhưng khi tách PostgreSQL và Redis thì cần quản lý thêm sao lưu, nâng cấp và giám sát. [7] Mỗi tiến trình Celery tốn bộ nhớ, và tài liệu cấu hình nói rõ có thể giảm số tiến trình để giảm bộ nhớ đổi lại hiệu năng. [8]

Nhóm thứ ba là gói thương mại nếu cần mô-đun premium hoặc enterprise, tính theo số người dùng theo giấy phép, mức giá phải hỏi trực tiếp nhà phát triển. [11][12] Nhóm cuối là chi phí gọi mô hình AI nếu dùng trường AI: tỷ lệ với số dòng được sinh và tần suất tự cập nhật, như đã phân tích ở mục luồng dữ liệu. [3]

Đặt Baserow cạnh bảng tính chia sẻ, Airtable, NocoDB và cơ sở dữ liệu tự dựng

So sánh dưới đây ở cấp độ cách tiếp cận, không dựa trên đo đạc. Bảng tính chia sẻ như Google Sheets hay Excel là phương án rẻ nhất và quen thuộc, nhưng yếu về ràng buộc dữ liệu và phân quyền chi tiết.

Airtable là dịch vụ đóng, trong khi README Baserow tự định vị là lựa chọn thay thế có thể tự lưu trữ và nhấn mạnh quyền sở hữu dữ liệu. [1] Đó là lời quảng bá của nhà phát triển; bài không đánh giá chức năng Airtable. NocoDB và các công cụ tương tự cũng đặt giao diện bảng lên cơ sở dữ liệu; cần so sánh giấy phép và mô hình thương mại của từng bên thay vì giả định giống nhau.

Phương án tự lập trình trên PostgreSQL với một ứng dụng web cho kiểm soát tối đa và dễ gắn ràng buộc kế toán, nhưng đòi hỏi đội kỹ sư thật sự. Baserow hợp lý ở giữa: đủ cấu trúc hơn bảng tính, ít chi phí phát triển hơn tự dựng.

Hạn chế và những trường hợp không nên dùng

Hạn chế đầu tiên là ranh giới giữa bản mở và bản trả phí. Nếu quy trình phụ thuộc vào tính năng nằm trong premium hoặc enterprise, chi phí và ràng buộc giấy phép sẽ xuất hiện ngay khi vào sản xuất. [11][12] Bài chưa xác minh từng tính năng cụ thể thuộc nhóm nào.

Hạn chế thứ hai là bằng chứng. Mọi nhận định ở đây dựa trên tài liệu và mã nguồn, chưa có kiểm thử tải, kiểm thử phân quyền hay thử nâng cấp. Tài liệu Docker còn ghi nhận những chỗ có thể gây rối khi nâng cấp, như thư mục dữ liệu PostgreSQL phiên bản cũ. [7]

Hạn chế thứ ba nằm ở ứng dụng: trường AI có thể sinh sai, và kết quả chọn từ danh sách dựa trên đối sánh gần đúng. [3] Không dùng kết quả đó để ra quyết định thuế hoặc pháp lý nếu không có người duyệt.

Không nên dùng Baserow làm hệ thống sổ cái, lưu hồ sơ cần chữ ký số có giá trị pháp lý, hoặc xử lý dữ liệu nhạy cảm khi chưa có kế hoạch sao lưu, kiểm soát truy cập và rà soát giấy phép.

Kế hoạch thử nghiệm sáu tuần với tiêu chí đo được

Tuần một và hai, dựng môi trường thử bằng Docker trên máy chủ riêng, dùng dữ liệu giả hoặc đã ẩn danh, và ghi lại mọi biến cấu hình được đổi. Tiêu chí xong giai đoạn: khởi động lại được từ bản sao lưu và nâng cấp thử một phiên bản mà không mất dữ liệu. [7]

Tuần ba và bốn, nhập hồ sơ của năm khách hàng mẫu, tạo bốn bảng liên kết, biểu mẫu thu chứng từ và webhook báo chat. Tiêu chí: ba kế toán thử dùng trọn một kỳ kê khai giả lập; tỷ lệ thao tác phải sửa lại hoặc hỏi người khác được ghi nhận để so sánh với cách làm cũ. Phép thử phân quyền: tài khoản nhân viên A không thấy được khách của nhân viên B qua giao diện lẫn API. [5]

Tuần năm, thử bảo mật cơ bản: webhook tới địa chỉ nội bộ bị chặn như cấu hình mặc định mô tả, và nhật ký không chứa mã bí mật. [8] Nếu dùng trường AI, chỉ dùng dữ liệu mẫu và đo tỷ lệ kết quả cần sửa tay.

Tuần sáu, ra quyết định. Điều kiện thoát: bỏ cuộc nếu phải dùng tính năng cần gói trả phí mà chưa có ngân sách, nếu phân quyền không đáp ứng, hoặc nếu thời gian vận hành vượt mức nhóm chấp nhận. Chỉ tiếp tục sang dữ liệu thật khi đã có phương án sao lưu và phục hồi được diễn tập.

Kết luận

Baserow đáng xem như một công cụ dựng cơ sở dữ liệu nghiệp vụ trên nền PostgreSQL, hợp với những nhóm muốn thoát khỏi mớ tệp bảng tính mà chưa đủ nguồn lực viết ứng dụng riêng. Điểm mạnh theo tài liệu là API, cập nhật thời gian thực qua WebSocket và tùy chọn tự lưu trữ. [1][9]

Điều cần thận trọng là cấu trúc open core: lõi MIT, còn premium và enterprise cần gói đăng ký khi chạy sản xuất. [2][11][12] Mọi kế hoạch cần bắt đầu bằng danh sách tính năng bắt buộc và kiểm tra từng tính năng thuộc lớp nào.

Với công ty kế toán trong kịch bản, hướng đi hợp lý là thử nhỏ, giữ phần sổ sách ở phần mềm chuyên dụng và đặt quy tắc rõ ràng cho dữ liệu gửi ra nhà cung cấp AI.

Nguồn và phương pháp

Đây là nghiên cứu bàn giấy (desk research), không phải công trình khoa học đã qua phản biện. Tác giả không cài đặt, chạy hay đo đạc Baserow; mọi nhận định dựa trên văn bản trong kho mã tại commit c38cdfd3c133536eb7214d6d51c54dfd4475737f, kiểm tra ngày 2026-10-12.

Dự án được chọn từ kho lưu trữ GitHub Trending: baserow/baserow xuất hiện một lần, ngày 2026-02-11, ở danh sách Python, vị trí 12. [13] Kho lưu trữ này chỉ phủ các danh sách Python, Go, JavaScript và Swift, thiếu hai ngày 2026-09-03 và 2026-10-12, và không phải bảng xếp hạng top 100 chính thức.

Các tệp đã đọc: README và LICENSE gốc [1][2], tài liệu kiến trúc trường AI [3], SECURITY.md [4], hướng dẫn rà soát bảo mật trong thư mục .agents [5], cùng năm tài liệu bổ sung về cấu trúc thư mục, cài đặt Docker, cấu hình, WebSocket API và replica đọc [6][7][8][9][10], và hai tệp giấy phép premium và enterprise [11][12]. Bản phát hành mới nhất lúc thu thập là 2.4.0, ngày 2026-09-30.

Xem mã nguồn Baserow trên GitHub

Khám phá nghiên cứu của BDSG Foundation

Trao đổi về ứng dụng công nghệ cho doanh nghiệp