Khái niệm, định nghĩa Snapshot là gì?

Snapshot có thể được hiểu đơn giản là một hình thức sao lưu dữ liệu tạm thời sử dụng cho nhiều mục đích, Vậy cụ thể snapshot cơ sở dữ liệu được định nghĩa như thế nào, hoạt động và sử dụng ra sao. Cùng tìm hiểu trong bài phân tích chi tiết sau đây.

Snapshot của một cơ sở dữ liệu là gì?

Một snapshot cơ sở dữ liệu là một ảnh chụp nhanh dạng tĩnh, chỉ đọc (read-only) của một cơ sở dữ liệu SQL Server (cơ sở dữ liệu nguồn).

Trong đó, SQL Server viết đầy đủ là Structure Query Language server là một công cụ quản lý dữ liệu được sử dụng rộng rãi trong nhiều lĩnh vực khác nhau.

Snapshot cơ sở dữ liệu là một giao thức đông thời và nhất quán với cơ sở dữ liệu nguồn vào thời điểm tạo snapshot đó. Có nghĩa là ảnh chụp sanpshot tại thời điểm đó ghi lại một cách chính xác và đồng thời trạng thái của cơ sở dữ liệu nguồn được chụp. Một snapshot cơ sở dữ liệu luôn nằm trên cùng một cá thể máy chủ với cơ sở dữ liệu nguồn của nó. Khi cơ sở dữ liệu nguồn được cập nhật, snapshot cũng được cập nhật theo. Do đó, snapshot cơ sở dữ liệu càng dài thì khả năng sử dụng hết dung lượng đĩa sẵn có của nó càng nhiều.

Nhiều snapshot có thể tồn tại trên cùng một cơ sở dữ liệu nguồn cho trước. Mỗi snapshot cơ sở dữ liệu vẫn tồn tại cho đến khi bị chủ sở hữu cơ sở dữ liệu đó loại bỏ hoàn toàn.

Tổng quan về tính năng – Hoạt động của snapshot

Các snapshot cơ sở dữ liệu hoạt động ở cấp độ data-page. Trước khi một trang của cơ sở dữ liệu nguồn được sửa đổi lần đầu tiên, trang gốc sẽ được copy từ cơ sở dữ liệu nguồn thành ảnh chụp nhanh snapshot. Snapshot lưu lại trang gốc, duy trì các bản ghi dữ liệu vẫn đang tồn tại khi snapshot được tạo. Quá trình tương tự được lặp lại với mỗi trang trong các lần sửa đổi đầu tiên. Đối với người dùng, snapshot cơ sở dữ liệu thường không bao giờ thay đổi, vì các thao tác đọc trên snapshot cơ sở dữ liệu luôn truy cập vào các trang dữ liệu gốc, bất kể chúng ở đâu.

Để lưu trữ các trang gốc đã sao chép, snapshot sử dụng một hoặc nhiều file rải rác. Ban đầu, file rải rác là các tệp hoàn toàn trống, không chứa dữ liệu người dùng và chưa được cấp không gian cho dữ liệu người dùng trên đĩa. Khi ngày càng có nhiều trang được cập nhật trong cơ sở dữ liệu, kích thước của tệp sẽ tăng lên.

Hình dưới đây minh họa các kết quả của hai mẫu cập nhật tương phản với kích thước của snapshot. Trạng thái A phản ánh môi trường trong đó chỉ có 30% các trang gốc được cập nhật trong thời gian tồn tại snapshot. Trạng thái B phản ánh một môi trường trong đó 80% các trang gốc được cập nhật trong thời gian tồn tại snapshot.

Nguyên lý hoạt động của snapshot

Snapshot có khả năng sao lưu theo phiên bản và nhanh chóng rút lại những thay đổi. Có thể mô tả đơn giản như sau nếu bạn đang thực hiện snapshot mỗi giờ thì tất cả các  file hay thư mục sẽ được trả về định dạng ở một thời điểm bất kỳ nào. Chính vì vậy nếu có xảy ra những sự cố hay điển hình nhất là nhiễm virus thì bạn tiến hành hoán đổi các file, thư mục  hay toàn bộ ổ của mình về thời điểm chưa có virus.

Lợi ích của snapshot cơ sở dữ liệu

– Ảnh chụp nhanh snapshot có thể được sử dụng cho mục đích báo cáo

Khách hàng có thể truy vấn các snapshot cơ sở dữ liệu, qua đó, viết báo cáo dựa trên dữ liệu tại thời điểm tạo ảnh chụp nhanh

– Duy trì lịch sử dữ liệu để tạo báo cáo

Snapshot hỗ trợ việc mở rộng quyền truy cập dữ liệu cho người dùng trong các thời điểm cụ thể. Ví dụ, bạn có thể tạo một snapshot cơ sở dữ liệu vào cuối một khoảng thời gian nhất định nào đó (như là cuối một quý tài chính chẳng hạn) để sau này báo cáo. Như vậy, bạn có thể chạy các báo cáo cuối kỳ trên các snapshot. Nếu không gian đĩa cho phép, bạn cũng có thể duy trì các snapshot cuối kỳ bao lâu tùy ý, cho phép truy vấn ngược lại kết quả trong các khoảng thời gian này, lấy ví dụ: làm khảo sát hiệu suất hoạt động của tổ chức chẳng hạn.

