4 điểm bởi xguru 2023-07-07 | 1 bình luận | Chia sẻ qua WhatsApp
  • Hệ thống cho phép lưu cơ sở dữ liệu SQLite trên cloud storage và có thể đọc/ghi mà không cần tải xuống toàn bộ DB
    • Hiện hỗ trợ Azure Blob Storage và Google Cloud Storage
  • Sử dụng mô-đun Block Cache VFS: hoạt động ở chế độ daemonless (đọc/ghi) và chế độ daemon (chỉ đọc)

Nội dung được GN⁺ tóm tắt

  • Hệ thống "Cloud Backed SQLite" (CBS) lưu cơ sở dữ liệu trong tài khoản cloud storage và cho phép client của storage truy cập mà không cần tải xuống toàn bộ cơ sở dữ liệu.
  • Nhiều client có thể đồng thời truy cập cơ sở dữ liệu, nhưng chỉ một client có thể ghi vào cơ sở dữ liệu tại một thời điểm.
  • CBS hiện hỗ trợ Azure Blob Storage và Google Cloud Storage, và cũng có thể hỗ trợ các hệ thống cloud storage khác.
  • Cơ sở dữ liệu SQLite được chia thành các block kích thước cố định và được lưu trong hệ thống cloud storage.
  • Hệ thống gồm các thành phần cơ bản để quản lý container cloud storage, một tiến trình daemon cung cấp truy cập cục bộ tới cơ sở dữ liệu từ xa, và một mô-đun VFS để truy cập cơ sở dữ liệu trên cloud.
  • Để sử dụng CBS, ứng dụng cần build và link các tệp C cùng header cần thiết, đồng thời link với libcurl và openssl.
  • Hệ thống có thể được kiểm thử bằng bộ test tự động.
  • Cơ sở dữ liệu có thể được tải lên tài khoản cloud storage bằng công cụ dòng lệnh.
  • Để truy cập cơ sở dữ liệu được lưu trên cloud storage, cần tạo VFS, kết nối container, mở database handle và chạy script SQL.
  • Hệ thống cung cấp API để hỗ trợ các hệ thống cloud storage mới và triển khai virtual table.
  • Bài viết này thảo luận về việc sử dụng container an toàn trong hệ thống cloud storage.
  • Container có thể được kết nối theo cách an toàn hoặc không an toàn; kết nối an toàn sử dụng mã hóa AES OFB để mã hóa dữ liệu.
  • Client cục bộ cần thông tin xác thực cloud storage hợp lệ để lấy khóa mã hóa từ tiến trình daemon.
  • Bài viết đề cập đến các mô-đun tích hợp sẵn "azure" và "google" dành cho hệ thống cloud storage.
  • API CBS và công cụ dòng lệnh yêu cầu đặc tả mô-đun, tên người dùng và giá trị xác thực.
  • Bài viết cung cấp chi tiết về mô-đun "azure" và cách tạo SAS token để xác thực.
  • Mô-đun "google" yêu cầu project ID và access token để kết nối CBS với Google Cloud Storage.
  • Bài viết đề cập đến truy cập đồng thời từ nhiều client và nhu cầu poll container để kiểm tra các thay đổi.
  • Blockcachevfs hỗ trợ ba câu lệnh PRAGMA: bcv_upload, bcv_poll và bcv_client.
  • Giao diện virtual table bao gồm các bảng bcv_container và bcv_database.
  • Bảng bcv_container chứa thông tin về các container đã kết nối, còn bảng bcv_database chứa thông tin về cơ sở dữ liệu của từng container.
  • Bài viết thảo luận về cấu trúc và chức năng của nhiều bảng khác nhau trong cơ sở dữ liệu blockcachevfs.
  • Bảng "bcv_database" chứa thông tin về các thay đổi cục bộ đối với cơ sở dữ liệu.
  • Bảng "bcv_http_log" ghi lại các yêu cầu HTTP do VFS hoặc daemon đã kết nối thực hiện.
  • Bảng "bcv_kv" cho phép ứng dụng ghi dữ liệu vào container cloud storage.
  • Bảng "bcv_kv_meta" cung cấp quyền truy cập chỉ đọc tới các HTTP header của máy chủ cloud storage.
  • Bài viết cũng cung cấp tham chiếu dòng lệnh cho nhiều thao tác khác nhau trong cơ sở dữ liệu blockcachevfs.
  • Lệnh daemon cho phép tiến trình blockcachevfsd chạy như một server và chấp nhận kết nối từ client.
  • Tiến trình daemon hỗ trợ nhiều tùy chọn cho cấu hình và logging.

1 bình luận

 
GN⁺ 2023-07-07
Ý kiến trên Hacker News
  • Chia sẻ trải nghiệm của một lập trình viên về việc phục vụ cơ sở dữ liệu SQLite quy mô lớn theo từng chunk và truy vấn bằng HTTP range request
  • Đề cập đến thư viện sql.js-httpvfs hỗ trợ quy trình này
  • Lập trình viên đã chia cơ sở dữ liệu SQLite 350MB thành nhiều mảnh nhỏ rồi tải lên GitHub
  • Khuyến nghị xem dự án và thử nghiệm trong tab Console và Network
  • Một người bình luận khác nêu lo ngại về tính nhất quán của bộ nhớ đệm, tính đồng thời, gián đoạn mạng và vấn đề xác thực khi dùng kho dữ liệu từ xa
  • Đề xuất một giải pháp đơn giản hơn là định kỳ sao chép cơ sở dữ liệu vào hệ thống tệp tmpfs rồi sao chép lên object storage
  • Nhấn mạnh các lợi ích như giải quyết được vấn đề, sao chép tệp rẻ và nhanh, không cần daemon bên ngoài, khóa toàn cục đơn giản, an toàn luồng, không bị gián đoạn mạng, xác thực bên ngoài, v.v.
  • Một người bình luận khác đặt câu hỏi vì sao lại triển khai SQLite, một cơ sở dữ liệu nhúng, lên dịch vụ đám mây khi PostgreSQL đã giải quyết cùng một vấn đề
  • Cho rằng khi chuyển lưu trữ lên đám mây thì độ trễ sẽ tăng và sự đơn giản sẽ giảm
  • Một người bình luận khác hỏi liệu SQLite có lệnh tương đương với pg_dumpmysqldump hay không.
  • Có đề cập rằng hệ thống hiện hỗ trợ Azure Blob Storage và Google Cloud Storage, còn AWS có thể bị loại trừ
  • Một người bình luận khác không chắc đây là tính năng được hỗ trợ chính thức hay chỉ là trường hợp “về mặt kỹ thuật thì làm được”
  • Thắc mắc liệu có thể chạy Datasette với kho lưu trữ đám mây bên ngoài hay không
  • Một người bình luận khác nêu lo ngại về việc đảm bảo rằng tại một thời điểm chỉ có một client được phép ghi vào cơ sở dữ liệu
  • Có đề cập rằng lớp VFS của SQLite đủ linh hoạt và dễ dùng để triển khai object storage đám mây
  • Nhắc đến việc caching có thể là khía cạnh khó triển khai của hệ thống
  • Một người bình luận khác cảm thấy khó hiểu trước ý tưởng dùng SQLite trên đám mây thay vì dùng một cơ sở dữ liệu quan hệ khác, vì SQLite vốn được thiết kế cho sử dụng cục bộ.