NoSQL – Why?

[

Bài viết được dẫn lại từ zxthanhhuy.wordpress.com với mục đích note, chia sẻ cho mọi người

Xin cảm ơn tác giả!

]

Tại sao lại lựa chọn NoSQL (Not Only SQL)

1. Big Users

Khi internet mới bắt đầu phổ biến, việc một ứng dụng có khoảng 1000 người dùng thì rất phổ biến, nhưng nếu nâng con số này lên 10.000 hay thậm chí 100.000 thì đó là chuyện không tưởng. Ngày nay, hầu hết các ứng dụng mới đều được lưu trữ trên cloud và có luôn có sẵn trên Internet, nơi mà các ứng dụng này phải phục vụ cho người dùng trên toàn thế giới mọi lúc mọi nơi. Có khoảng hơn 2 tỷ người được kết nối với Internet và thời gian mà họ bỏ ra cho việc online mỗi ngày cũng tăng theo thời gian. Điều này tạo ra sự bùng nổ về số lượng người dùng đồng thời. Như vậy, sẽ không có gì lạ khi một ứng dụng có tới hàng triệu người khác nhau sử dụng mỗi ngày.

Số lượng người dùng lớn kết hợp với thói quen sử dụng phong phú tạo nên nhiều mô hình dữ liệu khác nhau. Điều này dẫn đến sự cần thiết của các công nghệ CSDL có khả năng mở rộng dễ dàng. Với RDBMS, nhiều nhà phát triển ứng dụng đã gặp rất nhiều khó khăn hoặc thậm chí là không thể trong việc tạo ra các ứng dụng có khả năng mở rộng linh động trong khi vẫn duy trì được hiệu năng tốt như những gì người dùng mong đợi. Và họ đã tìm đến với các giải pháp NoSQL.

 

Big_Users

Big Users

2. The Internet of Things

The Internet of Things có thể hiểu đơn giản là một mạng lưới gồm các đối tượng có khả năng kết nối Internet và tác động qua lại giữa các dịch vụ web. Thực tế cho thấy, số lượng các thiết bị có thể kết nối internet đồng thời có khả năng tạo ra dữ liệu đang ngày một gia tăng và trở nên phổ biến. Những thiết bị đang có mặt ở khắp mọi nơi và khá gần gũi với chúng ta, chúng có thể đang ở trong các nhà máy, công ty, bệnh viện, trường học, hay gia đình chúng ta,… Chúng là điện thoại di động, máy tính bảng, các loại máy móc chuyên dụng, và còn rất nhiều nữa. Theo thời gian, những thiết bị này ngày càng được nâng cấp thành những thiết bị tiện dụng và thông minh hơn, một điển hình quen thuộc đó là những chiếc smart phone, tablet,…

Tuy nhiên, dữ liệu từ xa thường thì nhỏ, bán cấu trúc (semi-structured), hoặc không có cấu trúc (unstructured) và được cập nhật liên tục. Điều này mang đến nhiều thách thức cho các RDBMS vốn đòi hỏi một lược đồ cố định (fixed shema) và dữ liệu có cấu trúc (structured data). Để giải quyết thách thức này, các doanh nghiệp có xu hướng đổi mới đang tin tưởng vào công nghệ NoSQL để mở rộng việc truy cập đồng thời cho hàng triệu thiết bị kết nối, lưu trữ hàng tỷ điểm dữ liệu đồng thời đáp ứng các yêu cầu về hiệu năng của cơ sở hạ tầng (infrastructure) và các hoạt động (operation) then chốt (mission-critical).

IoT

The Internet of Things

3. Big Data

Dữ liệu đang ngày một trở nên dễ dàng nắm bắt và truy cập thông qua bên thứ ba như Facebook, Google,… Thông tin cá nhân của người dùng, dữ liệu định vị địa lý, những nội dung do người dùng tạo là một vài ví dụ về các mảng dữ liệu không ngừng được mở rộng đã tạo nên một nguồn dữ liệu vô cùng phong phú. Không có gì phải ngạc nhiên khi các nhà phát triển tận dụng những nguồn tài nguyên sẵn có này để làm phong phú thêm những ứng dụng hiện có hay tạo ra những cái mới từ những nguồn tài nguyên đó. Việc sử dụng các nguồn dữ liệu đang làm thay đổi nhanh chóng bản chất của truyền thông, hành vi mua sắm, quảng cáo, giải trí và việc quản lý các mối quan hệ xã hội. Như vậy, một nhà phát nếu biết tận dụng nguồn dữ liệu sẵn có này một cách hợp lý vào việc phát triển ứng dụng sẽ dễ dàng thành công, ngược lại, việc nhanh chóng đi vào thất bại là điều dễ hiểu do không nắm bắt được thị hiếu của người dùng.

