Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Làm Chủ Sao Chép Dữ Liệu: Các Loại, Ví Dụ Và Ứng Dụng Thực Tiễn

Sao Chép Dữ Liệu (Data Replication) Là Gì?

Sao chép dữ liệu là một phương pháp sao chép dữ liệu để đảm bảo rằng tất cả thông tin giữ nguyên giống nhau trong thời gian thực giữa tất cả các nguồn dữ liệu. Hãy nghĩ về sao chép cơ sở dữ liệu như cái lưới bắt thông tin của bạn và giữ nó không bị rơi qua kẽ hở và bị mất. Dữ liệu khó mà đứng yên. Nó luôn thay đổi. Đây là một quá trình đang diễn ra (ongoing process) đảm bảo dữ liệu từ cơ sở dữ liệu chính (primary database) được phản chiếu (mirrored) trong một bản sao (replica), ngay cả khi bản sao đó nằm ở phía bên kia hành tinh.

Ngày nay, "ngay lập tức" (instantaneous) không đủ nhanh. Giảm độ trễ xuống khoảng dưới mili-giây (sub-millisecond intervals) là mục tiêu phổ quát. Chúng ta đều đã thấy tình huống này trước đây — nhấn nút làm mới (refresh) trên trang web, chờ đợi cái cảm giác như vĩnh cửu (giây) để thấy thông tin của bạn được cập nhật. Độ trễ giảm năng suất cho người dùng. Đạt được gần thời gian thực (near-real-time) là mục tiêu. Độ trễ bằng không (Zero time lag) là lý tưởng mới, cho bất kỳ trường hợp sử dụng nào.

Cách Thức Sao Chép Dữ Liệu Hoạt Động?

Sao chép dữ liệu là sao chép dữ liệu từ một host sang host khác, ví dụ, giữa hai on-prem, hoặc một on-prem sang đám mây, và cứ thế. Mục đích là đạt được sự nhất quán thời gian thực với dữ liệu cho tất cả người dùng, bất kể họ truy cập dữ liệu từ đâu. Các Mô Hình Kinh Doanh Dựa Trên Dữ Liệu (Data-Driven Business Models - DDBMs), như ngành game, phụ thuộc rất nhiều vào phân tích thu được qua dữ liệu thời gian thực. Để hiểu rõ hơn về việc truy cập thời gian thực cần thiết như thế nào cho DDBM, hãy xem video dưới đây:

Lợi Ích Của Sao Chép Dữ Liệu Là Gì?

Cải Thiện Độ Tin Cậy / Khôi Phục Thảm Họa (Disaster Recovery)

Trong trường hợp khẩn cấp, nếu thực thể chính (primary instance) của bạn bị xâm phạm, việc có các ứng dụng then chốt (mission-critical) được bảo vệ bằng một bản sao có thể được hoán đổi (swapped) vào vị trí của nó là sống còn. Các phương pháp sao chép khôi phục thảm họa hoạt động tương tự như máy phát điện dự phòng (backup generator); tưởng tượng làm vỡ một cầu chì quan trọng (blowing a critical fuse), hoặc lưới điện của bạn tối đen — bạn sẽ không phải lo lắng vì bạn có một máy phát dự phòng để lao vào thay thế và giữ đèn của bạn sáng.

Bởi vì các thực thể bản sao là bản sao chính xác của các thực thể chính, bạn có thể đảm bảo hiệu suất sẽ không dao động, bất kể điều gì xảy ra với thực thể chính của bạn. Ngay cả khi liên kết giữa một bản chính và một bản sao bị đứt, hiệu suất vẫn được đảm bảo vì bản chính sẽ thực hiện một resynchronization một phần (partial resynchronization), thu thập các lệnh chưa được giao cho bản sao trong lúc ngắt kết nối. Nếu không thể, một resynchronization đầy đủ (full resynchronization) sẽ được khởi tạo, sử dụng một snapshot (ảnh chụp).

Tăng Hiệu Suất Ứng Dụng

Bằng cách lan tỏa dữ liệu trên nhiều thực thể, bạn đang giúp tối ưu hóa hiệu suất đọc. Hiệu suất cũng được tối ưu hóa bằng cách có dữ liệu của bạn có thể truy cập ở nhiều vị trí, từ而 giảm thiểu bất kỳ vấn đề độ trễ nào. Ngoài ra, khi các bản sao được chỉ đạo để xử lý hầu hết các đọc của bạn, điều đó mở ra không gian cho bản chính của bạn để giải quyết phần lớn việc رفع nặng (heavy lifting) của các ghi (writes).

Đội Ngũ IT Hiệu Quả Hơn

Giảm lao động IT để sao chép dữ liệu thủ công.

Hiểu Về Sao Chép Cơ Sở Dữ Liệu Đầy Đủ (Full) So Với Sao Chép Một Phần (Partial Replication)