– Sử dụng nhân đôi cơ sở dữ liệu – database miror mà bạn đang duy trì cho các mục tiêu đã có để giảm tải báo cáo

Sử dụng snapshot cơ sở dữ liệu cùng với nhân đôi cơ sở dữ liệu cho phép tạo các dữ liệu có thể truy cập được trên mirror server (máy chủ giống nhau) để báo cáo. Ngoài ra, các truy vấn đang chạy trên cơ sở dữ liệu nhân đôi có thể giải phóng tài nguyên cho phần chính.

– Bảo vệ dữ liệu khỏi các lỗi quản trị.

– Hoàn nguyên

Trong trường hợp xảy ra lỗi người dùng trên cơ sở dữ liệu nguồn, bạn có thể hoàn nguyên (trở về trạng thái ban đầu) cơ sở dữ liệu nguồn về trạng thái khi một snapshot của cơ sở dữ liệu đã cho được tạo. Mất dữ liệu trong khi cập nhật đã được kiểm soát và hạn chế hoàn toàn kể từ khi snapshot ra đời.

Ví dụ: trước khi thực hiện các cập nhật quy mô, chẳng hạn như cập nhật hàng loạt hoặc thay đổi lược đồ, hãy tạo các snapshot cơ sở dữ liệu để bảo vệ dữ liệu. Khi mắc lỗi, có thể sử dụng snapshot để khôi phục bằng cách đưa cơ sở dữ liệu về trạng thái ban đầu (hoàn nguyên) với snapshot. Hoàn nguyên khi sử dụng cho mục đích này thường nhanh hơn so với khôi phục từ bản sao lưu, tuy nhiên, bạn không thể cuộn về trước hay sau.

– Quan trọng:

Hoàn nguyên không hoạt động khi cơ sở dữ liệu đang ngoại tuyến hoặc bị hỏng. Bởi vậy, việc sao lưu thường xuyên và kiểm tra các phương án khôi phục là cần thiết khi muốn bảo vệ cơ sở dữ liệu.

– Lưu ý:

Các snapshot cơ sở dữ liệu phụ thuộc vào cơ sở dữ liệu nguồn. Do đó, việc sử dụng các snapshot cơ sở dữ liệu để hoàn nguyên cơ sở dữ liệu không thể thay thế cho các phương án sao lưu và khôi phục được. Thực hiện tất cả các sao lưu theo kế hoạch vẫn là cần thiết. Nếu buộc phải khôi phục cơ sở dữ liệu nguồn tại chính thời điểm một snapshot cơ sở dữ liệu được tạo, hãy thực hiện phương án sao lưu cho phép bạn thực hiện điều đó.

– Bảo vệ dữ liệu trước lỗi người dùng

Bằng cách tạo snapshot cơ sở dữ liệu thường xuyên, bạn có thể giảm thiểu tác động các lỗi do người dùng chính, chẳng hạn như lỗi xóa bảng.

Để bảo vệ ở mức độ cao hơn, có thể tạo một loạt snapshot cơ sở dữ liệu kéo dài đủ thời gian để nhận dạng và phản ứng với hầu hết các lỗi người dùng. Ví dụ: bạn có thể duy trì từ 6 đến 12 snapshot trong khoảng thời gian 24 giờ, tùy thuộc vào tài nguyên đĩa của bạn. Sau đó, cứ mỗi khi có một snapshot mới được tạo, thì snapshot cũ nhất có thể bị xóa.

Để khôi phục dữ liệu do lỗi người dùng, có thể thực hiện hoàn nguyên cơ sở dữ liệu về snapshot ngay trước khi xảy ra lỗi. Hoàn nguyên khi sử dụng cho mục đích này thường nhanh hơn so với khôi phục từ bản sao lưu, tuy nhiên, bạn không thể cuộn về trước hay sau.

Ngoài ra, có thể tự dựng lại bảng đã bị xóa hoặc dữ liệu bị mất khác từ thông tin trong snapshot. Ví dụ: bạn có thể sao chép hàng loạt dữ liệu từ snapshot lên cơ sở dữ liệu và tích hợp dữ liệu trở lại cơ sở dữ liệu theo cách thủ công.

Lý do cho việc sử dụng snapshot cơ sở dữ liệu sẽ xác định số lượng bao nhiêu snapshot đồng thời bạn cần trên cơ sở dữ liệu, tần suất cần tạo snapshot mới và thời gian lưu giữ chúng là bao lâu.

– Quản lý các testing database (dữ liệu thử nghiệm)

Trong môi trường thử nghiệm, sẽ hữu ích khi liên tục chạy một giao thức thử nghiệm cho cơ sở dữ liệu để chứa các dữ liệu giống hệt nhau khi bắt đầu mỗi vòng thử nghiệm. Trước khi chạy vòng đầu tiên, nhà phát triển ứng dụng hoặc người kiểm tra có thể tạo một snapshot trên cơ sở dữ liệu thử nghiệm. Sau mỗi lần chạy thử nghiệm, cơ sở dữ liệu có thể được nhanh chóng trở về trạng thái trước đó của nó bằng cách hoàn nguyên snapshot cơ sở dữ liệu.