Apache Cassandra đang trở thành cơ sở dữ liệu tốt nhất để xử lý các tài liệu JSON. Nếu bạn là một nhà phát triển Cassandra thấy tuyên bố đó khiêu khích, hãy đọc tiếp.
Trong bài viết trước, chúng ta đã thảo luận về việc sử dụng API dữ liệu và lập mô hình dữ liệu để biến Cassandra thành một trải nghiệm dành cho nhà phát triển phù hợp hơn với cách suy nghĩ của nhà phát triển, nhờ đó cải thiện năng suất của nhà phát triển trong khi vẫn duy trì hiệu suất và quy mô cơ sở dữ liệu hợp lý. Đó là một giả thuyết tuyệt vời và là một giả thuyết cần được kiểm tra trong bối cảnh của một thành ngữ nhà phát triển và cộng đồng nhà phát triển cụ thể.
Mongoose , một thư viện ánh xạ dữ liệu đối tượng thường được sử dụng với trình điều khiển MongoDB, là một dự án mã nguồn mở với một cộng đồng quan trọng gồm các nhà phát triển JavaScript xung quanh nó. Tại dự án Stargate , cổng dữ liệu API mã nguồn mở được thiết kế để hoạt động với Cassandra, chúng tôi đã hợp tác với Mongoose và chúng tôi đang làm việc trên một API JSON sắp tới sẽ được phát hành cùng với một phiên bản Mongoose sẽ hoạt động thông qua JSON đó API để kết nối với Cassandra. Điều này tạo ra một ngăn xếp đầu cuối cho các nhà phát triển Mongoose hoàn toàn là nguồn mở. Nó đang thay đổi cuộc chơi đối với các nhà phát triển Mongoose và mở ra một chương mới quan trọng cho Cassandra.
Trong bài viết này, tôi sẽ thảo luận cách cung cấp thành ngữ JSON thân thiện với nhà phát triển bằng cách sử dụng Cassandra cùng với Stargate và cách chúng tôi đang làm việc để làm điều đó cho các nhà phát triển Mongoose.
Vào tháng 10 năm 2022, chúng tôi đã phát hành phiên bản mới của Stargate. Với Phiên bản 2 mới, các API riêng lẻ không còn được nhúng trong mã điều phối viên Stargate cốt lõi mà thay vào đó được tách ra thành các dịch vụ riêng lẻ. Điều này cải thiện hiệu quả hoạt động của Stargate; các dịch vụ API riêng lẻ hiện có thể được triển khai và mở rộng quy mô một cách độc lập. Điều này cũng làm cho các dịch vụ API mới dễ phát triển hơn. Miễn là chúng tuân theo ranh giới dịch vụ, các dịch vụ này có thể được phát triển song song và độc lập với công việc phát triển cốt lõi của Stargate.
Sau đó, chúng tôi tìm kiếm một trải nghiệm thực sự đặc trưng mà chúng tôi có thể cung cấp cho các nhà phát triển. Với 18 triệu nhà phát triển, JavaScript là ngôn ngữ lập trình phổ biến nhất thế giới và JSON là cách tiêu chuẩn mà các nhà phát triển JavaScript cấu trúc dữ liệu. Tuy nhiên, 18 triệu người không phải là một cộng đồng; đó là nhiều cộng đồng. Chúng tôi cần cộng đồng JavaScript “Goldilocks” — đủ lớn để trở nên quan trọng, nhưng đủ nhỏ để được tập trung. Chúng tôi đã tìm thấy cộng đồng phù hợp được xây dựng xung quanh Mongoose, một thư viện trình ánh xạ dữ liệu đối tượng được sử dụng với các ứng dụng kết nối với MongoDB. Mongoose có một số đặc điểm quan trọng:
Các nhà phát triển không thực sự tương tác trực tiếp với cơ sở dữ liệu nhiều như một mô hình dữ liệu. Trong API tài liệu ban đầu của Stargate, API xử lý JSON bằng cách làm cho nó trông giống như một bảng Cassandra truyền thống. Điều này đặt gánh nặng lên các nhà phát triển định hướng JSON khi phải suy nghĩ về cấu trúc dữ liệu của Cassandra và đặt gánh nặng lên logic lập chỉ mục theo hàng của Cassandra vì tài liệu JSON trải rộng trên nhiều hàng.
API JSON mới của chúng tôi khác với mô hình dữ liệu này và thay vào đó dựa vào mô hình dữ liệu mà chúng tôi gọi là “siêu băm nhỏ”. Bạn có thể tìm hiểu thêm về siêu băm nhỏ bằng cách xem bài nói chuyện của Aaron Morton tại sự kiện Cassandra Forward gần đây. Nói tóm lại, chúng tôi tận dụng bản chất cột rộng của Cassandra để lưu trữ một tài liệu trên mỗi hàng, biết rằng một hàng Cassandra có thể xử lý ngay cả những tài liệu rất lớn. Chúng tôi cũng có một tập hợp các cột trong hàng đó rõ ràng để lưu trữ các đặc điểm siêu dữ liệu tiêu chuẩn của tài liệu JSON. Bây giờ chúng tôi có thứ gì đó dễ lập chỉ mục hơn, cũng như phương tiện bảo quản và truy xuất siêu dữ liệu.
Sau đó, chúng tôi sẽ cung cấp mô hình dữ liệu này bằng API JSON mới của mình, sử dụng cùng một đặc tả mQuery mà Mongoose sử dụng làm yêu cầu hướng dẫn của chúng tôi đối với lệnh gọi mà API cần hỗ trợ. Khi hoàn tất, điều này sẽ cho phép bất kỳ ứng dụng nào trong số hơn 2 triệu ứng dụng phụ thuộc vào Mongoose chạy với Cassandra nguồn mở hoặc dịch vụ Cassandra được lưu trữ trên DataStax, Astra DB , chỉ với một thay đổi về cấu hình.
Với Mongoose và API JSON mới, chúng tôi sẽ cung cấp trải nghiệm hoàn toàn tự nhiên cho các nhà phát triển JavaScript định hướng JSON, mang lại cho họ quy mô và hiệu suất của Cassandra làm nền tảng cho mô hình dữ liệu JSON xác thực.
Karpov, người tạo ra Mongoose cũng đã phát biểu tại sự kiện Cassandra Forward gần đây (bạn có thể xem phát lại tại đây ), trình bày một ứng dụng thương mại điện tử đơn giản sử dụng phiên bản Stargate của Mongoose, Stargate mã nguồn mở và phiên bản DataStax Enterprise (DSE) của Cassandra. Bạn có thể tải xuống mã làm việc cho ứng dụng này và các phần nền tảng hỗ trợ từ GitHub . Mặc dù chúng tôi có đủ mã để chạy ứng dụng này nhưng chúng tôi vẫn chưa hoàn thành mã. Ví dụ: chúng tôi chạy với DSE ngay bây giờ vì chúng tôi cần lập chỉ mục gắn liền với lưu trữ (SAI), hoạt động với DSE và được lên kế hoạch phát hành trong Cassandra 5.0 vào cuối năm nay.
Cassandra không phải là một phần mềm tĩnh; đó là một dự án nguồn mở sôi động và đang phát triển. Vì vậy, chúng tôi cũng đang tiếp tục truyền thống lâu đời của Cassandra về việc sử dụng các tính năng như SAI xuất hiện ở phía máy khách để thúc đẩy các thay đổi ở phía cơ sở dữ liệu. không chỉ làm cho ứng dụng khách Mongoose và API JSON của Stargate trở nên tốt hơn mà còn bổ sung các tính năng mới mạnh mẽ cho Ngôn ngữ truy vấn Cassandra. Đây là một lời nhắc nhở tuyệt vời rằng kỹ sư dữ liệu và nhà phát triển ứng dụng không phải là hai cộng đồng khác nhau, mà là các nhóm bổ sung cho nhau của cộng đồng Cassandra mở rộng.
Và JSON chỉ là bước đầu tiên. Về cơ bản, những gì chúng tôi sẽ làm là lấy các khối xây dựng của Cassandra, Stargate và mô hình dữ liệu Cassandra hiệu quả hợp lý và xây dựng cơ sở dữ liệu tài liệu mà bạn tương tác thông qua API JSON. Nói cách khác, chúng tôi đã sử dụng siêu băm nhỏ để tạo cơ sở dữ liệu được xây dựng có mục đích nhằm phục vụ tốt hơn cho cộng đồng các nhà phát triển Mongoose.
Với kiến trúc mô-đun của Stargate v2 và điểm chứng minh của Mongoose cho cách tiếp cận đặc ngữ, chúng tôi sẵn sàng tiếp nhận các cộng đồng nhà phát triển mới tổ chức xung quanh một thành ngữ phát triển phần mềm cụ thể. Quá trình chúng tôi khai thác Cassandra cho Mongoose có thể lặp lại — và đó là quá trình chúng tôi sẽ lặp lại. Khi làm như vậy, chúng tôi đã mở rộng đáng kể số lượng nhà phát triển và các trường hợp sử dụng mà Cassandra có thể giải quyết, đây là loại mục tiêu xứng đáng với một dự án nguồn mở.
của Markstone. Mark là giám đốc sản phẩm tại DataStax. Anh ấy là một chuyên gia công nghệ kỳ cựu với nhiều năm kinh nghiệm trong quản lý sản phẩm, quản lý chương trình và quản lý con người. Luôn làm việc như một phần của mô liên kết giữa các bên liên quan trong kinh doanh và các bên liên quan về kỹ thuật, Mark thích nâng cao trải nghiệm của nhà phát triển trong các nền tảng công nghệ và giúp các tổ chức gặp gỡ các nhà phát triển tại nơi họ đang ở.