Phát triển kiểu dữ liệu JSON mạnh mẽ mới cho ClickHouse
(clickhouse.com)Giới thiệu
- JSON đã trở thành định dạng tiêu chuẩn để xử lý dữ liệu bán cấu trúc và phi cấu trúc trong các hệ thống dữ liệu hiện đại.
- ClickHouse nhận thức được tầm quan trọng của JSON và đã giải quyết một số thách thức trong việc sử dụng JSON hiệu quả ở quy mô lớn.
Thách thức
-
Thách thức 1: Lưu trữ thực sự theo hướng cột
Để xử lý dữ liệu JSON hiệu quả như các kiểu cột khác, cần lưu trữ các đường dẫn JSON theo cách hướng cột. -
Thách thức 2: Dữ liệu thay đổi động và vấn đề tích hợp kiểu
Cần duy trì tính toàn vẹn dữ liệu bằng cách cho phép lưu trữ các kiểu dữ liệu khác nhau cho các đường dẫn JSON. -
Thách thức 3: Ngăn chặn sự bùng nổ số lượng tệp dữ liệu cột trên đĩa
Khi có nhiều khóa JSON duy nhất, cần đặt giới hạn cho việc tạo cột để tránh số lượng tệp cột tăng bùng nổ. -
Thách thức 4: Lưu trữ dày đặc
Khi có nhiều khóa JSON duy nhất nhưng hiếm gặp, cần tránh lưu trữ lặp lại các giá trị NULL hoặc giá trị mặc định.
Kiểu dữ liệu JSON mới
- ClickHouse giới thiệu một kiểu dữ liệu JSON mới để xử lý JSON hiệu năng cao.
- Kiểu này hỗ trợ dữ liệu thay đổi động, đồng thời duy trì mức nén dữ liệu cao và hiệu năng truy vấn tốt.
- Có thể điều chỉnh hiệu năng bằng cách cung cấp gợi ý cho việc phân tích cú pháp JSON.
Khối xây dựng 1 - Kiểu Variant
- Kiểu Variant cho phép lưu trữ hiệu quả các giá trị có kiểu dữ liệu khác nhau trong cùng một cột của bảng.
- Với mỗi kiểu dữ liệu, một cột con riêng biệt được sử dụng để duy trì tính toàn vẹn dữ liệu.
Khối xây dựng 2 - Kiểu Dynamic
- Kiểu Dynamic mở rộng kiểu Variant để có thể lưu trữ nhiều kiểu dữ liệu khác nhau mà không cần chỉ định kiểu trước.
- Giới hạn số lượng kiểu được lưu trữ để ngăn sự bùng nổ của các tệp cột.
Kiểu JSON của ClickHouse
- Dựa trên các kiểu Variant và Dynamic, kiểu JSON mới được triển khai để giải quyết mọi thách thức.
- Có thể lưu trữ bất kể cấu trúc của đối tượng JSON và đọc giá trị bằng cách dùng các đường dẫn JSON làm cột con.
Tóm tắt của GN⁺
- Kiểu dữ liệu JSON mới của ClickHouse tập trung vào việc giải quyết các vấn đề hiệu năng của JSON trong phân tích dữ liệu quy mô lớn.
- Kiểu này hỗ trợ nhiều kiểu dữ liệu khác nhau, đồng thời cung cấp hiệu năng cao và khả năng mở rộng.
- Ngoài JSON, nó còn đặt nền tảng để hỗ trợ các kiểu bán cấu trúc khác như XML, YAML.
- Hữu ích cho các nhà phát triển sử dụng ClickHouse và mang lại lợi thế về nén dữ liệu cũng như hiệu năng truy vấn.
1 bình luận
Ý kiến trên Hacker News
Việc chọn dùng ClickHouse tại PostHog là một trong những quyết định tốt nhất. Nó cho phép mở rộng hiệu năng đồng thời xây dựng thêm nhiều sản phẩm trên cùng một tập dữ liệu
Tôi tự hỏi liệu việc thêm kiểu dữ liệu vào JSON có còn giữ được tư cách là JSON hay không
Thật tốt khi thấy tính năng này xuất hiện trong ClickHouse
Khi đánh giá ClickHouse, Apache Pinot cũng đáng để cân nhắc
Tôi thấy hứng thú với dữ liệu thay đổi động
Tôi đã chờ hỗ trợ JSON của ClickHouse từ lâu, và kiểu mới cùng các cột động sẽ đặc biệt hữu ích
ClickHouse là một công cụ tuyệt vời
Khi thử ClickHouse vài tuần trước, nó đặt tên tệp dựa trên tên cột, khiến hệ thống tệp phát sinh lỗi do tên tệp quá dài và có dấu gạch chéo
ClickHouse vẫn chưa được sử dụng đủ nhiều
clickhouse-localrất xuất sắc trong việc xử lý CSV bằng SQL, và tôi cực kỳ khuyến nghị nó khi bạn đã chán Google Sheets hay Excel