no sql là gì

Cơ sở dữ liệu NoSQL được sử dụng ngày một rộng rãi vì khả năng dễ phát triển chức năng cũng như hiệu năng của nó. Ở bài viết này, mình sẽ giúp các bạn tìm hiểu thêm về cơ sở dữ liệu nosql là gì và các đặc điểm của hệ cơ sở dữ liệu này.

NoSQL là gì?

Cơ sở dữ liệu NoSQL (tên gốc là “Non SQL” (phi SQL) hoặc “non relational” (phi quan hệ)): NoSQL là một khái niệm chỉ về một lớp các hệ cơ sở dữ liệu mà không sử dụng mô hình quan hệ(RDBMS). Cơ sở dữ liệu SQL thông thường lại gây một số cản trở với những hạn chế – cụ thể là lược đồ/schema cứng nhắc, thiếu linh hoạt có hiệu năng không tốt nếu kết nối dữ liệu nhiều bảng lại hay khi dữ liệu trong một bảng là rất lớn.

Chính vì vậy mà No SQL ra đời. Thuật ngữ NoSQL được giới thiệu lần đầu vào năm 1998  bởi Carlo Strozzi khi ông lập mới một hệ cơ sở dữ liệu mở nhanh và nhẹ nhưng không sử dụng SQL cho truy vấn.

Cho tới năm 2009, Eric Evans giới thiệu lại thuật ngữ NoSQL trong một hội thảo về cơ sở dữ liệu mã nguồn mở phân tán. Thuật ngữ NoSQL đánh dấu bước phát triển của thế hệ database mới: distributed (phân tán) + non-relational (không ràng buộc).

Tại sao lại cần phải có NoSQL.

CSDL truyền thống thường cấu trúc dữ liệu được xác định trước. Trong khi thế giới đang hướng đến dữ liệu không cấu trúc, chúng ta thấy giới hạn của CSDL quan hệ truyền thống trong trường hợp này trong các lĩnh vực mới hiện nay.

sử dụng no sql
sử dụng no sql

Big Users

Số lượng người dùng ngày càng lớn kết hợp với thói quen sử dụng phong phú tạo nên nhiều các mô hình dữ liệu khác nhau. Từ đó đế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 Cơ sở dữ liệu SQL thông thường, những nhà phát triển ứng dụng đã gặp rất nhiều khó khăn trong việc tạo ra các ứng dụng có khả năng mở rộng linh động mà vẫn duy trì được hiệu năng tốt. Vì vậy họ đã tìm đến với các giải pháp NoSQL.

The Internet of Things

Internet of Things có thể hiểu một cách đơn giản là 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. Hiện nay, 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 trở nên phổ biến. Những thiết bị đang có mặt ở khắp mọi nơi như đ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.

Tuy nhiên, dữ liệu từ xa thường thì nhỏ, bán cấu trúc hoặc không có cấu trúc và thường được cập nhật liên tục. Vì thế mang đến nhiều thách thức cho các RDBMS. Để 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.

Big Data

Với sự phát triển, 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ò vô cùng 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 đã làm cho các RDBMS truyền thống có nhiều thách thức 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. 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.

Cloud

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. CSDL quan hệ từng là lựa chọn tốt nhất, nhưng giờ việc sử dụng chúng ngày càng gặp nhiều vấn đề rắc rố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 dễ dàng. Các công nghệ NoSQL đã xây dựng với mục đích phân tán, 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.

Xem thêm: Lập trình AI?

Một số đặc điểm chung của nosql.

  • High Scalability: Gần như là không có một giới hạn cho dữ liệu và người sử dụng trên hệ thống.
  • High Availability: Do chấp nhận sự trùng lặp trong lưu trữ dữ liệu nên nếu một node nào đó bị chết cũng không làm ảnh hưởng tới toàn bộ hệ thống.
  • Atomicity: Độc lập data state trong các operation.
  • Consistency: Chấp nhận tính nhất quán yếu, có thể không thấy ngay được sự thay đổi mặc dù đã cập nhật dữ liệu.
  • Durability: Dữ liệu có thể tồn tại trong bộ nhớ máy tính nhưng đồng thời cũng được lưu trữ ở đĩa cứng.
  • Deployment Flexibility: Việc bổ sung thêm/loại bỏ các node, hệ thống sẽ nhận biết và lưu trữ tự động. Hệ thống không đòi hỏi cấu hình phần cứng quá mạnh, đồng nhất.
  • Query Flexibility: Multi-Gets, Range queries (load một tập giá trị dựa vào một dãy các khóa).
  • NoSQL lưu trữ dữ liệu của mình theo dạng cặp giá trị “key – value”. Sử dụng số lượng lớn các node để lưu trữ thông tin, giá trị.
  • Mô hình phân tán dưới sự kiểm soát phần mềm.
  • Một truy vấn sẽ được gửi tới nhiều máy cùng lúc, do đó khi một máy nào đó không phục vụ được sẽ không ảnh hưởng lắm đến chất lượng trả về kết quả.
  • Phi quan hệ – không có ràng buộc nào cho việc nhất quán dữ liệu.
  • Tính nhất quán không theo thời gian thực: Sau mỗi thay đổi CSDL, không cần tác động ngay đến tất cả các CSDL liên quan mà được lan truyền theo thời gian.
