Computer >> Máy Tính >  >> Lập trình >> Redis

Cơ sở dữ liệu tốt nhất cho Serverless

Serverless là lựa chọn tuyệt vời cho các nhà phát triển muốn xây dựng một ứng dụng từ đầu đến cuối với chi phí bảo trì và tài chính thấp nhất. Các chức năng serverless cho phép bạn chạy mã của riêng mình mà không cần duy trì cơ sở hạ tầng phụ trợ. Nhưng chúng không có trạng thái theo thiết kế, vì vậy bạn cần một kho lưu trữ dữ liệu bên ngoài. Vì vậy, câu hỏi tiếp theo là cơ sở dữ liệu nào phù hợp nhất cho serverless? Tin tốt là các nhà cung cấp cơ sở dữ liệu nhận thấy xu hướng không máy chủ và họ đang tung ra các dịch vụ không máy chủ hoặc cố gắng điều chỉnh sản phẩm của họ. Trong bài viết này, trước tiên tôi sẽ liệt kê những thứ tạo nên một cơ sở dữ liệu tuyệt vời cho serverless. Sau đó, tôi sẽ liệt kê cơ sở dữ liệu mà cá nhân tôi nghĩ là ứng cử viên để trở thành cơ sở dữ liệu tuyệt vời cho Serverless.

Điều gì làm cho cơ sở dữ liệu tuyệt vời cho Serverless?

  • Tính dễ sử dụng: Các nhà phát triển thế hệ tiếp theo không muốn dành hàng ngày và hàng tuần để học các công nghệ. Họ muốn học bằng cách xem video youtube thay vì đọc các trang tài liệu. Vì vậy, cơ sở dữ liệu cho serverless phải đơn giản và trực quan.
  • Đặt giá không cần máy chủ: Giá phải mở rộng về 0. Tại sao tôi phải trả tiền cho một thứ gì đó mà tôi không sử dụng. Các mô hình định giá dựa trên mỗi băng thông hoặc mỗi yêu cầu là không có máy chủ vì chúng tương quan với mức sử dụng chính xác của bạn. Cá nhân tôi thích theo yêu cầu hơn vì nó luôn dễ ước tính hơn băng thông.
  • Định giá thân thiện với nhà phát triển: Định giá phải đơn giản mà không có bẫy. Một số trang định giá rất phức tạp nên có thêm các bài báo và bài đăng trên blog để giải thích chi tiết. Một số nhà cung cấp có máy tính phức tạp. Thật không may, hầu hết các nhà cung cấp thích một mức giá phức tạp để giảm thiểu rủi ro của họ. Vì vậy, thật khó để biết trước số tiền bạn sẽ phải trả trước khi xem hóa đơn.
  • Kết nối Không có Máy chủ: Các chức năng không có máy chủ có thể mở rộng đến hàng trăm thậm chí hàng nghìn trong vài giây. Nếu cơ sở dữ liệu của bạn yêu cầu kết nối liên tục thì bạn có thể dễ dàng đạt được giới hạn kết nối của cơ sở dữ liệu của mình. Các kết nối dựa trên HTTP không gặp vấn đề như vậy vì những kết nối này nhẹ hơn và thường không có những hạn chế như vậy.
  • Độ trễ thấp: Độ trễ tăng thêm là chi phí cho các chức năng không có máy chủ. Nhưng cái giá thực sự phải trả là những người dùng không hài lòng khi không sử dụng trang web của bạn.
  • Tính di động: Nếu bạn muốn chuyển sang nhà cung cấp đám mây khác, bạn có phải viết lại lớp dữ liệu không. Hoặc bạn có thể kiểm tra ứng dụng của mình trên máy tính xách tay mà không cần kết nối với cơ sở dữ liệu từ xa.
  • Tính nhất quán: Nói chung, có sự cân bằng giữa tính nhất quán và hiệu suất. Các cơ sở dữ liệu nằm ở những vị trí khác nhau trên phổ hiệu suất và tính nhất quán. Một cơ sở dữ liệu tốt cần xác định rõ ràng các đảm bảo về tính nhất quán của nó để người dùng nhận thức được các vấn đề và rủi ro có thể xảy ra
  • Khả năng mở rộng: Cơ sở dữ liệu sẽ theo kịp khi ứng dụng của bạn bắt đầu nhận được thông lượng cao. Tốt nhất, việc mở rộng quy mô phải được tự động hoặc do nhà cung cấp đám mây quản lý. Bạn không nên lo lắng về điều đó.
  • Thân thiện với cạnh: Cloudflare worker và Fasty Compute là những công nghệ tuyệt vời cho phép bạn chạy các chức năng không máy chủ của mình ở vị trí gần nhất với người dùng của bạn. Những thứ đó yêu cầu kết nối dựa trên REST nhưng cũng có cơ sở dữ liệu được sao chép toàn cầu để giảm thiểu độ trễ.
  • Tính toàn cầu: Khi ứng dụng của bạn trở nên phổ biến trên toàn cầu, bạn cần một cơ sở dữ liệu cung cấp hiệu suất tốt trên toàn thế giới. Nhân rộng nhiều vùng là tính năng chính để thực hiện điều này. Nhưng hãy cẩn thận, kiểm tra giá cả. Tính năng này có thể tốn kém.

