Tham gia bản thử Hanzo và được giảm 50% mọi gói trả phí

Ra mắt Hanzo Datastore: công cụ OLAP dạng cột sẵn sàng cho thời hậu lượng tử

Kho cột dẫn xuất từ ClickHouse, dựng lại quanh việc tách lưu trữ khỏi tính toán trên Hanzo S3, được tối ưu theo hồ sơ và theo thời điểm liên kết để còn khoảng một nửa bộ nhớ, đã gỡ gRPC, với đường tới điều phối hậu lượng tử không nút chủ.

Trong trang này

Hôm nay chúng tôi phát hành Hanzo Datastore — nửa OLAP của nền tảng dữ liệu Hanzo. Đây là một nhánh của ClickHouse 26.6, đã gỡ thương hiệu và dựng lại theo cách chúng tôi thực sự chạy phân tích: lưu trữ tách khỏi tính toán trên Hanzo S3, một tệp nhị phân đã tối ưu và gọn hơn, cùng bề mặt RPC cũ đã được gỡ. Image đã lên tại ghcr.io/hanzoai/datastore:26.6.1.1.

Chúng tôi không viết một cơ sở dữ liệu mới. ClickHouse là công cụ cột tốt nhất thế giới và chúng tôi đứng trên nền đó. Phần chúng tôi đổi là những phần quan trọng khi vận hành một đội máy: nền lưu trữ, bản dựng, tầng vận chuyển, và lộ trình điều phối.

Lưu trữ và tính toán, tách riêng

Các part của bảng MergeTree là đối tượng bất biến. Datastore lưu chúng thành đối tượng trên Hanzo S3 — lớp lưu trữ dẫn xuất từ SeaweedFS của chúng tôi — thay vì trên đĩa cục bộ gắn chết vào một máy. Các bản sao tính toán không trạng thái sau đó dùng chung một bản vật lý của dữ liệu qua nhân bản không sao chép.

Điều này đã được chứng minh, không phải tham vọng. Trong bài kiểm tra mở rộng của chúng tôi, một bảng 5 triệu dòng có chính sách lưu trữ hướng tới S3 báo đĩa seaweed trong system.parts, và hai nút tính toán mở rộng trên bản sao duy nhất đó. Thêm một bên đọc không sao chép dữ liệu; nó gắn vào dữ liệu. Đó là tính chất bạn muốn khi tải phân tích tăng vọt và bạn cần thêm năng lực truy vấn trong vài giây mà không xếp lại hàng terabyte.

-- parts live on S3, not on a node's local disk
SELECT name, disk_name FROM system.parts WHERE table = 'events' LIMIT 1;
-- ┌─name──────┬─disk_name─┐
-- │ all_1_1_0 │ seaweed   │
-- └───────────┴───────────┘

Một nửa bộ nhớ, tệp nhị phân nhỏ hơn

Bản dựng phát hành chạy tối ưu theo hồ sơ, tối ưu thời điểm liên kết dạng mỏng, và một lượt BOLT sau liên kết. Kết quả là khoảng một nửa bộ nhớ thường trú so với bản dựng gốc và một tệp nhị phân nhỏ hơn rõ rệt. Để BOLT chạy được trên aarch64, phải tắt instrumentation của XRay, vốn mặc định bật và âm thầm chặn bước viết lại sau liên kết — bản sửa đó nằm trong cây nguồn. Hệ quả thực tế: cùng một kế hoạch truy vấn, ít gigabyte hơn, và tệp nhị phân khởi động nhanh hơn.

gRPC đã biến mất

Một kho dữ liệu nên có đúng một đường truy vấn, không phải ba. Chúng tôi gỡ toàn bộ máy chủ gRPC — không contrib/grpc, không định nghĩa dịch vụ protobuf, không đường dựng ENABLE_GRPC — và trong cùng lượt đó xóa khối <grpc> đã chết khỏi cấu hình mặc định để sản phẩm giao đi khớp với bản dựng. Datastore nói TCP gốc (9000), HTTP (8123), và nhân bản giữa các máy chủ (9009). Đó là toàn bộ bề mặt.

Tầng vận chuyển hướng tới là ZAP, RPC dẫn xuất từ Cap'n Proto của chúng tôi. Phần stub của máy chủ đã vào cây; nó chưa phải đường truy vấn đang chạy. Chúng tôi thà nói rõ đường đó đang ở đâu còn hơn ngụ ý rằng nó đã xong.

Điều phối đang đi về đâu

Bảng Replicated* hôm nay điều phối qua Raft nhúng, Keeper tương thích ZooKeeper được giao ngay trong tiến trình máy chủ — không daemon riêng. Cách đó chạy được, và đó là thứ bạn đang dùng trên production.

Hướng đi là thay backend Raft đó bằng Quasar, đồng thuận không nút chủ và hậu lượng tử từ Lux, liên kết gốc vào máy chủ C++. Mối nối là thật: một chương trình C++ đã điều khiển công cụ đồng thuận gốc qua C ABI — mở một chuỗi, nối một mục nhật ký nhân bản, đẩy phiếu tin cậy, quan sát tính chung cuộc — không Raft và không bộ máy zero-knowledge. Đó là bằng chứng rằng việc đổi này là bài toán liên kết, không phải viết lại. Nó chưa phải lớp điều phối production, và chúng tôi sẽ không giả bộ điều ngược lại.

Nửa còn lại

Datastore là OLAP. Nửa OLTP của nền tảng là một công cụ SQL phi tập trung xây trên SQLite/Base — đã thiết kế, đang được xây, chưa giao. Nếu hôm nay bạn muốn câu chuyện dữ liệu ưu tiên cục bộ, trong một tệp, dòng đó đã hiện trong Hanzo Brain, và nền lưu trữ mà cả hai nửa chạy trên là nền chúng tôi ra mắt trong Hanzo Storage.

Chạy nó

docker run -d --name datastore \
  -p 8123:8123 -p 9000:9000 \
  ghcr.io/hanzoai/datastore:26.6.1.1

Image arm64 đã phát hành; bản dựng amd64 theo sau qua CI. Đây là backend phân tích và insight mà chính chúng tôi đang chạy — hãy trỏ sự kiện của bạn vào đó và truy vấn lại với tốc độ cột.

Bình luận

Đăng nhập bằng Hanzo ID để bình luận.

Đang tải bình luận…

Đọc tiếp