đặc điểm chung của no sql
đặc điểm chung của no sql

Ưu nhược của NoSQL

Một số ưu điểm và nhược điểm cần biết về nosql

1. Ưu điểm

Có một số lợi thế, điểm mạnh khi làm việc với cơ sở dữ liệu NoSQL như MongoDB và Cassandra. Những ưu điểm chính của nosql là khả năng mở rộng và tính sẵn sàng cao.

  • NoSQL giải quyết được các vấn đề dữ liệu lớn(big data) về các hệ thống thông tin hoặc là phân tán dữ liệu.
  • Việc mở rộng phạm vi là mềm dẻo: NoSQL thay thế câu thần chú cũ của các nhà quản trị CSDL về việc ‘mở rộng phạm vi’ với một thứ mới: ‘mở rộng ra ngoài’. Thay vì phải bổ sung thêm những máy chủ lớn hơn để tải nhiều dữ liệu hơn, thì CSDL NoSQL cho phép một công ty phân tán tải qua nhiều máy chủ khi tải gia tăng.
  • High availability: Khả năng tự động sao chép trong MongoDB làm cho nó rất tốt trong mọi trường hợp vì trong trường hợp có bất kỳ lỗi nào, dữ liệu sẽ tự động sao chép về trạng thái nhất quán trước đó.

2. Nhược điểm

Bên cạnh những ưu điểm của nó thì NoSQL Database cũng có những nhược điểm sau:

  • Quản lý dữ liệu: Mục đích của các công cụ dữ liệu lớn là làm cho việc quản lý một lượng lớn dữ liệu trở nên đơn giản nhất. Nhưng quản lý dữ liệu trong NoSQL phức tạp hơn nhiều so với cơ sở dữ liệu quan hệ. Đặc biệt, NoSQL nổi tiếng là khó cài đặt và thậm chí là để quản lý nó hằng ngày cũng tốn khá nhiều thời gian.
  • Sao lưu dữ liệu: Sao lưu là một điểm yếu lớn đối với một số cơ sở dữ liệu NoSQL như MongoDB. Nó không có cách tiếp cận để làm sao lưu dữ liệu một cách nhất quán.
  • Thiếu tính nhất quán: NoSQL đánh đổi sự nhất quán để ưu tiên tốc độ, hiệu suất hiệu quả hơn.
  • Trọng tâm hẹp: Cơ sở dữ liệu NoSQL có trọng tâm rất hẹp vì nó chủ yếu được thiết kế để lưu trữ nhưng nó cung cấp rất ít chức năng.
  • Mã nguồn mở: NoSQL là cơ sở dữ liệu mã nguồn mở và không có tiêu chuẩn đáng tin cậy cho NoSQL được nêu ra.
  • Không có lược đồ: Ngay cả khi bạn lấy dữ liệu ở dạng tự do, bạn hầu như luôn cần áp đặt các ràng buộc để làm cho nó hữu ích. Với NoSQL, trách nhiệm sẽ được chuyển từ cơ sở dữ liệu sang nhà phát triển, lập trình ứng dụng.
  • Kỹ năng NoSQL: Một hạn chế khác đối với NoSQL là người sử dụng có thể sẽ thiếu các kỹ năng chuyên môn ở mức tương đối vì hệ thống này còn khá mới và không phải ai cũng biết sử dụng nó một cách thành thạo.

Khi nào bạn nên sử dụng NoSQL?