Sao Chép Cơ Sở Dữ Liệu Đầy Đủ (Full Database Replication) xảy ra khi toàn bộ cơ sở dữ liệu chính được sao chép trong mọi thực thể bản sao có sẵn. Đây là một cách tiếp cận toàn diện (holistic approach) phản chiếu dữ liệu hiện có, mới và đã cập nhật đến tất cả các đích đến. Mặc dù cách tiếp cận này rất toàn diện, nó cũng đòi hỏi một lượng đáng kể sức mạnh xử lý và làm quá tải tải trọng mạng (network load) vì kích thước lớn của dữ liệu được sao chép.

Khác với sao chép đầy đủ, sao chép một phần (partial replication) chỉ phản chiếu một số phần của dữ liệu, thường là dữ liệu cập nhật gần đây. Sao chép một phần cô lập các bit dữ liệu cụ thể theo tầm quan trọng của dữ liệu tại một vị trí cụ thể. Ví dụ, một công ty tài chính lớn có trụ sở chính ở London có thể có nhiều văn phòng vệ tinh (satellite offices) hoạt động trên khắp thế giới, với một văn phòng ở Boston, một ở Kuala Lumpur, v.v.

Sao chép một phần cho phép các nhà phân tích ở London chỉ có dữ liệu liên quan đến Anh tại trang web của họ và chỉ có dữ liệu đó được sao chép nhất quán cho nhu cầu của họ. Các văn phòng vệ tinh khác ở Mỹ và Malaysia, tương ứng, có thể làm tương tự và không làm chậm bất kỳ hệ thống nào, cải thiện hiệu suất và giảm thiểu lưu lượng mạng.

Ví Dụ Của Sao Chép Dữ Liệu

Sao Chép Giao Dịch (Transactional Replication)

Hình thức sao chép cơ sở dữ liệu này thấy dữ liệu từ cơ sở dữ liệu chính sao chép dữ liệu trong thời gian thực đến một thực thể bản sao bằng cách phản chiếu các thay đổi này theo thứ tự chúng được thực hiện trong cơ sở dữ liệu chính. Điều này tối ưu hóa sự nhất quán. Sao chép lấy cái gọi là "ảnh chụp" (snapshot) của dữ liệu trong bản chính và sử dụng ảnh chụp đó như một bản thiết kế (blueprint) của những gì cần được sao chép ở nơi khác. Với sao chép giao dịch, bạn có thể theo dõi và phân phối các thay đổi khi cần thiết. Với sao chép giao dịch, bạn có thể theo dõi và phân phối các thay đổi khi cần thiết.

Với bản chất tăng dần (incremental nature) của quy trình này, sao chép giao dịch không phải là lựa chọn tối ưu khi tìm kiếm tùy chọn cơ sở dữ liệu sao lưu (backup database). Sao chép giao dịch là một lựa chọn hữu ích trong các tình huống mà bạn cần sự nhất quán thời gian thực trên tất cả các vị trí dữ liệu, nơi mỗi thay đổi vi mô (minuscule change) cần được tính đến, không chỉ tác động tổng thể của các thay đổi, và nếu dữ liệu thay đổi thường xuyên từ một vị trí cụ thể.

Sao Chép Ảnh Chụp (Snapshot Replication)

Như tên gợi ý, sao chép ảnh chụp lấy một "ảnh chụp" của dữ liệu từ bản chính khi nó xuất hiện tại một thời điểm cụ thể và di chuyển nó đến bản sao. Giống như một bức ảnh, sao chép ảnh chụp nắm bắt dữ liệu trông như thế nào tại một thời điểm, như nó trông khi di chuyển từ bản chính sang bản sao, nhưng không tính đến việc nó được cập nhật sau này. Vì vậy, đừng dùng sao chép ảnh chụp để làm bản sao lưu.

Trong sự kiện lỗi lưu trữ (storage failure), sao chép ảnh chụp sẽ không có đường dẫn đến thông tin cập nhật. Để giữ thông tin của bạn nhất quán, bạn có thể bắt đầu với một ảnh chụp, nhưng sau đó đảm bảo rằng tất cả các thay đổi được thực hiện trên bản chính sau đó được chuyển cho mọi bản sao.

Mặt khác, phương pháp này khá hữu ích cho khôi phục trong sự kiện xóa nhầm (accidental deletion). Hãy nghĩ đến nó như Lịch sử Phiên bản (Version History) trên Google Docs. Bạn ước gì bạn có thể làm việc trên bài thuyết trình theo cách nó trông bốn giờ trước? Nếu Google Docs chụp ảnh chụp công việc của bạn theo khoảng giờ, bạn có thể nhấp quay lại phiên bản đó, hoặc "ảnh chụp", từ bốn giờ trước và thấy thông tin của bạn trông như thế nào lúc bấy giờ.

Sao Chép Hợp Nhất (Merge Replication)

Phương pháp này thường bắt đầu với một ảnh chụp của dữ liệu và phân phối dữ liệu đó đến các bản sao của nó và duy trì sự đồng bộ hóa dữ liệu giữa toàn bộ hệ thống. Điều làm cho sao chép hợp nhất khác biệt là nó cho phép mỗi nút (node) thực hiện thay đổi dữ liệu độc lập, nhưng hợp nhất tất cả các cập nhật đó thành một tổng thể thống nhất (unified whole).