Việc lưu trữ và sử dụng các loại dữ liệu khác nhau tạo ra nhu cầu về loại CSDL cũng rất riêng. Tuy nhiên, các nhà phát triển muốn có một CSDL thật linh hoạt dễ dàng chứa bất kỳ kiểu dữ liệu mới nào mà họ muốn sử dụng và không bị gián đoạn bởi những thay đổi cấu trúc của nội dung dữ liệu từ nhà cung cấp dữ liệu thứ ba. Rất nhiều những dữ liệu mới là các dữ liệu không cấu trúc hoặc bán cấu trúc, do đó, các nhà phát triển cũng cần có một CSDL có khả năng lưu trữ hiệu quả. Tiếc là, việc định nghĩa một cách cứng nhắc, phương pháp tiếp cận dựa trên lược đồ (schema) được sử dụng trong các RDBMS làm cho nó không thể nhanh chóng kết hợp với các loại dữ liệu mới được, và kết quả là không phù hợp với dữ liệu không cấu trúc và bán cấu trúc.

Như vậy, với sự tăng lên nhanh chóng của dữ liệu thì việc xử lý dữ liệu lớn đóng vai trò hết sức quan trọng đặc biệt là với các loại dữ liệu không cấu trúc và bán cấu trúc. Điều này đã đặt ra nhiều thách thức cho các RDBMS truyền thống, và dễ dàng thấy rằng, với các ràng buộc về cấu trúc dữ liệu, sử dụng các lược đồ cố định thì RBDMS đã trở nên vô cùng khó khăn để xử lý lượng dữ liệu cực lớn mà đa phần là không có cấu trúc hoặc bán cấu trúc đang gia tăng hàng ngày, hàng giờ. Trong khi đó, NoSQL cung cấp mô hình dữ liệu tốt hơn làm cho đơn giản hóa việc giao tiếp giữa CSDL và ứng dụng.

BigData

Big Data

4. Cloud

Trước đây, hầu hết các ứng dụng dành cho người dùng và các ứng dụng trong kinh doanh đều là các ứng dụng đơn người dùng và được cài trên một máy tính cục bộ. Các ứng dụng đa người dùng phần lớn sử dụng kiến trúc 2 tấng (2-tier) hay client-server chạy bên trong các bức tường lửa và hỗ trợ giới hạn số lượng người sử dụng.

Ngày nay, hầu hết các ứng dụng mới sử dụng kiến trúc 3 tầng, được lưu trữ và thực thi trên những đám mây, hỗ trợ một số lượng lớn người sử dụng đồng thời. Cùng với sự thay đổi này trong kiến trúc phần mềm, mô hình kinh doanh mới như là SaaS (Software as a Service) và các mô hình dựa trên quảng cáo (Advertising-based) cũng đã trở nên phổ biến hơn.

Trong kiến trúc 3 lớp, ứng dụng được truy cập thông qua một trình duyệt web hoặc một ứng dụng di động được kết nối tới Internet. Trong đám mây, một cân bằng tải (load balancing) sẽ điều khiển lưu lượng truy cập đến một tầng có khả năng mở rộng theo chiều ngang (scale-out) của máy chủ web/ứng dụng mà xử lý logic của ứng dụng. Kiến trúc mở rộng theo chiều ngang tại tầng ứng dụng làm việc rất tốt. Với mỗi 10.000 (hay tùy ý) người dùng đồng thời, ta chỉ cần thêm một server khác đến tầng ứng dụng để chịu tải.

Tại tầng CSDL, CSDL quan hệ từng được lựa chọn nhiều nhất, và việc sử dụng chúng ngày càng gặp nhiều vấn đề rắc rối. Bởi vì, dữ liệu của các CSDL quan hệ thường được tập trung và có xu hướng mở rộng theo chiều dọc (scale up) hơn là mở rộng theo chiều ngang (scale out). Điều này dẫn đến các CSDL rất khó phù hợp với các ứng dụng yêu cầu khả năng mở rộng động (dynamic scalability) dễ dàng. Các công nghệ NoSQL đã xây dựng với mục đích phân tán ngay từ lúc ban đầu (ground up) cộng với các kỹ thuật mở rộng theo chiều ngang, vì vậy tương thích tốt với bản chất phân tán cao của kiến trúc 3 tầng của Internet.

Cloud
Cloud