Bài viết gốc đăng tải ngày 30 tháng 4 năm 2018 tại ObjectRocket.com/blog
Polyglot persistence (đa ngôn ngữ lưu trữ) đề cập đến việc sử dụng các công nghệ lưu trữ dữ liệu khác nhau để xử lý nhu cầu lưu trữ dữ liệu khác nhau. Đây là một nhánh của polyglot programming — sử dụng nhiều ngôn ngữ lập trình để xây dựng ứng dụng. Nói đơn giản, đó là một ứng dụng sử dụng nhiều hơn một công nghệ database cốt lõi.
Việc sử dụng đúng công cụ cho việc đúng quan trọng và cũng quan trọng như vậy là sử dụng đúng database cho việc đúng. Mỗi database có điểm mạnh, điểm yếu và đặc điểm. Có hàng trăm database ngoài kia, tuy nhiên, nên rất khó để theo kịp.
Quản lý nhu cầu lưu trữ dữ liệu
Monoglot® (đơn ngôn ngữ) vẫn (và vẫn) ổn cho ứng dụng đơn giản sử dụng một loại workload. Tuy nhiên, ứng dụng nhanh chóng trở nên phức tạp hơn.
Một nền tảng E-commerce đơn giản sử dụng các công cụ sau:
- Dữ liệu session để thêm món vào giỏ hàng
- Công cụ tìm kiếm để tìm sản phẩm
- Engine khuyến nghị, mua tiềm năng trong tương lai dựa trên lịch sử mua hàng
- Nền tảng thanh toán cho dịch vụ geolocation
Triển khai polyglot persistence cho phép bạn cung cấp năng lượng cho ứng dụng với dữ liệu từ các loại lưu trữ khác nhau. Bạn có thể kéo transaction tài chính hoàn tất từ Oracle® trong khi theo dõi thông tin người dùng trong MongoDB® và để Redis® xử lý cache.
Triển khai polyglot persistence và xem xét tùy chọn
Nhiều khiếu nại về độ phức tạp của việc xây dựng polyglot persistence xuất phát từ việc cố gắng ép giải pháp lưu trữ vào dự án mà chúng không phù hợp. Điều đó dẫn đến việc tạo ra nhiều quy trình hỗ trợ và một kiến trúc quái vật ngày càng lớn.
Lập kế hoạch cẩn thận loại bỏ 90% vấn đề tiềm ẩn. Xem xét mục tiêu của bạn. Bạn có cần một chức năng kinh doanh cốt lõi không? Bạn có cần bắt đầu chuyển đổi phần lớn hoạt động của công ty sang mô hình này không?
Sử dụng đúng công nghệ lưu trữ dữ liệu
Đội của bạn đã tạo kiến trúc polyglot persistence trước đây chưa? Thách thức để tận dụng đúng giải pháp dữ liệu nếu không có kinh nghiệm thiết kế loại mô hình này. Làm thế nào bạn biết nếu bạn đang bắt đầu với dự án đúng?
Các loại lưu trữ dữ liệu
Tổ chức thường kết thúc bằng việc sử dụng một số nguồn dữ liệu khác nhau để cung cấp cho ứng dụng của họ. Hãy xem lại một số tùy chọn lưu trữ phổ biến:
Transactional databases, còn gọi là Relational Database Management Systems (RDBMS), cung cấp tính toàn vẹn dữ liệu bằng cách tổ chức thông tin vào bảng với hàng và cột. Bạn truy xuất dữ liệu bằng cách sử dụng câu lệnh cú pháp gọi là query. Nhiều tổ chức lớn sử dụng nhiều các lựa chọn phổ biến như Microsoft® SQL Server® và Oracle®. Một nhược điểm của transactional database là chúng có thể khó mở rộng khi nhu cầu lưu trữ tăng. Cũng vậy, tìm kiếm chậm khi dữ liệu trở nên dày đặc và phức tạp để truy cập.
Non-transactional databases chuyển từ việc sử dụng hệ thống RDBMS dạng bảng, cho phép khả năng mở rộng tăng và tìm kiếm nhanh hơn. Chúng cũng cặp đôi tốt với search và analytic engine như Elasticsearch. Mọi người thường dùng thuật ngữ NoSQL để mô tả các database này.
Các loại lưu trữ phi giao dịch (Non-transactional storage types):
Các loại lưu trữ phi giao dịch bao gồm các tùy chọn sau:
- Key-value: Database này sử dụng key trỏ đến vị trí lưu trữ một mảnh dữ liệu. Một số dùng hash-table, trong khi những cái khác như Redis giữ cặp key-value trong bộ nhớ để truy cập nhanh.
- Document: Những cái này bao gồm cặp key-value nén vào document cho phép cấu trúc bằng encoding như JSON hoặc XML. Phiên bản mã nguồn mở phổ biến bao gồm MongoDB và CouchDB®.
- Column: Bạn đặt dữ liệu vào các cột được nhóm thay vì hàng như cấu trúc RDBMS. Apache® Cassandra và HBase® sử dụng mô hình này.
- Graph: Những cái này sử dụng cấu trúc graph, node, edge và property để tổ chức và truy xuất dữ liệu. Neo4j® là ví dụ đang tăng trưởng về phổ biến.
Làm đúng polyglot persistence nghĩa là biết tùy chọn dữ liệu nào hoạt động tốt nhất cho nhu cầu ứng dụng của bạn.
Câu hỏi cần hỏi
Câu hỏi về cấu trúc dữ liệu
- Dữ liệu của bạn có cấu trúc tự nhiên không? Có phi cấu trúc không?
- Nó được kết nối với dữ liệu khác như thế nào?
- Nó được phân phối như thế nào?
- Bạn đang xử lý bao nhiêu dữ liệu?
Câu hỏi về mô hình truy cập
- Tỷ lệ đọc/ghi của bạn là bao nhiêu?
- Nó đồng đều hay ngẫu nhiên?
- Đọc hay ghi quan trọng hơn cho ứng dụng của bạn?
Câu hỏi về nhu cầu tổ chức
- Chúng ta cần authentication không? Loại nào?
- Chúng ta cần encryption không?
- Chúng ta cần backup không?
- Chúng ta cần disaster site không?
- Chúng ta cần plugin không?
- Mức độ giám sát nào được yêu cầu?
- Driver nào cần thiết?
- Ngôn ngữ nào chúng ta nên dùng?
- Chúng ta nên dùng công cụ bên thứ ba không?
Mời người phù hợp
Nhiều công ty sẽได้ lợi từ việc mời chuyên gia kiến trúc polyglot để giúp với các quyết định này. Như vậy, bạn tránh kết thúc với gánh nặng bảo trì thêm do kiến trúc quá phức tạp. Một số vendor database mã nguồn mở phổ biến cung cấp dịch vụ quản lý. Nhưng họ có cho bạn biết nếu nguồn dữ liệu của họ không phù hợp với nhu cầu của bạn không?
Tốt nhất là liên hệ công ty hiểu điểm mạnh và yếu của các tùy chọn dữ liệu khác nhau để bắt đầu với polyglot persistence. Rackspace ObjectRocket cung cấp cho bạn cái nhìn 360 độ về nhiều tùy chọn database áp dụng cho nhu cầu kinh doanh của bạn. Chúng tôi mang đến DBA và kỹ sư phù hợp nhất để đưa giải pháp big data của bạn lên cấp độ tiếp theo.
Tìm hiểu thêm về Dịch Vụ DBA của Rackspace.
Sử dụng tab Phản Hồi để đưa ra bình luận hoặc đặt câu hỏi. Bạn cũng có thể nhấp vào Sales Chat để trò chuyện ngay và bắt đầu cuộc hội thoại.
Xem Điều Khoản Dịch Vụ Đám Mây Rackspace.