Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Cơ Sở Dữ Liệu

Khai Thác Distributed SQL Quy Mô Lớn Với CockroachDB Của ObjectRocket

Bài viết gốc đăng tải tháng 8 năm 2019 tại ObjectRocket.com/blog

CockroachDB® là một phần của họ database technology của Rackspace ObjectRocket. Khả năng mở rộng của CockroachDB rất thú vị, với sao chép và phân phối dữ liệu (tối đa hóa high availability), tự động cân bằng lại database, và multi-geo data center hỗ trợ tuân thủ data-domiciling, chỉ nêu vài cái. Và tất cả điều này với độ toàn vẹn dữ liệu cao và distributed ACID transaction vì data resiliency của CockroachDB là must-have.

Chúng tôi muốn chia sẻ một số highlight về scaling với CockroachDB và xem qua những gì Rackspace ObjectRocket’s DBaaS cung cấp. Là một developer, khi bạn sử dụng CockroachDB trên nền tảng managed-services của chúng tôi, bạn có thể tập trung vào xây dựng ứng dụng của bạn và không phải lo lắng về sự phức tạp của việc chạy database.

Khai Thác Distributed SQL Quy Mô Lớn Với CockroachDB Của ObjectRocket

Ngày nay, scaling là quan trọng nhất

Hai mươi năm trước, lưu trữ là mối quan tâm tốn kém, và thuật ngữ Big Data làm rõ rằng chúng ta đối mặt với thách thức lớn. Chúng ta có lượng dữ liệu khổng lồ và không có cách tốt để phân tích hoặc sử dụng dữ liệu đó. Nhưng bây giờ, công nghệ có thể xử lý Big Data và loạt truy vấn và transaction liên tục fixed trong thế giới hiện đại của e-commerce, phần mềm tài chính, nghiên cứu, quản trị kinh doanh, và khai thác dữ liệu. Một ranh giới công nghệ khác, Internet of Things, tăng số thiết bị tạo dữ liệu và chạy transaction trực tuyến. Bây giờ bạn có thể thêm camera, công tắc đèn, và tủ lạnh vào danh sách dài các thiết bị đang tạo dữ liệu hữu ích trực tuyến.

Trong bối cảnh này, việc triển khai chiến lược scaling đáp ứng nhu cầu hiện tại trên data store của bạn và cũng cho phép sự tăng trưởng chắc chắn trong dữ liệu và nguồn mới, chưa tưởng tượng được, của thêm dữ liệu và transaction là then chốt.

Scaling đơn giản nghĩa là tăng (hoặc giảm) tài nguyên database cần thiết để xử lý workload hiện tại một cách phù hợp. Scale theo các cách sau:

  • Vertical scaling: Thêm (hoặc xóa) RAM, dung lượng lưu trữ và CPU cho node bên dưới trong cluster.
  • Horizontal scaling: Thêm nhiều node hơn khi cần để xử lý workload (thay vì thêm tài nguyên cho một node đơn lẻ).

Hầu hết relational database dùng vertical scaling. Tuy nhiên, hầu hết distributed database (thường phi quan hệ) dùng horizontal scaling — tốt hơn cho tải transactional nặng, truy vấn thường xuyên, đọc/ghi, và yêu cầu độ bền. Bạn chỉ có thể scale vertically đến một giới hạn, vì giới hạn kỹ thuật (tính toán) của một phần cứng đơn lẻ.

Tuy nhiên, scaling horizontally không bị giới hạn về mặt tính toán và chỉ bị giới hạn bởi lượng phần cứng có sẵn và những gì phần mềm hỗ trợ. Điều làm CockroachDB độc đáo là nó cung cấp giải pháp tuyệt vời cho việc horizontally scaling relational database (truyền thống không thể) để đáp ứng reads và writes real-time nhanh chóng inherent trong distributed online transaction processing (OLTP) systems. Bạn cũng có thể scale CockroachDB vertically, nhưng scaling bằng cách thêm node là phương pháp ưu tiên.

Điều gì làm cho CockroachDB scaling đặc biệt?

Theo Derek Johnson, Product Manager tại Rackspace ObjectRocket, khía cạnh thú vị nhất của scaling CockroachDB là nó thông minh như thế nào. Sau khi bạn tạo và cấu hình node đầu tiên, thêm các node tiếp theo được đơn giản hóa. Trong môi trường multi-node, bạn có thể tận dụng các tính năng mạnh mẽ của CockroachDB là auto-scale, cân bằng dữ liệu, và tự quản lý yêu cầu tuân thủ geo-specific để giữ data store của bạn tin cậy, tuân thủ và performant. Với cấu hình tối ưu, bạn có thể tận dụng sức mạnh thực sự của CockroachDB. Ví dụ, bằng cách sử dụng flag —locality để mô tả region và availability zone của node, CockroachDB triển khai geo-partitioning và tự động giữ dữ liệu trong region được chỉ định.

Dưới đây là phân tích một số highlight về scaling:

