NoSQL Key Value Stores must know

Bài viết được sự cho phép của tác giả Kiên Nguyễn

Tìm hiểu về NoSQL và Amazon Web Services tất nhiên không thể bỏ qua khái niệm về Key Value Stores. Đây là nội dung quan trọng cần nắm vững.

Hiểu biết về cơ chế, cách thức lưu trữ và ưu nhược điểm giúp phát triển hệ thống thành công. Ngoài ra, nó cũng rất có ích cho những ai đang muốn thiết kế các hệ thống phân tán lớn.

Bắt đầu ngay thôi nào!

1. Key Value Stores là gì?

key-value store, or key-value database is a simple database that uses an associative array (think of a map or dictionary) as the fundamental data model where each key is associated with one and only one value in a collection. This relationship is referred to as a key-value pair.

Key value stores, hoặc key value database là kiểu cơ sở dữ liệu sử dụng mảng kết hợp. Trong đó mỗi key sẽ tồn tại duy nhất một value trong collection. Mối quan hệ này được gọi là một cặp key-value

Đối với hệ cơ sở dữ liệu phân tán (Distributed System), các khối dữ liệu dữ liệu có thể lên tới vài triệu khối

Key Value Stores

Theo cách thông thường, mỗi table sẽ tồn tại nhiều column. Đơn cử như video, ta có video id, title, url, description, …

Đối với Key Value Stores, key ở đây là video id, tất cả các thành phần khác như title, url, description đều có thể gom thành 1 trong object Json.

Đại điện của kiểu lưu trữ này là Dynamo DB, một số use case phổ biến có thể đề cập tới là:

1.1 Use case

Session store: A session-oriented application such as a web application starts a session when a user logs in and is active until the user logs out or the session times out. During this period, the application stores all session-related data either in the main memory or in a database. Session data may include user profile information, messages, personalized data and themes, recommendations, targeted promotions, and discounts.

Lưu trữ session như web application có thể bắt đầu các session khi user đã đăng nhập. Tất cả sẽ biến mất khi user logout hoặc session hết hạn. Trong quá trình này, ứng dụng sẽ lưu trữ tất cả dữ liệu session vào bộ nhớ hoặc DB. Session có thể bao gồm thông tin cá nhân, tin nhắn, cấu hình dữ liệu và themes, …

Do chỉ với một key và value, kiểu lưu trữ này còn ứng dụng trong Shopping Cart

During the holiday shopping season, an e-commerce website may receive billions of orders in seconds. Key-value databases can handle the scaling of large amounts of data and extremely high volumes of state changes while servicing millions of simultaneous users through distributed processing and storage.

Trong mùa nghỉ lễ mua sắm, các trang thương mại điện tử có thể nhận tới hàng tỷ đơn hàng. Key-value databases có thể giải quyết vấn đề scaling cho lượng dữ liệu khổng lồ này. Phục vụ hàng triệu người dùng đồng thời thông qua quá trình xử lý và lưu trữ phân tán.

2. Hai kiểu Key Value Stores

Có hai kiểu Key Value Stores thường được sử dụng khi thiết kế hệ thống là Object Stores và In Memory DB. Ta sẽ tìm hiểu cả hai kiểu này trong bài viết. Đại diện cho Object Stores là Amazon S3 và In Memory DB là Amazon Redis.

2.1 Object Stores

Object storage, often referred to as object-based storage, is a data storage architecture for handling large amounts of unstructured data

Object storage, hay còn được gọi là object-based storage, là kiến trúc lưu trữ dữ liệu handle dữ liệu lớn (không có cấu trúc)

Về cách lưu trữ này, dữ liệu được chia thành các đơn vị rời rạc được gọi là object và được lưu giữ trong một kho lưu trữ duy nhất, thay vì được lưu giữ dưới dạng tệp trong thư mục hoặc dưới dạng khối trên server.

Object Storage chia dữ liệu lớn thành các unit nhỏ (có kích thước giới hạn). Mỗi Object bao gồm data, meta data (for index, management). Cuối cùng là ID, sử dụng để tìm kiếm trong hệ cơ sở dữ liệu phân tán (Distributed System)

Ngoài ra, Object Storage còn cho phép lưu trữ nhiều bản copy của dữ liệu, nếu một phiên bản bị mất có thể backup hoặc sử dụng phiên bản thay thế một cách nhanh chóng

  • Performs best for big content and high stream throughput – Cung cấp hiệu năng tuyệt vời cho dữ liệu lớn và luồng dữ liệu khổng lồ.
  • Data can be stored across multiple regions – Dữ liệu có thể được lưu trữ trên nhiều vùng.
  • Scales infinitely to petabytes and beyond – Quy mô lớn, mở rộng lên tới hàng petabytes.
  Vì sao SQL tốt hơn NoSQL? (Phần 1)
  Điểm mạnh NoSQL – có đáng để thay đổi?

2.2 In-Memory Databases

In Memory DB giống như cái tên của nó. Thay về sử dụng SSD, Hard Disk để lưu trữ dữ liệu. IM DB muốn sử dụng Ram hoặc các phần Memory khác để lưu trữ dữ liệu.

Đại diện tiêu biểu của In Memory là Amazon Elasticache for Redis.

Use case phổ biến thường được áp dụng là Real-time bidding (đấu giá trực tuyến)

Real-time bidding refers to the buying and selling of online ad impressions. Usually the bid has to be made while the user is loading a webpage, in 100-120 milliseconds and sometimes as little as 50 milliseconds.

Real-time bidding đề cập lớn vấn đề mua bán trên các trang online. Thông thường các lệnh đặt được thực hiện khi người dùng đang loading webpage, chỉ trong 100-120 milliseconds, đôi khi là dưới 50 milliseconds.

Để đáp ứng độ trễ này, In Memory tỏ ra là giải pháp hoàn hảo. Tất nhiên, IMDB cũng là vị trí lưu trữ, cách thức lưu trữ thì vẫn giống như Object Store. Cả hai đều là Key Value Stores.

Key Value StoresVới IMDB, actions writes, reads thực hiện vô cùng nhanh

4. Tham khảo

Bài viết gốc được đăng tải tại kieblog.vn

Có thể bạn quan tâm:

Xem thêm IT Jobs for Developer hấp dẫn trên TopDev