Xa rời Silicon Valley, không dựa vào vốn đầu tư! Nhóm 18 người đã tạo ra cơ sở dữ liệu siêu nổi tiếng, CTO đã viết 150.000 dòng mã trong hơn 5 năm.
DuckDB: Một Hệ Thống Cơ Sở Dữ Liệu Đáng Kính Trọng
Bạn có thể không biết, nhưng có một dự án cơ sở dữ liệu được tải về hàng triệu lần mỗi tháng và lưu lượng tải xuống mở rộng hàng ngày lên tới hơn 4 TB. Trên các nền tảng GitHub và mạng xã hội, dự án này có hàng chục nghìn người theo dõi và còn có hai công ty khởi nghiệp xây dựng dựa trên nó.
Đây là sức sống và môi trường phát triển mà thường chỉ có các dự án cơ sở dữ liệu lưu trữ cột lớn hơn và lâu đời hơn mới đạt được. Tuy nhiên, dự án này chỉ mới ra mắt được hơn 5 năm. Mới đây, dự án này đã chính thức ra mắt phiên bản đầu tiên của mình – phiên bản 1.0.0, với biệt danh “Snow Duck” (anas nivis).
Đó chính là hệ thống cơ sở dữ liệu quan hệ phân tích DuckDB.
“Chúng tôi có thể đã ra mắt DuckDB 1.0.0 vào năm 2018, hoặc thậm chí là sau mười năm nữa. Không có thời điểm hoàn hảo nào cả, bởi vì phần mềm (ngoại trừ TeX) luôn có thể được cải tiến hơn,” Hannes Mühleisen, đồng sáng lập và là nhà phát triển hỗ trợ của DuckDB, cũng là người sáng lập công ty DuckDB Labs, cho biết.
Mühleisen giải thích rằng việc ra mắt phiên bản 1.0.0 là một bước ngoặt quan trọng đối với hệ thống quản lý dữ liệu, chứ không phải chỉ đơn thuần là một ứng dụng như đồng hồ cát.
Mühleisen nói thêm rằng, hệ thống quản lý dữ liệu, ngay cả khi là hệ thống phân tích thuần túy, cũng là một thành phần cốt lõi của bất kỳ ứng dụng nào. Vì vậy, luôn tồn tại một hợp đồng tín nhiệm ẩn giữa nhà phát triển và người dùng. Người dùng tin tưởng rằng cơ sở dữ liệu sẽ cung cấp kết quả truy vấn chính xác và không mất dữ liệu. Đồng thời, nhà phát triển cần nhận thức được trách nhiệm của mình và không được làm hỏng ứng dụng của người khác.

Phiên bản 1.0.0 của DuckDB đã trở thành một giải pháp cơ sở dữ liệu trưởng thành, cam kết sử dụng mô hình dữ liệu mới và tăng cường ổn định để cải thiện khả năng tương thích ngược.
Nhóm nghiên cứu đã thực hiện nhiều thay đổi, đảm bảo rằng hệ thống có thể tương thích ngược và đạt được mức độ tương thích ngược lên một mức độ nhất định ở định dạng lưu trữ. “Nếu bạn ghi dữ liệu vào cơ sở dữ liệu DuckDB, thì định dạng mới này đảm bảo rằng bạn có thể đọc lại tệp đó sau 10 năm. Đây là một sự thay đổi quan trọng,” Mühleisen nói.

“Kể từ khi viết dòng mã đầu tiên của dự án vào năm 2018, đã trôi qua gần sáu năm, trong thời gian đó đã xảy ra rất nhiều điều: hiện tại có hơn 300.000 dòng mã C++ của động cơ, hơn 42.000 lần commit và gần 4.000 vấn đề đã được đề xuất và đóng,” Mark Raasveldt, người sáng lập dự án và Hannes Mühleisen nhớ lại.