Độ toàn vẹn dữ liệu khi data store mở rộng

  • Transaction tuân thủ ACID, và bạn có thể dùng chúng theo cách thông thường, bằng lệnh SQL như BEGIN hoặc COMMIT.
  • CockroachDB khác với relational database. Khi scaling, nó phân phối cả reads và writes trên tất cả node liên quan thay vì tất cả writes đi đến một node đơn lẻ. Multi-active availability này là phiên bản HA của CockroachDB và cho phép geo-spanning.
  • CockroachDB dùng consensus replication bằng cách gửi yêu cầu replication đến ít nhất ba node khác nhau và chờ commit cho đến khi hầu hết node báo cáo đã replicate thành công dữ liệu.
  • Mediated transaction, với intents và record cho mỗi write, ngăn chặn xung đột transaction.
  • CockroachDB dùng hai object để mediate tất cả transaction: transaction record và write intent, check-in với nhau và, nếu cần, restart transaction để đảm bảo nó commit giá trị mới nhất.
  • CockroachDB cung cấp cân bằng tốt giữa hiệu suất và độ toàn vẹn dữ liệu nhờ data balance và replication.

Geo-partitioning đến cứu rỗi!

Thay vì tạo shard sau đó geographically siloed, cải thiện latency nhưng ngăn chặn cross-geo query, CockroachDB dùng cài đặt cấu hình ở mức range để replicate dữ liệu trong region được định nghĩa. CockroachDB mang lại giá trị double-purpose với khả năng geo-partitioning độc đáo. Bằng cách cấu hình region cụ thể để lưu dữ liệu, bạn đạt được cả hiệu suất ứng dụng (dữ liệu gần ứng dụng người dùng hơn) và tuân thủ GDPR data domiciling.

CockroachDB Admin UI có hiển thị địa lý tuyệt vời gọi là Node Map, hiển thị bản đồ thế giới với icon cho tất cả node và chi tiết cho mỗi node. Hiển thị đồ họa này giúp lập kế hoạch và troubleshoot vấn đề latency giữa data store. Khi truy cập CockroachDB qua UI ObjectRocket Mission Control, bạn có thể dễ dàng link đến CockroachDB Admin UI để xem Node Map.

Thêm node mới thủ công với cấu hình phù hợp cho phép scale-out thông minh và nhanh chóng

  • Nếu bạn muốn spin up node mới chủ động, bạn có thể dùng lệnh qua CLI hoặc Admin UI để tạo node và đặt flag cần thiết và cấu hình khác.
  • Mặc dù bạn cần stop và start nhiều database để scale, với CockroachDB, bạn có thể dễ dàng thêm nhiều node hơn trong khi hệ thống đang under load.

Bằng cách sử dụng orchestration, scaling được xử lý tự động, không downtime

CockroachDB cung cấp các ưu đãi scaling sau:

  • Scaling CockroachDB qua platform orchestration làm cho nó dễ dàng và cho phép automation mạnh mẽ. Ví dụ, khi bạn dùng Kubernetes (như ObjectRocket làm), một lệnh đơn có thể scale-out CockroachDB, provisioning tài nguyên mới và spin up pod thêm khi cần.
  • Rebalancing dữ liệu trên các node xảy ra tự động, ngay cả giữa data center và nhà cung cấp đám mây khác nhau.
  • Distributed transaction nghĩa là không có tác động lên workload, không downtime, và không tăng latency.
  • Tối ưu hóa việc sử dụng server đều đặn trên tất cả node là kết quả tự nhiên của auto-scaling của CockroachDB.

Gộp tất cả đó trong một dịch vụ quản lý

ObjectRocket cung cấp dịch vụ quản lý hoàn chỉnh cho data store CockroachDB của bạn bằng cách sử dụng kiến trúc container-based Kubernetes. Dịch vụ bao gồm tư vấn thiết kế và triển khai, hỗ trợ kỹ thuật đầy đủ, và tất cả lợi ích của phiên bản enterprise-licensed của CockroachDB.

Các tính năng chính của giải pháp CockroachDB được quản lý bao gồm:

  • Cluster High Availability (HA) ba node
  • Truy cập CockroachDB Admin UI qua UI ObjectRocket
  • IP address whitelisting
  • Xác thực user
  • Transport Layer Security (TLS)

Điều này nghĩa là bạn có data store quan hệ, ACID-compliant với interface SQL thoải mái và PostgreSQL wire compatibility, nhưng với HA tự động, dễ dàng scalability, và geographic scaling.

Managed CockroachDB của ObjectRocket cho phép bạn chọn tùy chọn tốt nhất cho nhu cầu dữ liệu của bạn từ các loại node được định nghĩa trước và sau đó horizontally scale bằng cách thêm bao nhiêu node loại đó tùy thích. Platform Kubernetes-based của chúng tôi tự động thay thế node thất bại hoặc có vấn đề để chúng tôi có thể đảm bảo cluster của bạn luôn up và available.

Đây là thời điểm tuyệt vời để xem CockroachDB và những gì Rackspace ObjectRocket cung cấp với managed services của chúng tôi. Để có insight vào cách managed offering của CockroachDB có thể giải quyết yêu cầu data store của bạn, đọc blog Top 5 Use Cases của chúng tôi. Cockroach® có tài liệu tuyệt vời, và nếu bạn quan tâm đến cuộc hội thoại về CockroachDB hoặc muốn tìm hiểu thêm, hãy liên hệ chúng tôi tại Rackspace.

Nhấp vào đây để xem Điều Khoản Dịch Vụ Đám Mây 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.