Cơ sở dữ liệu tốt nhất cho Serverless?

Trong phần này, tôi sẽ chia sẻ những ấn tượng và ghi nhận của tôi khi thử các cơ sở dữ liệu sau. Chúng không dựa trên phân tích khoa học nhưng tôi hy vọng sẽ cung cấp cho bạn ý tưởng trước khi thực hiện bất kỳ phân tích so sánh thực tế nào.

MongoDB (Atlas)

  • Dễ sử dụng:MongoDB là kho tài liệu và cơ sở dữ liệu NoSQL phổ biến nhất. API của nó rất đơn giản và trực quan nhờ vào mô hình dữ liệu dựa trên JSON.

  • Tính di động:Hầu hết tất cả các nhà cung cấp dịch vụ đám mây đều có các sản phẩm cơ sở dữ liệu với API MongoDB cũng như bạn có thể tự chạy MongoDB tại chỗ. Vì vậy, không có vấn đề về tính di động.

  • MongoDB Atlas gần đây đã công bố loại cơ sở dữ liệu Serverless của nó. Ấn tượng cá nhân của tôi là nó giống như một phiên bản MongoDB được lưu trữ dưới mô hình định giá không máy chủ. Như đã thấy ở đây, nhiều tính năng không được hỗ trợ cho cơ sở dữ liệu Serverless bao gồm SDK Node.js.

  • Kết nối không máy chủ:MongoDB Atlas không cung cấp cho bạn API dựa trên HTTP (ví dụ:REST). Bạn có thể đạt đến giới hạn kết nối một cách dễ dàng. Đó là lý do tại sao họ xuất bản các bài viết về cách tránh điều này https://docs.atlas.mongodb.com/best-practices-connecting-from-aws-lambda/

    ** _ (Cập nhật) MongoDB Atlas đã khởi chạy API dữ liệu dựa trên HTTP _

Cassandra (Datastax Astra)

  • Datastax Astra cung cấp API REST và GraphQL ngoài các trình điều khiển Cassandra gốc.
  • Tính dễ sử dụng:Đối với tôi, học Cassandra khó hơn so với MongoDB và Redis. Tuy nhiên, đội Datastax đã làm rất tốt với giao diện điều khiển, nó rất trực quan. Nhưng tôi vẫn nhớ rằng mình đã bị lạc trong các tài liệu với các phiên bản REST API khác nhau.
  • Định giá thân thiện với nhà phát triển:Định giá của Datastax Astra không phải là một việc đơn giản. Mỗi đơn vị được tính riêng (đọc, ghi, băng thông) và chúng có giá khác nhau tùy thuộc vào nhà cung cấp đám mây và thậm chí cả khu vực. Datastax có định nghĩa riêng về đơn vị đọc / ghi (RRU và WRU).