Giữa những năm 1980, khi Mühleisen bắt đầu làm việc tại Trung tâm toán học và tính toán lý thuyết Centrum Wiskunde & Informatica (CWI) ở Amsterdam, ông đã cùng với sinh viên tiến sĩ Mark Raasveldt tại CWI tạo ra DuckDB.
Mühleisen muốn tạo ra một hệ thống cơ sở dữ liệu phân tích có hiệu suất như một chiếc xe đua F1 nhưng dễ sử dụng như một chiếc Toyota Corolla. Khi ông và nhóm của mình bắt đầu xây dựng hệ thống này, DuckDB ra đời.
Dự án được đặt tên là “DuckDB”, bởi vì Mühleisen nghĩ rằng con vịt có khả năng thích nghi mạnh mẽ và có thể tồn tại bằng bất cứ thứ gì, giống như cách hệ thống cơ sở dữ liệu mà họ hình dung sẽ hoạt động. Ngoài ra, Mühleisen còn nuôi một con vịt tên là Wilbur, đây cũng là nguồn cảm hứng cho tên dự án.
Peter Boncz, người sáng lập Vectorwise, mặc dù không tham gia trực tiếp vào việc viết mã của DuckDB, nhưng ông đã đưa ra những lời khuyên và ý kiến giá trị cho nhóm sáng lập.
Nói chung, DuckDB đại diện cho một hệ thống quản lý dữ liệu lớn thông thường.
Các nhà phát triển của DuckDB đã không chọn cách lưu trữ dữ liệu phân tán để xử lý quy mô dữ liệu lớn, thay vào đó, họ đã dũng cảm chọn cách lưu trữ đơn giản.
Mühleisen, một nhà nghiên cứu cơ sở dữ liệu đã làm việc suốt đời trong lĩnh vực học thuật, không thích sự phức tạp và khó khăn mà các hệ thống quản lý dữ liệu lớn hiện đại mang lại cho khoa học dữ liệu và phân tích nâng cao.
“Chúng tôi sớm xác định rằng sẽ không sử dụng kiến trúc phân tán. Khi đó mọi người đều đang nói về việc phân phối các tập dữ liệu lên tới TB hoặc PB cho hàng ngàn nút. Nhưng thực tế, 99% người dùng chỉ sử dụng các tập dữ liệu nhỏ hơn nhiều. Nếu không cần chọn phân tán, trải nghiệm người dùng sẽ đơn giản hơn rất nhiều,” Mühleisen nói.
Nếu khách hàng của bạn đạt đến quy mô của Google, thì bạn chỉ có thể chọn kiến trúc phân tán và tất cả các giải pháp phức tạp đi kèm, ví dụ như MapReduce. Nhưng Mühleisen nhấn mạnh, “đối với hầu hết chúng ta, chúng tôi thường cần quan tâm đến dữ liệu ở quy mô PB. Thay vào đó, thường chỉ cần ‘có một tập dữ liệu phiền phức, tôi muốn đọc nội dung và thực hiện một số phép tổng hợp.'”
Một đặc điểm khác của DuckDB là trung thành với SQL truyền thống. Mặc dù phong trào NoSQL vẫn đang phát triển và nhiều người muốn sử dụng Python và khung dữ liệu để truy vấn dữ liệu, Mühleisen và nhóm của ông nhận ra rằng SQL không có khuyết điểm thực sự và không cần bị thay thế.
“Chúng tôi đã nghe rất nhiều lần rằng SQL sắp chết, nhiều đến nỗi tôi không thể đếm nổi. Nhưng chúng tôi vẫn quyết định sử dụng SQL, và thực tế đã chứng minh rằng đây là một ý tưởng tốt, vì cộng đồng sử dụng SQL rất rộng lớn,” Mühleisen nói.
Tương tự như các hệ thống cơ sở dữ liệu OLAP khác, DuckDB sử dụng lưu trữ theo cột (để tối ưu hóa tổng hợp) và xử lý vectơ (để tăng cường hiệu suất), nhằm thực hiện truy vấn SQL với tốc độ cực nhanh. Tuy nhiên, khác với các hệ thống lưu trữ dữ liệu như Teradata hoặc Redshift, DuckDB không phù hợp để lưu trữ tất cả dữ liệu để tạo ra “nguồn sự thật duy nhất”.
Trái với các hệ thống OLAP khác, DuckDB hướng tới phân tích nhúng, thay vì là một hệ thống kho dữ liệu quen thuộc.
DuckDB nhỏ gọn, chỉ khoảng 50 MB, có thể chạy trên nhiều hệ điều hành khác nhau (Linux, Windows, v.v.) và cung cấp nhiều gói phần mềm, bao gồm Python, R và JavaScript.
Jordan Tigani, một kỹ sư cũ của Google BigQuery, đã chỉ ra rằng DuckDB được thiết kế để phản ánh xu hướng mở rộng đám mây của kho dữ liệu và chú trọng đến hiệu suất của máy tính xách tay cao cấp. Tigani, một fan hâm mộ nhiệt tình của DuckDB, đã cùng người khác thành lập công ty MotherDuck, chuyên cung cấp mở rộng backend cho DuckDB.
Một kỹ năng độc đáo khác của DuckDB là khả năng phân tích hiệu suất cao và chuyển đổi tệp với tài nguyên hạn chế.
DuckDB được thiết kế để phục vụ phân tích, không phải xử lý giao dịch. Bạn không thể xử lý hàng triệu dòng dữ liệu mỗi giây như trong cơ sở dữ liệu Postgres, nhưng nếu bạn cần đọc hàng tỷ dòng dữ liệu mỗi giây, DuckDB chính là lựa chọn phù hợp.
DuckDB thực sự có lợi thế về hiệu suất phân tích. Hệ thống này thường có thể thay thế một cụm Spark nhỏ gồm 10 nút bằng một nút duy nhất. Tương tự, khi bạn “đưa quá nhiều dòng dữ liệu vào” Pandas, chi phí hoạt động nặng nề cũng thường làm nổi bật ưu điểm nhẹ nhàng của DuckDB.
“Chúng tôi đôi khi tự gọi mình là SQLite phân tích. Về cơ bản, chúng tôi có thể đã phát minh ra một loại hệ thống mới… ý tưởng cơ bản là không cần một máy chủ cơ sở dữ liệu riêng biệt, chỉ cần dán DuckDB vào ứng dụng hiện có của bạn, và nó sẽ thực hiện phân tích,” Mühleisen nói. Ví dụ, khi được kết nối với bảng điều khiển, cơ sở dữ liệu C++ này có thể cung cấp phản hồi theo giây trên bảng điều khiển.
Mühleisen cho biết, “Giá trị của DuckDB đối với khách hàng là khả năng chạy ở bất kỳ nơi nào bạn cần nó, đưa xử lý truy vấn càng gần người dùng càng tốt, từ đó mang lại lợi ích đáng kể cho trải nghiệm người dùng.”
Nếu bạn cần một hệ thống giao dịch trong quá trình, Mühleisen khuyên bạn nên xem xét SQLite. Ngược lại, nếu người dùng SQLite cần chức năng phân tích, Mühleisen khuyên bạn nên thử DuckDB.
Nhóm kỹ sư của DuckDB Labs nằm ở Amsterdam, xa khỏi trung tâm luôn nhộn nhịp của Silicon Valley.
Tuy nhiên, đừng nhầm lẫn rằng Amsterdam thiếu công nghệ – Trung tâm Toán học và Khoa học Máy tính Amsterdam là nơi phát triển ngôn ngữ lập trình Python phổ biến toàn cầu. Mühleisen thừa nhận rằng việc đi theo con đường riêng của mình đã trở thành một lợi thế độc đáo của DuckDB.
“Tôi nghĩ điều này cho phép chúng tôi đưa ra những lựa chọn và kết quả không theo quy tắc. Nếu chúng tôi ở San Francisco, chúng tôi sẽ không có tự do như vậy. Bây giờ chúng tôi có thể bỏ qua những thông lệ thương mại, làm những điều chúng tôi cho là đúng và thực sự thành công,” ông nói.
Ngoài ra, công ty này đã từ chối mọi khoản đầu tư mạo hiểm.
Công ty khởi nghiệp thứ hai của DuckDB, MotherDuck có trụ sở tại Seattle, Washington, đã phát triển phiên bản không server của DuckDB và nhận được sự hỗ trợ từ Mühleisen và Mark Raasveldt, đồng sáng lập và CTO của DuckDB Labs. Mặc dù công ty này đã huy động được 52,5 triệu đô la và dự kiến sẽ đạt giá trị 4 tỷ đô la vào mùa thu này, nhưng DuckDB Labs chưa nhận được bất kỳ khoản đầu tư bên ngoài nào.
Công ty DuckDB Labs, nơi tuyển dụng các nhà phát triển cốt lõi của DuckDB, chưa bao giờ nhận được bất kỳ khoản đầu tư ngoại vi nào, do đó công ty này hoàn toàn thuộc sở hữu của đội ngũ. Cách tiếp cận này cũng đã nhận được sự hoan nghênh từ cộng đồng, “dường như đây là cấu trúc tuyệt vời để bảo vệ các dự án mã nguồn mở trong dài hạn,” một người dùng đã bình luận.
Các nhà đầu tư mạo hiểm chắc chắn đã đưa ra lời mời. Mühleisen thừa nhận, “Chúng tôi đã thu hút được sự quan tâm của nhiều công ty mạo hiểm, họ đều muốn gặp chúng tôi. Ví dụ, Andreessen, Sequoia, nhưng cuối cùng chúng tôi đã từ chối tất cả các lời mời từ các công ty mạo hiểm.”
Quá trình này không hề đơn giản. Ý tưởng của ông “chỉ là một nhà cung cấp công nghệ” đã không gây được tiếng vang, và sau đó Mühleisen đã nhận ra rằng ông muốn có sự mở cửa và linh hoạt hơn, không bị giới hạn trong một lĩnh vực ứng dụng cụ thể.
Hiện tại, mô hình kinh doanh của phòng thí nghiệm là cung cấp tư vấn và hỗ trợ cho DuckDB, và nhóm cho biết cách tiếp cận này đang tiến triển tốt. Thông qua doanh thu từ hợp đồng, DuckDB Labs cung cấp tài chính dài hạn và chiến lược cho việc phát triển DuckDB cho nhóm 18 người. Đồng thời, quyền sở hữu trí tuệ của dự án được giữ bởi Quỹ DuckDB độc lập, một tổ chức phi lợi nhuận đảm bảo rằng DuckDB sẽ tồn tại dưới giấy phép MIT trong dài hạn.

