Category: Database
-
Tại sao Kafka lại nhanh tới vậy?
Kafka hỗ trợ một nền tảng thông lượng cao (throughput), phân tán (distributed), có khả năng chịu lỗi (fault-tolerant) với việc phân phối thông điệp có độ trễ thấp. Vậy Kafka được thiết kế như thế nào để đạt được độ trễ thấp như vậy? Hãy cùng tìm hiểu 3 cơ chế giúp Kafka đạt…
-
[Thanh tra ma giáo] Dgraph
Chào mừng các bạn đến với series “Thanh tra ma giáo” – chuỗi bài viết chuyên về điều tra và đánh giá các công nghệ trên thị trường hiện nay: liệu chúng có thật sự được như lời quảng cáo hay không? Hay đó chỉ là các chiêu trò ma giáo, bánh vẽ marketing nhằm…
-
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ó…
-
Transaction Isolation (Part 1): Concurrency Control Problem
Ở trong bài viết Bạn đã hiểu đúng về Transaction chưa?, tôi có giới thiệu qua về ACID. Trong số 4 từ khóa: A (Atomicity), C (Consistency), I (Isolation) và D (Durability), thì có lẽ Isolation là thành phần được mọi người quan tâm nhiều nhất, đặc biệt là những đối tượng sau nên đọc…
-
Bạn đã hiểu đúng về Transaction chưa?
Mình bắt gặp rất nhiều cuộc trò chuyện và hội thoại trong cuộc sống hàng ngày, nói về transaction trong Database, nhưng đa phần đều là quan niệm sai lầm: Qua bài này, mình sẽ giới thiệu lại tổng quan một chút về Transaction để mọi người hiểu rõ hơn về nó. Lợi ích ngay…
-
Database 303: Column-Oriented Storage
Nhắc lại ở các phần trước, ta đã được làm quen với những Hash Index, LSM-Trees Index hay B-Trees Index. Tuy nhiên, mình phải thú thực với các bạn rằng: tất cả các loại index đó đều chỉ phù hợp cho các hệ thống OLTP. Điểm khác biệt giữa OLTP và OLAP thì mình đã…
-
Database 302: OLTP hay OLAP?
Trong những thời kỳ ban đầu thuở sơ khai, cơ sở dữ liệu chủ yếu chỉ được sử dụng cho các hoạt động giao dịch thương mại: bán các mặt hàng, order nhà cung cấp, trả lương cho nhân viên,… Và khi mà nó bắt đầu được phổ biến rộng rãi hơn cho nhiều lĩnh…
-
Database 301: Materialized View
Trong SQL, chúng ta có thể sử dụng View như 1 dạng shortcut gọi tới câu lệnh truy vấn. Nội dung của View chính là kết quả thực thi của câu truy vấn đó. Materialized View cũng như vậy, tuy nhiên điểm khác biệt nằm ở chỗ: Materialized View có cache lại kết quả của…
-
Database 201: B-Tree
B-Tree là 1 kiến trúc index được mô phỏng dựa trên cấu trúc dữ liệu B-Tree, nhờ đó nó cũng được thừa kế tính năng lưu trữ cặp key-value dưới dạng có thứ tự. Điều này giúp cho nó có thể đáp ứng các loại truy vấn tìm kiếm key cũng như range query. Tuy…
-
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…
-
Database 102: Hash Index
Ta sẽ tiếp tục cải tiến từ cấu trúc log file của bài trước (Database 101: Log Structured Storage). Ý tưởng lần này bắt nguồn từ sự tương đồng giữa Key-Value Store và cấu trúc dữ liệu HashMap (Hash Table) – thường đã có sẵn trong hầu hết các ngôn ngữ lập trình hiện nay.…
-
Database 101: Log Structured Storage
Log Structured Storage là trường phái Database dựa trên Append-only Log, tức là dữ liệu được ghi lưu lại dưới dạng log, chỉ có ghi xuống cuối file chứ không thể ghi đè. Chỉ mới được phổ biến gần đây, tuy nhiên xét về sự đơn giản (mà vẫn hiệu quả) thì nó xứng đáng…