Sao chép hợp nhất cũng tính đến từng thay đổi được thực hiện tại mỗi nút. Quay lại ví dụ Google Docs trước, nếu bạn đã chia sẻ tài liệu với đồng nghiệp mà sau đó họ để lại bình luận và chỉnh sửa trên tài liệu của bạn, bạn sẽ thấy ai làm thay đổi gì và khi nào. Sao chép hợp nhất hoạt động theo cách rất tương tự.

Sao Chép Dựa Trên Khóa (Key-Based Replication)

Còn được gọi là sao chép dữ liệu tăng dần dựa trên khóa (key-based incremental data replication), phương pháp này tận dụng một khóa sao chép (replication key) để xác định, định vị và thay đổi chỉ dữ liệu cụ thể đã thay đổi kể từ lần cập nhật cuối cùng. Bằng cách cô lập thông tin đó, nó tạo điều kiện cho quá trình sao lưu, làm việc chỉ với tải trọng (load) cần thiết. Mặc dù sao chép dựa trên khóa tạo ra một phương pháp làm mới dữ liệu mới nhanh chóng, nó đi kèm với nhược điểm là không thể sao chép dữ liệu đã xóa (deleted data).

Phân Phối Địa Lý Active-Active (Active-Active Geo-Distribution)

Phân Phối Địa Lý Active-Active, còn được gọi là sao chép ngang hàng (peer-to-peer replication), hoạt động hơi giống sao chép giao dịch, vì nó dựa trên dữ liệu giao dịch liên tục qua các nút. Với active-active, tất cả các nút trong cùng một mạng liên tục gửi dữ liệu cho nhau bằng cách đồng bộ hóa cơ sở dữ liệu với tất cả các nút tương ứng. Tất cả các nút cũng có thể ghi (writable), nghĩa là bất kỳ ai có thể thay đổi dữ liệu, ở bất kỳ đâu trên thế giới, và nó sẽ phản chiếu trong tất cả các nút khác. Điều này đảm bảo sự nhất quán thời gian thực, không quan trọng thay đổi có thể xảy ra ở đâu trên quả cầu.

Các Kiểu Dữ Liệu Được Sao Chép Không Xung Đột (Conflict-free Replicated Data Types - CRDTs) định nghĩa cách dữ liệu này được sao chép. Trong trường hợp sự cố mạng với một trong các bản sao, hoặc nút, các bản sao khác sẽ có tất cả dữ liệu cần thiết sẵn sàng để sao chép một khi nút đó quay lại trực tuyến. Đây là một giải pháp vững chắc (solid solution) cho các doanh nghiệp cần một vài trung tâm dữ liệu đặt trên khắp toàn cầu. Xem video bên dưới để xem ví dụ về trường hợp sử dụng Phân Phối Địa Lý Active-Active.

Sao Chép Đồng Bộ / Bất Đồng Bộ (Synchronous / Asynchronous Replication)

Với sao chép đồng bộ (synchronous replication), dữ liệu được ghi trong cả bản chính và bản sao cùng một lúc, do đó có tên đó. Sao chép bất đồng bộ (asynchronous replication), mặt khác, chỉ sao chép dữ liệu sang bản sao sau khi các ghi đã xảy ra trong bản chính. Sao chép bất đồng bộ không xu hướng xảy ra trong thời gian thực, mặc dù nó có thể. Bởi vì các hoạt động ghi được lên lịch (scheduled write operations) có xu hướng xảy ra theo lô (in batches) với bất đồng bộ, đôi khi dữ liệu bị mất, trong hầu hết các trường hợp khi sự kiện fail-over (chuyển đổi dự phòng) xảy ra. Tuy nhiên, bất đồng bộ là một giải pháp phù hợp khi phải sao chép dữ liệu trên khoảng cách xa, vì thành phần thời gian thực không phải là yếu tố quan trọng đến sứ mệnh (mission-critical).

Thách Thức Phổ Biến Của Việc Triển Khai Là Gì?

Duy trì dữ liệu trên nhiều thực thể đòi hỏi một tập hợp tài nguyên nhất quán. Chi phí của việc có một bản chính với nhiều thực thể bản sao có thể khá cao trong nhiều trường hợp. Để duy trì các hoạt động này và đảm bảo không có lỗi hệ thống xảy ra đòi hỏi một đội ngũ chuyên gia (dedicated team of experts). Và tùy thuộc vào kiến trúc, băng thông mạng (network bandwidth) có thể bị quá tải khi quy trình mới được đưa vào, điều này có thể ảnh hưởng đến độ trễ, đọc và ghi.

Redis làm cho sao chép dữ liệu trở nên nhanh chóng (expedient), hiệu quả về chi phí (cost-effective) và đơn giản để triển khai. Bạn đã sẵn sàng cho điều trị Redis Enterprise (Redis Enterprise treatment)?