Caching là gì?
Caching hay còn được gọi là bộ nhớ đệm là một kỹ thuật được sử dụng để lưu trữ dữ liệu tạm thời trong bộ nhớ nhanh để giảm thiểu thời gian truy cập và tăng hiệu suất của hệ thống.
Nguyên lý hoạt động của Caching
Caching lưu trữ các dữ liệu phổ biến hoặc được truy cập thường xuyên trong bộ nhớ tạm thời để giảm thiểu thời gian truy cập và tăng hiệu suất của hệ thống. Dưới đây là các bước cơ bản để hiểu nguyên lý hoạt động của caching:
Khi có yêu cầu truy cập dữ liệu từ nguồn gốc (như cơ sở dữ liệu hoặc dịch vụ web), hệ thống sẽ kiểm tra xem dữ liệu đó đã được lưu trữ trong bộ nhớ cache chưa.
Hệ thống sẽ kiểm tra xem dữ liệu được yêu cầu đã được lưu trong bộ nhớ cache hay không. Nếu dữ liệu đã có trong cache và vẫn còn hợp lệ, hệ thống sẽ trả về dữ liệu từ cache thay vì truy cập nguồn gốc.
Nếu dữ liệu không được tìm thấy trong cache hoặc dữ liệu trong cache đã hết hạn, hệ thống sẽ truy cập nguồn gốc (ví dụ: cơ sở dữ liệu hoặc dịch vụ web) để lấy dữ liệu mới.
Sau khi lấy được dữ liệu từ nguồn gốc, hệ thống có thể lưu trữ dữ liệu này vào bộ nhớ cache để sử dụng cho các yêu cầu tiếp theo. Thời gian lưu trữ của dữ liệu trong cache có thể được quy định bởi các yếu tố như thời gian hết hạn hoặc thời gian cập nhật.
Cuối cùng, hệ thống sẽ trả về dữ liệu cho người dùng hoặc ứng dụng yêu cầu.
Một số chiến lượng Caching phổ biến nhất
Chiến lược đọc dữ liệu
1. Cache aside
Chiến lược Cache aside còn được gọi là “Lazy Loading”. Trong chiến lược này, khi có yêu cầu truy cập dữ liệu, hệ thống sẽ trước tiên kiểm tra xem dữ liệu có tồn tại trong cache không. Nếu không, hệ thống sẽ truy xuất dữ liệu từ nguồn gốc (ví dụ: cơ sở dữ liệu) và sau đó lưu trữ vào cache trước khi trả về cho người dùng. Các bản cập nhật hoặc xóa dữ liệu trong cache thường được thực hiện dựa trên các sự kiện hoặc trạng thái của dữ liệu.
2. Read through
Trong chiến lược Read Through, hệ thống sẽ luôn cố gắng truy cập dữ liệu từ cache trước khi truy cập nguồn gốc. Nếu dữ liệu không tồn tại trong cache hoặc đã hết hạn, hệ thống sẽ tự động truy cập nguồn gốc để lấy dữ liệu mới và sau đó lưu trữ vào cache trước khi trả về cho người dùng. Trong chiến lược này, quá trình đọc dữ liệu từ cache và quá trình truy cập nguồn gốc được tự động kết hợp với nhau một cách đồng nhất.
Chiến lược ghi dữ liệu
1. Write around
Chiến lược Write Around là một phương pháp trong việc quản lý cache, thường được sử dụng khi muốn tránh việc lưu trữ dữ liệu mới vào cache ngay khi nó được ghi vào nguồn gốc. Thay vào đó, dữ liệu mới được ghi trực tiếp vào nguồn gốc mà không được lưu trữ trong cache. Điều này thường được áp dụng cho các dữ liệu có kích thước lớn hoặc ít được truy cập, giúp tiết kiệm tài nguyên cache cho dữ liệu quan trọng hơn.
Khi dữ liệu được ghi vào nguồn gốc, chiến lược Write Around cho phép dữ liệu được truy cập trực tiếp từ nguồn gốc khi cần thiết, mà không cần phải lưu trữ trong cache. Điều này giảm bớt áp lực lên bộ nhớ cache và giúp tăng hiệu suất của hệ thống.
Tuy nhiên, mặc dù chiến lược Write Around giúp tránh việc lãng phí tài nguyên cache cho dữ liệu ít được truy cập, nhưng nó cũng có thể dẫn đến việc thời gian đáp ứng chậm hơn cho các yêu cầu truy cập dữ liệu mới ghi vào.
2. Write back
“Write Back” là một chiến lược caching được sử dụng để quản lý việc ghi dữ liệu vào cache trong hệ thống lưu trữ dữ liệu. Trong chiến lược này, khi có yêu cầu ghi dữ liệu, hệ thống sẽ ghi trực tiếp vào cache mà không đợi việc ghi vào nguồn gốc (ví dụ: cơ sở dữ liệu). Sau đó, hệ thống sẽ trả về kết quả ghi cho người dùng mà không cần chờ việc ghi vào nguồn gốc hoàn tất.
Cách tiếp cận này giúp tăng tốc độ ghi dữ liệu và giảm thời gian đáp ứng cho người dùng, bởi vì hệ thống không cần phải chờ đợi quá trình ghi vào nguồn gốc hoàn tất trước khi trả về kết quả. Thay vào đó, dữ liệu được lưu trữ tạm thời trong cache và sau đó được đồng bộ hóa với nguồn gốc trong một thời điểm sau này.
Tuy nhiên, điểm yếu của chiến lược này là có thể xảy ra mất dữ liệu nếu có sự cố xảy ra trước khi dữ liệu được đồng bộ hóa với nguồn gốc. Do đó, cần phải có các biện pháp bảo vệ dữ liệu và đảm bảo tính toàn vẹn của dữ liệu trong quá trình đồng bộ hóa. Chiến lược “Write Back” thường được sử dụng cho các tình huống yêu cầu hiệu suất cao và không cần thiết phải đảm bảo tính nhất quán của dữ liệu ngay lập tức.
3. Write through
Write Through là một chiến lược caching trong đó mỗi khi dữ liệu được ghi vào cache, nó cũng được ghi vào nguồn dữ liệu gốc (ví dụ: cơ sở dữ liệu) ngay lập tức. Điều này đảm bảo rằng dữ liệu trong cache và dữ liệu trong nguồn gốc luôn được cập nhật đồng bộ, giữ cho tính nhất quán của hệ thống.
Ưu điểm của chiến lược Write Through là đảm bảo tính nhất quán giữa dữ liệu trong cache và nguồn gốc, tránh tình trạng mất dữ liệu hoặc không nhất quán, giảm nguy cơ mất dữ liệu trong trường hợp xảy ra sự cố với hệ thống hoặc cache, giúp tăng hiệu suất cho việc đọc dữ liệu, vì dữ liệu mới nhất thường có sẵn trong cache.
Tuy nhiên, điểm yếu của chiến lược này là tăng chi phí về thời gian và băng thông mạng, do việc ghi dữ liệu vào nguồn gốc mỗi khi có yêu cầu ghi có thể tạo ra gánh nặng đối với hệ thống và cơ sở dữ liệu.