DynamoDB (AWS)

  • Dễ sử dụng:Nếu bạn là người dùng AWS, thật dễ dàng để bắt đầu và làm việc với DynamoDB. Tuy nhiên, tôi nghĩ MongoDB có một API truy vấn dễ dàng và trực quan hơn.
  • Kết nối không máy chủ:Kết nối DynamoDB dựa trên http, bạn không gặp bất kỳ vấn đề nào về giới hạn kết nối.
  • Tính di động:Vấn đề lớn nhất là ở đây. Bạn không thể sử dụng DynamoDB ở bất kỳ đâu ngoài AWS.

FaunaDB

  • Tính nhất quán:Có lẽ FaunaDB là tốt nhất trong danh sách này về tính nhất quán. Nó đảm bảo tính nhất quán cùng với sự nhân rộng toàn cầu. Nhưng hãy cẩn thận rằng điều này đi kèm với chi phí hiệu suất bổ sung. Cân nhắc xem bạn có thực sự cần một sự nhất quán mạnh mẽ như vậy không.
  • Hiệu suất:Nó có độ trễ cao hơn những cái khác do tính nhất quán cao.
  • Tính dễ sử dụng:Thành thật mà nói, FQL là FQL khó nhất đối với tôi để tìm hiểu và sử dụng. Nhưng FaunaDB cũng hỗ trợ API GraphQL, vì vậy việc này có thể dễ dàng hơn.
  • Kết nối không máy chủ:Nhờ kết nối dựa trên HTTP, FaunaDB không gặp vấn đề với giới hạn kết nối.

Upstash

  • Dễ sử dụng:Redis có lẽ là API dễ học nhất trong danh sách này. Upstash giúp bạn dễ dàng sử dụng trên đám mây với giao diện trực quan và đơn giản.
  • Định giá thân thiện với nhà phát triển:Định giá upstash dựa trên mỗi yêu cầu. Nó cũng đặt giới hạn giá, vì vậy nó đảm bảo rằng bạn sẽ không trả nhiều hơn số tiền định trước.
  • Hiệu suất:Nhờ khả năng lưu trữ dựa trên bộ nhớ, Upstash đưa ra số liệu về độ trễ tốt nhất. Đánh dấu vào phần này để biết ý tưởng.
  • Nếu bạn cần các khả năng truy vấn phức tạp (nối, v.v.), cấu trúc dữ liệu Redis có thể không thực tế. Trong trường hợp này, bạn có thể cần một cơ sở dữ liệu có hỗ trợ SQL tốt hơn.

Firestore

  • Tính dễ sử dụng:Firestore là một trong những ứng dụng tốt nhất trong danh sách cho thể loại này. Giao diện người dùng và API khá trực quan.
  • Tính di động:Cũng giống như DynamoDB, Firestore gặp sự cố khóa nhà cung cấp. Miễn là bạn sử dụng Google Cloud là tốt.
  • Hiệu suất:Tôi đã nghe một số phàn nàn về hiệu suất của nó trước đây. Cá nhân tôi đã trải nghiệm độ trễ của nó tồi tệ hơn những người khác cùng với FaunaDB. Vì vậy, có một dấu chấm hỏi ở đây.

Các từ đóng

Tôi tin rằng serverless là tương lai của sự phát triển và đang có quá trình chuyển đổi sang serverless. Serverless cho phép các nhà phát triển và các công ty nhỏ tạo ra các sản phẩm có thể mở rộng với ngân sách rất hạn chế. Cơ sở dữ liệu phải là một phần của quá trình chuyển đổi này với các dịch vụ phù hợp với các nguyên tắc không máy chủ.