Bạn nên áp dụng NoSQL Database trong những trường hợp sau:

  • Khi bạn muốn lưu trữ, truy xuất một lượng dữ liệu khổng lồ.
  • Mối quan hệ giữa dữ liệu bạn lưu trữ là không quan trọng.
  • Dữ liệu không có cấu trúc và được thay đổi theo thời gian.
  • Dữ liệu đang phát triển liên tục và bạn cần phải mở rộng cơ sở dữ liệu thường xuyên để xử lý dữ liệu.
  • SQL là ngôn ngữ đơn giản nhất được sử dụng để giao tiếp với RDBMS
  • Phân tích các phiên liên quan đến hành vi và tùy chỉnh
  • Tạo trang tổng quan tùy chỉnh
  • Nó cho phép bạn lưu trữ và lấy dữ liệu từ cơ sở dữ liệu một cách nhanh chóng
  • Được ưu tiên khi bạn muốn sử dụng các phép nối và thực hiện các truy vấn phức tạp.
  • Khi không cần hỗ trợ ACID
  • Các ràng buộc và logic xác thực không bắt buộc phải được thực hiện trong cơ sở dữ liệu
  • Nó nên được sử dụng để lưu trữ dữ liệu tạm thời như giỏ mua hàng, danh sách mong muốn và dữ liệu phiên

Vì sao nên sử dụng NoSQL?

Những ứng dụng hiện đại ngày nay như trò chơi, web app, mobile web… cần nhiều yếu tố nhằm mang đến những trải nghiệm tuyệt vời nhất dành cho người dùng.

Dưới đây là một vài số lý giúp lập trình viên hiểu rằng, vì sao nên sử dụng NoSQL:

  • Hiệu năng cao: Được tối hóa dựa trên mô hình dữ liệu. vì vậy, giúp cải thiện hiệu năng hơn so với các chức năng tương tự.
  • Cực kỳ thiết thực: NoSQL mang đến những API cũng như các kiểu dữ liệu được phát triển riêng dành cho các mô hình tương ứng.
  • Khả năng thay đổi quy mô: Được thiết kế, xây dựng bằng việc sử dụng cụm phần cứng thay vì phải tốn kém chi phí mua các máy chủ mạnh.
  • Linh hoạt: Cung cấp sơ đồ linh động, thúc đẩy công đoạn xây dựng diễn ra nhanh chóng, lặp lại cao đồng thời hiệu suất lớn.

Các hệ thống NoSQL phổ biến hiện nay

Với CSDL NoSQL, dữ liệu có thể được lưu trữ theo kiểu đơn giản lược đồ hoặc dạng tự do. Các hệ thống nosql phổ biến hiện nay là:

  1. Graph database(ví dụ: Neo4j- là một trong những Graph Database phổ biển nhất hiện nay.): Mô tả và lưu trữ dữ liệu dưới dạng đồ thị các đối tượng và mối quan hệ của các đối tượng, một cách trực quan và dễ dàng truy vấn. Với mỗi node trong biểu đồ là một đoạn dữ liệu dạng tự do.
  2. Document database: (ví dụ: CouchDB, MongoDB): Dữ liệu khi được thêm vào sẽ được lưu trữ dưới dạng cấu trúc JSON tự do hoặc là “tài liệu”.
  3. Key-value stores(ví dụ: Redis, Riak): Lưu trữ kiểu key-value là kiểu lưu trữ dữ liệu NoSQL đơn giản nhất sử dụng từ một API. Chúng ta có thể nhận giá trị cho khóa, thực hiện đặt một giá trị cho một khóa, hoặc xóa một khóa từ dữ liệu. Các giá trị dạng tự do – từ các số nguyên hoặc chuỗi đơn giản đến các tài liệu JSON phức tạp.
  4. Wide column stores(ví dụ: HBase, Cassandra): Dữ liệu hệ thống sẽ được lưu trữ dạng cột thay vì theo hàng như trong các hệ thống SQL thông thường. Ở bất kỳ số cột có thể được nhóm hoặc tổng hợp khi cần thiết cho các truy vấn hoặc ở chế độ xem dữ liệu.
hệ thống no sql phổ biến
hệ thống no sql phổ biến

So sánh SQL và NoSQL

Bảng so sánh về cơ sở dữ liệu SQL và NOSQL:

