OldSQL vs NoSQL vs NewSQL

nosql-databases

OldSQL

CSDL SQL truyền thống đã tồn tại hàng thập kỉ và có mặt gần như ở mọi app chúng ta sử dụng ngày nay. Nếu bạn triển khai app với hiệu suất tương đối thì điều đó là tuyệt vời, khỏi phải thay CSDL mới. Việc thay đổi CSDL không chỉ tốn công sức mà còn thể có nhiều rủi ro.

Điểm mạnh

  • SQL là quy chuẩn chung được chứng minh tính ổn định vài chục năm nay rồi
  • Tích hợp với lớp ORM như Hibernate hoặc ActiveRecord
  • Hỗ trợ tốt giao tác phía client
  • Sử dụng query và report
  • Thị phần lớn trên thị trường

Điểm yếu

  • Rất khó để mở rộng (kiến trúc không hướng mở rộng)
  • SQL truyền thống được xây dựng trên ý tưởng “one size fit all”, application thông thường thì sử dụng tốt nhưng sẽ gặp vấn đề khi CSDL phình to
  • Điều chỉnh tham số rất phức tạp và thường yêu cầu chuyên gia để cân bằng giữa hiệu năng, an toàn dữ liệu và lượng dữ liệu sử dụng

NoSQL

Vì tiêu chí khác nhau nên cũng có rất nhiều hệ thống NoSQL khác nhau.

Loại ưu tiên tính sẵn sàng (availability)

Ví dụ bạn đang nghiên cứu các dữ liệu của máy cảm biến, app của bạn ghi dữ liệu vào CSDL và thường không chỉnh sửa. Bạn muốn lưu trên cloud và không quan tâm lắm đến tính nhất quán của nó khi phân phát đến các điểm truy cập…

Tương tác giữa app của bạn và CSDL chỉ đơn giản có “CREATE” và “GET”. Quan trọng nhất là CSDL phải luôn chạy để nhận thêm nội dung mới và phải luôn gửi nội dung khi được yêu cầu kể cả khi nội dung đó không phải mới nhất. Các hệ thống điển hình của CSDL này là DynamoDB, RiakCassandra.

Loại ưu tiên tính linh hoạt (flexibility)

Loại này nổi tiếng hơn và có thể kể đến MongoDBCouchDB, loại này lưu dữ liệu theo thiết kế JSON, thường được gọi là schemaless (không có schema). CSDL loại này không có sự nhất quán về schema trong tất cả các bản ghi, điều này khiến việc quản lí schema ít bị đóng khung hơn nhưng cũng rối ren hơn. Những nhóm dev nhỏ và data đơn giản thì thường sử dụng loại này.

Các hệ thống khác thì mở rộng bằng việc quản lí và sắp xếp key-value tốt hơn. Redis là một thư viện nổi tiếng tạo nhiều danh sách có thể sắp xếp tiện cho xếp hạng. Tùy vào mục đích của bạn mà có thể thêm các tính năng khác cho hệ thống.

Loại đặc biệt

Phổ biến nhất là hệ thống được điều chỉnh phục vụ cho xử lý dạng đồ thị (graph) như Neo4j. Ví dụ khác là CSDL dạng array; SciDB sử dụng Python và R để truy cập MPP array data để nghiên cứu khoa học. Accumulo là sự dung hợp giữa kiểu CSDL cột rộng của Cassandra và BigTable nhưng tập trung vào từng ô hơn. Hệ thống như etcd phân phối dữ CSDL tập trng vào lưu trữ cấu hình data cho các dịch vụ khác. Elasticsearch là hệ thống nổi tiếng ứng dụng tìm kiếm text trong app.

Điểm mạnh

  • Khả năng mở rộng tốt hơn SQL truyền thống
  • Rất nhiều hệ thống NoSQL  được tối ưu để hỗ trợ data không quan hệ ví dụ như log message, XML và JSON cũng như document không có kiến trúc cụ thể nên bạn không cần quan tâm schema khi viết mà chỉ cần xem schema khi đọc.

Điểm yếu

  • Hệ thống dạng này không hỗ trợ giao tác (ACID)
  • OLAP query yêu cầu lượng code lớn để thực hiện. Do đó sự dễ đọc (readability) sẽ giảm khi CSDL phình to.

NewSQL

Ví dụ, HANA được tạo chỉ để phục vụ báo cáo cho doanh nghiệp, hoàn toàn phù hợp với triển khai SAP. Hekaton thêm một bộ nhớ trong thông minh vào Microsoft SQL server. Cả hai hệ thống là không phân cụm (non-cluster) và được thiết kế để thay thế hoặc tăng cường việc triển khai trực tiếp OldSQL.

NuoDB là SQL database phân cụm đầu tiên tập trung vào cloud-ops: chạy trên nhiều node xuyên suốt nhiều trung tâm data và để hệ thống đằng sau quản lí dữ liệu cục bộ và nhất quán. NuoDB là hệ thống tốt nhất xét trên tính nhất quán của NewSQL.

Các loại khác tập trung vào các bản phân tích kiểu phân cụm như MemSQL. MemSQL được phân phát kèm tính năng của MySQL và thường cho phân tích OLAP nhanh hơn các OldSQL khác (khả năng cập nhật data nhanh hơn)

VoltDB kết hợp stream bản phân tích, bảo đảm ACID và tính phân cụm. Nhờ đó, VoltDB vừa có thể là hệ thống ghi chép cho các app yêu cầu lượng data lớn, vừa có thể là bộ máy xử lý dung lượng lớn data truyền vào. VoltDB là sự lựa chọn hoàn hảo cho CSDL yêu cầu đưa ra quyết định nhanh chóng.

Nếu mục tiêu của bạn có mô hình “ingest, analyze, decide” như sau:

  • Dung lượng data cần truy cập lớn
  • Các sự kiện truyền vào luôn ở dạng stream (máy cảm biến, điện thoại di động, điểm truy cập mạng) và cần phải tính toán tốc độ phản hồi và phân tích mỗi một sự kiện trong thời gian thực.

NewSQL có thể là sự lựa chọn tốt với khả năng mở rộng sức chịu đựng nhưng cũng đảm bảo tính thống nhất.

Điểm mạnh

  • Giảm độ phức tạp cho app nhờ tính nhất quán
  • Tính năng SQL quen thuộc
  • Phục vụ phân tích tốt hơn và khả năng mở rộng tốt hơn SQL

Điểm yếu

  • Thường phục vụ mục tiêu nhất định chứ không chung chung như SQL
  • Kiến trúc bộ nhớ trong có thể không phù hợp cho các khối lượng dữ liệu quá nhiều terabytes.

Link bài viết gốc:
http://dataconomy.com/2015/08/sql-vs-nosql-vs-newsql-finding-the-right-solution/

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s