Data Intensive Application
2024-02-16
sách nhập môn cho bigdata ?
chương 3: lưu trữ và truy vấn
log structured và page-oriented storage engine
cấu trúc dữ liệu của db
- ghi vào cuối file, khi tìm sẽ phải duyệt toàn bộ O(n)
- để tăng tốc độ tìm kiếm thì sử dụng kiểu dữ liệu index, tuy nhiên sẽ làm giảm hiệu năng truy vấn dữ liệu
- việc sử dụng index là do người dùng cần nhắc sử dụng dựa trên query pattern, tải hệ thống
hash index
- map key-offset. khi tìm giá trị key -> thì tìm tới offset của key đó trong file
- lưu toàn bộ trong mem -> tràn -> segment, compact
- segment: chia dữ liệu thành các file nhỏ, khi đầy việc ghi sẽ ghi tiếp vào segment mới. trên 1 segment có thể có nhiều giá trị của cùng 1 key (thời gian update khác nhau), vì vậy mới cần quá trình compact và merge lại để tăng tốc độ tìm kiếm
- compact: loại bỏ các key trùng và giữ lại key có giá trị mới nhất. diễn ra trên từng segment.
- merge: merge các segment lại với nhau để tăng tốc độ tìm kiếm (giam số lượng segment)
- chú ý
- khi xóa thì cần đánh dấu là delete, sau đó khi merge sẽ xóa đi là được
- crash recovery: đọc lại toàn bộ segment file -> snapshot định kì
- concurency control: chỉ để 1 luồng ghi duy nhất
- ưu/ nhược điểm:
- ưu điểm: nhanh hơn random- write (over-write).
- nhược điểm: out mem, range query cần đọc nhiều
SSTable và LMS-Tree
- sorted string table: sắp xếp các key
- việc ghi sẽ chậm hơn do dữ liệu cần được sắp xếp
- sparse index inmemory: vì dữ liệu được sort nên chỉ cần lưu index thưa với các dải key khác nhau (ví dụ trong index chỉ cần có giá trị a, c thì nếu tìm b thì ta chỉ cần quét giá trị nằm giữa a và c là được)