-
Protobuf, Thrift, Avro là gì?
Trong quá trình phát triển phần mềm, cách dữ liệu được lưu trữ xuống file hoặc được truyền sang service khác dưới định dạng gì là vô cùng quan trọng. Thông thường, đối với những dữ liệu trên file, ta có chọn kiểu định dạng “native” được hỗ trợ sẵn bởi ngôn ngữ lập trình,…
-
Transaction Isolation (Part 2): Isolation Level
Hiện nay, mỗi Database đều sử dụng phương pháp Isolation khác nhau. Thậm chí cũng có chuyện cùng một ý tưởng nhưng mỗi người lại triển khai khác nhau: cái thì chạy nhanh hơn, cái thì lại tốn ít bộ nhớ hơn, thậm chí cái còn có bug… Về cơ bản thì hiện nay có…
-
Database 103: SSTable và LSM-Tree
SSTable là gì? Trước khi tiếp tục cái series về Database, ta sẽ tìm hiểu qua trước về Sorted String Table, hay còn được gọi là SSTable. Về bản chất thì nó khá giống với kiến trúc Log file được đề cập từ 2 phần trước: Điểm khác biệt duy nhất đó là: mỗi key…
-
Bloom Filter
Bloom filter là 1 cấu trúc dữ liệu xác suất dùng để kiểm tra xem 1 phần tử có thuộc 1 tập dữ liệu hay không? Sở dĩ lý do lại là cấu trúc dữ liệu xác suất, bởi vì kết quả trả về của Bloom filter không đảm bảo chắc chắn rằng phần tử đó…
-
Một số tip khi define schema
Trong thực tế, ta thường không tránh khỏi việc phải cập nhật schema (hay còn gọi là schema evolution). Giống như thiết kế kiến trúc hệ thống, việc define schema cũng cần phải được tính toán khéo léo để có thể dễ dàng tương thích cho cả phiên bản cũ và mới (Backward/Forward Compatibility). Bài…