Nhóm nhân viên của DuckDB Labs
Có tin đồn rằng CTO Mark của DuckDB Labs là lập trình viên chính, 50% mã nguồn là do anh viết, và còn có 13 lập trình viên khác, 1 thực tập sinh kiểm thử, 1 người phụ trách hệ sinh thái nhà phát triển, và 1 người phụ trách đào tạo và tài liệu.
“Tôi đã đặt cược lớn vào DuckDB gần đây. Tôi đã thêm nó vào cốt lõi của trình chỉnh sửa SQL miễn phí qStudio. Hiện tại trong trình chỉnh sửa, bạn có thể lưu bất kỳ bảng nào từ cơ sở dữ liệu vào phiên bản DuckDB cục bộ, thậm chí kết nối giữa các máy chủ khác nhau,” một người dùng đã chia sẻ.
Với việc DuckDB đang được triển khai trên toàn cầu, lá cờ độc đáo này ngày càng trở nên rõ ràng. Mühleisen cho biết, sự phổ biến của dự án chủ yếu dựa trên sự tán thưởng của người dùng đối với các ý tưởng thiết kế độc đáo của DuckDB.
“Tôi nghĩ yếu tố thúc đẩy thành công khác, đó là lĩnh vực này chưa được lấp đầy và chiếm lĩnh bởi các giải pháp kỹ thuật. Thị trường cơ sở dữ liệu không quá chật chội, và tôi nghĩ chúng tôi đã đưa ra sự cân nhắc khôn ngoan nhất – không thỏa hiệp, tạo ra sản phẩm theo cách mới mẻ và hấp dẫn,” ông nói.
Theo Mühleisen, NASA đang đưa DuckDB vào một số ứng dụng cụ thể (nhưng chưa được công bố), và FiveTran cũng đã đưa nó vào quy trình phát triển của dự án Apache Iceberg.
Sự nổi tiếng của DuckDB đối với Mühleisen quả thực là một trải nghiệm thú vị. Cho đến nay, sự nghiệp của ông luôn “đơn điệu”, chỉ là một nhà nghiên cứu cơ sở dữ liệu chân chất. “Những điều này thật điên rồ. Ai có thể tưởng tượng rằng tác phẩm của mình lại được yêu thích và phổ biến đến vậy?”
Từ khóa:
- Hệ thống quản lý dữ liệu
- Cơ sở dữ liệu phân tích
- SQL
- Phân tích hiệu suất
- MIT License
© Thông báo bản quyền
Bản quyền bài viết thuộc về tác giả, vui lòng không sao chép khi chưa được phép.
Những bài viết liên quan:
Không có đánh giá...