Giới Thiệu
DuckDB đang nhanh chóng trở thành một trong những cơ sở dữ liệu phân tích được bàn luận nhiều nhất hiện nay. Nó nhanh chóng, nhẹ và được thiết kế để chạy bên trong các ứng dụng của bạn, thường được mô tả như SQLite cho phân tích. Trong khi nó hoạt động rất tốt trên laptop cho việc phân tích cục bộ, các quy trình làm việc sản xuất cần một cái gì đó quy mô hơn.
Đó là lúc MotherDuck xuất hiện. MotherDuck mang sức mạnh của DuckDB lên đám mây. Nó bổ sung các tính năng hợp tác, lưu trữ an toàn và mô hình không máy chủ cho phép các nhóm sử dụng DuckDB ở quy mô lớn mà không phải lo lắng về hạ tầng.
Trong hướng dẫn này, bạn sẽ học cách truyền dữ liệu từ một hệ thống OLTP vào MotherDuck bằng cách sử dụng Estuary Flow. Cách tiếp cận này cho phép bạn thực hiện các truy vấn phân tích trên dữ liệu mới mà không đặt thêm tải lên cơ sở dữ liệu sản xuất của bạn.
🎥 Bạn thích xem hơn là đọc? Hãy xem video hướng dẫn ngắn dưới đây.
Tại Sao DuckDB Đang Được Nhiều Người Quan Tâm
DuckDB là một cơ sở dữ liệu phân tích mã nguồn mở được thiết kế với một mục tiêu rõ ràng: làm cho các truy vấn phức tạp trở nên nhanh chóng và đơn giản mà không cần hạ tầng nặng nề. Thay vì là một cơ sở dữ liệu truyền thống client-server, DuckDB được nhúng. Nó chạy bên trong quá trình chủ, điều này giảm bớt chi phí và dễ dàng tích hợp trực tiếp vào các ứng dụng, notebook hoặc script.
Một số tính năng nổi bật:
- Hoạt động trong quá trình: Tương tự như SQLite, DuckDB chạy nơi mã của bạn chạy. Điều này tránh các cuộc gọi mạng và cung cấp cho bạn quyền truy cập dữ liệu với độ trễ thấp.
- Thực thi theo cột và vector: DuckDB được tối ưu hóa cho các truy vấn phân tích. Mô hình thực thi của nó tăng tốc độ các hoạt động nặng như tổng hợp, lọc và kết nối trên các bảng lớn.
- Tính di động và khả năng mở rộng: Nó có kích thước rất nhỏ và không có phụ thuộc bên ngoài. Đồng thời, các tiện ích mở rộng hỗ trợ các loại dữ liệu và định dạng tệp nâng cao, bao gồm Parquet, JSON và dữ liệu không gian địa lý.
- Truy cập tệp liền mạch: DuckDB có thể truy vấn các tệp cục bộ trực tiếp mà không cần một đường ống ETL. Ví dụ, bạn có thể chạy các truy vấn SQL trên các tệp CSV hoặc Parquet ngay từ đĩa.
- Tích hợp với các công cụ khoa học dữ liệu: DuckDB kết nối mượt mà với Python, R và Jupyter notebooks, điều này khiến nó trở thành lựa chọn yêu thích của các nhà khoa học dữ liệu. Nhờ vào sự kết hợp giữa tốc độ, tính linh hoạt và sự đơn giản, DuckDB ngày càng được sử dụng như một lớp phân tích trong các đường ống dữ liệu hiện đại, cũng như cho việc phân tích theo yêu cầu bởi các kỹ sư và nhà phân tích.
MotherDuck: DuckDB Trên Đám Mây
DuckDB rất tuyệt cho việc phân tích cục bộ, nhưng các môi trường sản xuất thường đòi hỏi nhiều hơn một cơ sở dữ liệu nhúng cục bộ. Các nhóm cần sự hợp tác, an ninh và khả năng mở rộng. Đó là lý do MotherDuck xuất hiện.
MotherDuck là một dịch vụ đám mây được quản lý xây dựng trên DuckDB. Nó mở rộng cùng một động cơ truy vấn nhanh và nhẹ vào một môi trường không máy chủ trong khi bổ sung các tính năng làm cho nó thực tế cho các tổ chức:
- Kiến trúc không máy chủ: Không cần quản lý máy chủ và không có chi phí hạ tầng. MotherDuck tự động mở rộng cùng với khối lượng công việc của bạn.
- Hợp tác: Chia sẻ truy vấn, kết quả và tập dữ liệu với đồng đội trong thời gian thực. Điều này làm cho các nhóm dễ dàng làm việc từ cùng một nguồn thông tin.
- Lưu trữ bí mật an toàn: Quản lý thông tin đăng nhập và kết nối một cách an toàn trên đám mây.
- Tích hợp với các đường ống: Các nền tảng như Estuary có thể ghi trực tiếp vào MotherDuck, điều này có nghĩa là dữ liệu của bạn luôn mới và sẵn sàng cho phân tích. Trên thực tế, MotherDuck mang lại cho các nhóm sự kết hợp tốt nhất của cả hai thế giới: hiệu suất và sự đơn giản của DuckDB kết hợp với khả năng mở rộng và tính dễ sử dụng của một dịch vụ đám mây hiện đại.
OLTP → OLAP: Trường Hợp Sử Dụng Cốt Lõi
Hầu hết các ứng dụng sản xuất chạy trên các cơ sở dữ liệu OLTP như PostgreSQL, MySQL hoặc MongoDB. Những hệ thống này được thiết kế cho các thao tác chèn, cập nhật và xóa nhanh chóng. Chúng giữ cho ứng dụng phản hồi nhưng không được tối ưu hóa để chạy các truy vấn phân tích nặng.
Việc thực hiện các tổng hợp, kết nối hoặc báo cáo trực tiếp trên cơ sở dữ liệu OLTP có thể:
- Làm chậm hiệu suất ứng dụng của bạn.
- Tăng rủi ro vận hành bằng cách thêm tải lên môi trường sản xuất của bạn.
- Giới hạn khả năng của các nhà phân tích và nhà khoa học dữ liệu trong việc khám phá dữ liệu tự do.
Đó là lý do tại sao các tổ chức tách biệt các hệ thống OLTP (giao dịch) với các hệ thống OLAP (phân tích). Cơ sở dữ liệu OLTP xử lý các giao dịch hàng ngày, trong khi cơ sở dữ liệu OLAP được dành riêng cho các truy vấn phức tạp và báo cáo.
DuckDB, và bằng cách mở rộng là MotherDuck, hoàn toàn phù hợp như một lớp OLAP. Với Estuary Flow, bạn có thể ghi lại các thay đổi theo thời gian thực từ nguồn OLTP của bạn và truyền chúng vào MotherDuck. Bằng cách này, các nhà phân tích luôn có dữ liệu cập nhật để truy vấn mà không phải chạm vào cơ sở dữ liệu sản xuất.
Thiết Lập Estuary Với MotherDuck
Trong phần này, chúng ta sẽ đi qua quy trình kết nối nguồn OLTP của bạn với MotherDuck bằng cách sử dụng Estuary Flow. Việc thiết lập rất đơn giản và chỉ mất một vài bước.
Bước 1: Chuẩn Bị Nguồn Của Bạn Trong Estuary
Trước khi bạn có thể gửi dữ liệu đến MotherDuck, bạn cần một hệ thống nguồn được kết nối trong Estuary. Một nguồn có thể là bất kỳ cơ sở dữ liệu OLTP nào như PostgreSQL, MySQL hoặc MongoDB. Estuary cũng hỗ trợ các ứng dụng SaaS, luồng sự kiện và các nguồn dựa trên tệp.
Để chuẩn bị một nguồn:
- Đi đến tab Captures trong bảng điều khiển Estuary.
- Tạo một capture mới và chọn trình kết nối cho hệ thống nguồn của bạn.
- Cung cấp các chi tiết kết nối (ví dụ, máy chủ, cổng, tên cơ sở dữ liệu và thông tin đăng nhập).
- Lưu và xuất bản capture.
Khi điều này hoàn tất, Estuary bắt đầu thu thập dữ liệu từ nguồn của bạn và liên tục theo dõi các thay đổi mới. Dòng dữ liệu này được lưu trữ trong một bộ sưu tập nội bộ, mà bạn sẽ kết nối sau với MotherDuck.
Lời khuyên: Nếu bạn mới làm quen với Estuary, hãy thử bắt đầu với một tập dữ liệu đơn giản (như PostgreSQL hoặc một tệp CSV) trước khi chuyển sang các nguồn quy mô sản xuất.
Bước 2: Tạo Một Materialization Trong MotherDuck
Với việc capture nguồn của bạn đang hoạt động, bước tiếp theo là thiết lập MotherDuck làm điểm đến cho dữ liệu của bạn. Trong Estuary, điều này được gọi là materialization.
Để tạo một cái:
- Đi đến tab Destinations trong bảng điều khiển Estuary.
- Nhấn New Materialization.
- Tìm kiếm MotherDuck trong danh mục trình kết nối và chọn nó.
- Đặt một tên mô tả cho materialization để bạn có thể dễ dàng nhận diện nó sau này.
Tại thời điểm này, bạn sẽ thấy màn hình cấu hình cho trình kết nối MotherDuck. Đây là nơi bạn cung cấp các thông tin cho phép Estuary chuẩn bị dữ liệu và gửi nó vào cơ sở dữ liệu MotherDuck của bạn.
Trong bước tiếp theo, bạn sẽ cấu hình AWS S3 staging, mà Estuary sử dụng làm địa điểm lưu trữ tạm thời cho các khối dữ liệu.
Bước 3: Cấu Hình AWS S3 Staging
Trình kết nối MotherDuck trong Estuary sử dụng một bucket Amazon S3 làm khu vực staging. Dữ liệu trước tiên được ghi vào S3, sau đó được tải vào MotherDuck. Thiết kế này đảm bảo độ tin cậy cao và khả năng mở rộng cho các tập dữ liệu lớn.
Đây là những gì bạn cần thiết lập:
-
Tạo hoặc chọn một bucket S3
- Ghi nhớ tên bucket và vùng của nó.
- Tùy chọn, bạn có thể định nghĩa một tiền tố nếu bạn muốn Estuary tổ chức các tệp đã lưu trữ dưới một thư mục cụ thể.
-
Thiết lập quyền IAM
- Tạo hoặc sử dụng một người dùng IAM có quyền đọc và ghi vào bucket S3.
- Gắn một chính sách với ít nhất các hành động sau:
s3:PutObjects3:GetObjects3:ListBucket
-
Tạo khóa truy cập
- Trong bảng điều khiển AWS, đi đến tab Security Credentials của người dùng IAM.
- Tạo một khóa truy cập và khóa bí mật.
- Sao chép các giá trị này vào bảng điều khiển Estuary khi cấu hình trình kết nối MotherDuck.
Tại thời điểm này, Estuary biết nơi để staging dữ liệu và có quyền cần thiết để ghi vào bucket S3 của bạn.
Lời khuyên: Đối với sản xuất, tránh sử dụng tài khoản root. Luôn tạo khóa truy cập từ một người dùng IAM với quyền tối thiểu cần thiết.
Bước 4: Thiết Lập MotherDuck
Bây giờ mà AWS S3 staging đã sẵn sàng, đã đến lúc cấu hình phần MotherDuck của kết nối. Bước này đảm bảo MotherDuck có thể kéo dữ liệu đã staging vào cơ sở dữ liệu mà bạn đã chọn.
-
Tạo một mã thông báo truy cập
- Đăng nhập vào tài khoản MotherDuck của bạn.
- Mở menu Settings và đi đến Access Tokens.
- Tạo một mã thông báo mới và sao chép nó vào cấu hình trình kết nối Estuary.
-
Cung cấp thông tin đăng nhập AWS cho MotherDuck
- MotherDuck cần quyền để đọc các tệp đã staging từ bucket S3 của bạn.
- Bạn có thể cung cấp các thông tin này bằng cách:
a. Thực hiện các câu lệnh SQL bên trong MotherDuck:
CREATE SECRET aws_access_key '<ACCESS_KEY>'; CREATE SECRET aws_secret_key '<SECRET_KEY>';b. Hoặc nhập chúng thông qua giao diện người dùng của MotherDuck.
-
Chọn cơ sở dữ liệu mục tiêu
- Chọn một cơ sở dữ liệu đã tồn tại trong tài khoản MotherDuck của bạn, hoặc tạo một cái mới.
- Sao chép tên của nó vào cấu hình Estuary.
-
Quyết định về hành vi xóa
- Xóa mềm: Đánh dấu một bản ghi là đã xóa nhưng giữ nó trong bảng để phân tích lịch sử.
- Xóa cứng: Xóa hoàn toàn bản ghi.
- Chọn tùy chọn phù hợp nhất với nhu cầu phân tích hoặc tuân thủ của bạn.
Bước 5: Xuất Bản Và Truyền Dữ Liệu
Khi materialization của bạn trong MotherDuck được cấu hình, bước cuối cùng là xuất bản nó và bắt đầu dòng dữ liệu.
-
Chọn dữ liệu nguồn của bạn
- Liên kết một capture hoàn toàn (ví dụ, cơ sở dữ liệu PostgreSQL của bạn)
- Hoặc chọn các bộ sưu tập cụ thể mà bạn muốn sao chép.
-
Xem lại cấu hình
- Kiểm tra lại rằng thông tin đăng nhập S3, mã thông báo MotherDuck và tên cơ sở dữ liệu của bạn là chính xác.
- Đảm bảo bạn đã chọn đúng hành vi xóa (mềm hoặc cứng).
-
Lưu và xuất bản
- Nhấn Next, sau đó Save & Publish.
- Estuary Flow sẽ ngay lập tức bắt đầu truyền dữ liệu từ nguồn OLTP của bạn vào MotherDuck.
Từ đây, các cập nhật dữ liệu trong nguồn của bạn sẽ chảy liên tục vào cơ sở dữ liệu MotherDuck của bạn. Điều này mang lại cho bạn một môi trường OLAP gần như theo thời gian thực cho phân tích, mà không thêm tải lên hệ thống sản xuất của bạn.
Bước 6: Thực Hiện Truy Vấn Trong MotherDuck
Với trình kết nối đã được xuất bản, dữ liệu của bạn bây giờ đang chảy vào MotherDuck. Bước cuối cùng là bắt đầu khám phá nó.
- Mở bảng điều khiển MotherDuck và đi đến Notebooks.
- Chọn cơ sở dữ liệu mà bạn đã cấu hình làm điểm đến.
- Thực hiện các truy vấn bằng cú pháp SQL quen thuộc của DuckDB.
Ví dụ, nếu bạn đã sao chép một bảng orders từ cơ sở dữ liệu OLTP của bạn, bạn có thể phân tích khách hàng hàng đầu như sau:
SELECT customer_id, COUNT(*) AS order_count
FROM orders
GROUP BY customer_id
ORDER BY order_count DESC
LIMIT 10;
Kết Luận
Bằng cách kết hợp Estuary Flow và MotherDuck, bạn có thể xây dựng một đường ống hiện đại giữ cho phân tích tách biệt khỏi khối lượng công việc sản xuất mà không thêm phức tạp.
- Estuary thu thập các thay đổi theo thời gian thực từ các cơ sở dữ liệu OLTP của bạn.
- Dữ liệu được staging trong S3 để đảm bảo độ tin cậy.
- MotherDuck cung cấp một môi trường DuckDB trên đám mây nơi nhóm của bạn có thể truy vấn và hợp tác.
Thiết lập này nhanh chóng được cấu hình, dễ bảo trì và mở rộng theo nhu cầu của bạn. Thay vì quản lý các công việc theo lô hoặc viết các script tùy chỉnh, bạn có thể tập trung vào phân tích và thông tin chi tiết.
✅ Những Điểm Chính
- DuckDB nhẹ và mạnh mẽ cho phân tích, trong khi MotherDuck đưa nó lên đám mây để hợp tác và khả năng mở rộng.
- Estuary Flow làm cho việc truyền dữ liệu từ các hệ thống OLTP vào MotherDuck trở nên đơn giản theo thời gian thực.
- AWS S3 được sử dụng như một lớp staging, yêu cầu quyền và thông tin đăng nhập IAM.
- Khi đã xuất bản, bạn có thể truy vấn dữ liệu mới trong các notebook của MotherDuck bằng SQL của DuckDB.
👉 Bạn đã sẵn sàng thử nghiệm chưa? Khám phá Estuary Flow và xem bạn có thể bắt đầu truyền dữ liệu vào MotherDuck nhanh như thế nào.