Tham sốSQLNoSQL
Định nghĩaCơ sở dữ liệu SQL chủ yếu được gọi là RDBMS hoặc Cơ sở dữ liệu quan hệCơ sở dữ liệu NoSQL chủ yếu được gọi là cơ sở dữ liệu không liên quan hoặc csdl phân tán
Design forRDBMS truyền thống sử dụng cú pháp và truy vấn SQL để phân tích và lấy dữ liệu để có thêm thông tin chi tiết. Chúng được sử dụng cho các hệ thống OLAP.Hệ thống cơ sở dữ liệu NoSQL bao gồm nhiều công nghệ cơ sở dữ liệu khác nhau. Các cơ sở dữ liệu này được phát triển để đáp ứng nhu cầu trình bày cho sự phát triển của ứng dụng hiện đại.
Ngôn ngữ QueryStructured query language (SQL)Không có ngôn ngữ query
TypeSQL databases là cơ sở dữ liệu dựa trên bảng.NoSQL databases có thể dựa trên tài liệu, cặp khóa-giá trị, cơ sở dữ liệu biểu đồ.
SchemaSQL databases có lược đồ được xác định trước.NoSQL databases sử dụng lược đồ động cho dữ liệu phi cấu trúc.
Khả năng mở rộngSQL databases có thể mở rộng theo chiều dọc.NoSQL databases có thể mở rộng theo chiều ngang.
Ví dụOracle, Postgres, and MS-SQL.MongoDB, Redis, , Neo4j, Cassandra, Hbase.
Phù hợp choĐây là 1 lựa chọn lý tưởng cho môi trường truy vấn phức tạp.Không phù hợp với truy vấn phức tạp.
Lưu trữ dữ liệu phân cấpSQL databases không thích hợp cho việc lưu trữ dữ liệu phân cấp.Phù hợp hơn cho kho lưu trữ dữ liệu phân cấp vì nó hỗ trợ phương thức cặp khóa-giá trị.
VariationsMột loại có biến thể nhỏ.Nhiều loại khác nhau bao gồm các kho khóa-giá trị, cơ sở dữ liệu tài liệu và cơ sở dữ liệu đồ thị.
Năm phát triểnNó được phát triển vào những năm 1970 để giải quyết các vấn đề với lưu trữ tệp phẳng.Được phát triển vào cuối những năm 2000 để khắc phục các vấn đề và hạn chế của SQL databases.
Open-sourceMột sự kết hợp của mã nguồn mở như Postgres & MySQL, và thương mại như Oracle Database.Open-source
Tính nhất quánNó phải được cấu hình cho sự nhất quán chặt chẽ.Nó phụ thuộc vào DBMS như một số cung cấp tính nhất quán mạnh mẽ như MongoDB, trong khi những người khác cung cấp chỉ cung cấp sự nhất quán cuối cùng, như Cassandra.
Được sử dụng tốt nhất choRDBMS database là tùy chọn thích hợp để giải quyết các vấn đề về ACID.NoSQL được sử dụng tốt nhất để giải quyết các vấn đề về tính khả dụng của dữ liệu
Tầm quan trọngNó nên được sử dụng khi hiệu lực dữ liệu là siêu quan trọngSử dụng khi nó quan trọng hơn để có dữ liệu nhanh hơn dữ liệu chính xác
Lựa chọn tốt nhấtKhi bạn cần hỗ trợ truy vấn độngSử dụng khi bạn cần mở rộng quy mô dựa trên yêu cầu thay đổi
HardwareSpecialized DB hardware (Oracle Exadata, etc.)Commodity hardware
NetworkHighly available network (Infiniband, Fabric Path, etc.)Commodity network (Ethernet, etc.)
Loại lưu trữHighly Available Storage (SAN, RAID, etc.)Commodity drives storage (standard HDDs, JBOD)
Tính năng tốt nhấtHỗ trợ đa nền tảng, Bảo mật và miễn phíDễ sử dụng, hiệu suất cao và công cụ linh hoạt.
Mô hình ACID và BASEACID (Atomicity, nhất quán, cách ly và độ bền) là một chuẩn cho RDBMSCơ bản (Về cơ bản có sẵn, trạng thái mềm, phù hợp cuối cùng) là một mô hình của nhiều hệ thống NoSQL
PerformanceSQL hoạt động tốt và nhanh thì việc desgin tốt là cực kì quan trọng và ngược lại.Nhanh hơn SQL. NoSQL thì cho phép bạn lấy được tất cả thông tin về một item cụ thể với các codition mà không cần JOIN liên quan hoặc truy vấn SQL phức tạp.
Kết luậnDự án đã có yêu cầu dữ liệu rõ ràng xác định quan hệ logic có thể được xác định trước.Phù hợp với những dự án yêu cầu dữ liệu không liên quan, khó xác định, đơn giản mềm dẻo khi đang phát triển

Tổng kết:

NoSQL database chỉ là một loại database có cách truy vấn, lưu trữ dữ liệu hoàn toàn khác so với RDBMS và SQL. Các ứng dụng hiện nay vẫn cần cả hai loại cơ sở dữ liệu trên để đáp ứng như cầu tùy theo từng lĩnh vực khác nhau.

Tham khảo tại:  https://www.mongodb.com/nosql-explained

Leave a Reply