Hướng dẫn về NoSQL: Các loại cơ sở dữ liệu NoSQL và ví dụ.
⚡ Tóm tắt thông minh
NoSQL là một hệ thống quản lý cơ sở dữ liệu phi quan hệ, không yêu cầu lược đồ cố định, tránh các phép nối (join) và có khả năng mở rộng dễ dàng. Tài liệu này giải thích NoSQL là gì, tại sao nó tồn tại, lịch sử, các tính năng, bốn loại cơ sở dữ liệu, định lý CAP, tính nhất quán cuối cùng, cũng như những ưu điểm và nhược điểm của nó.

NoSQL là gì?
Cơ sở dữ liệu NoSQL NoSQL là một hệ thống quản lý dữ liệu phi quan hệ, không yêu cầu lược đồ cố định. Nó tránh các phép nối (join) và dễ dàng mở rộng quy mô. Mục đích chính của việc sử dụng cơ sở dữ liệu NoSQL là cho các kho dữ liệu phân tán với nhu cầu lưu trữ dữ liệu khổng lồ. NoSQL được sử dụng cho dữ liệu lớn và các ứng dụng web thời gian thực. Ví dụ, các công ty như Twitter, Facebook và... Google Thu thập hàng terabyte dữ liệu người dùng mỗi ngày.
Cơ sở dữ liệu NoSQL NoSQL là viết tắt của “Not Only SQL” hoặc “Not SQL”. Mặc dù thuật ngữ chính xác hơn sẽ là “NoREL”, nhưng NoSQL đã trở nên phổ biến. Carl Strozzi đã giới thiệu khái niệm NoSQL vào năm 1998.
Hệ quản trị cơ sở dữ liệu quan hệ truyền thống (RDBMS) sử dụng cú pháp SQL để lưu trữ và truy xuất dữ liệu nhằm thu thập thông tin chi tiết. Ngược lại, 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ó thể lưu trữ dữ liệu có cấu trúc, bán cấu trúc, phi cấu trúc và đa hình. Hãy cùng tìm hiểu về NoSQL thông qua sơ đồ trong hướng dẫn về cơ sở dữ liệu NoSQL này:
Tại sao lại là NoSQL?
Khái niệm về cơ sở dữ liệu NoSQL trở nên phổ biến với các ông lớn Internet như... Google, Facebook, Amazon, v.v., những người xử lý khối lượng dữ liệu khổng lồ. Thời gian phản hồi của hệ thống trở nên chậm khi bạn sử dụng RDBMS cho khối lượng dữ liệu lớn.
Để giải quyết vấn đề này, chúng tôi có thể “mở rộng quy mô” hệ thống của mình bằng cách nâng cấp phần cứng hiện có. Quá trình này là tốn kém.
Giải pháp thay thế cho vấn đề này là phân bổ tải trọng cơ sở dữ liệu trên nhiều máy chủ mỗi khi tải trọng tăng lên. Phương pháp này được gọi là "mở rộng quy mô" (scaling out).
Cơ sở dữ liệu NoSQL là cơ sở dữ liệu phi quan hệ, do đó nó có khả năng mở rộng tốt hơn so với cơ sở dữ liệu quan hệ, vì chúng được thiết kế dành cho các ứng dụng web.
Tóm tắt lịch sử cơ sở dữ liệu NoSQL
- 1998 – Carlo Strozzi sử dụng thuật ngữ NoSQL cho cơ sở dữ liệu quan hệ mã nguồn mở, dung lượng nhẹ của mình.
- 2000 – Cơ sở dữ liệu đồ thị NeoHệ điều hành 4j đã được ra mắt.
- 2004 - Google BigTable đã chính thức ra mắt.
- 2005 - CouchDB được đưa ra.
- 2007 – Bài nghiên cứu về Amazon Dynamo đã được phát hành.
- 2008 – Facebook công khai mã nguồn của Cassandra dự án.
- 2009 – Thuật ngữ NoSQL được giới thiệu lại.
Tính năng của NoSQL
Không quan hệ
- Cơ sở dữ liệu NoSQL không bao giờ tuân theo mô hình quan hệ.
- Không bao giờ cung cấp bảng có các bản ghi cột cố định dạng phẳng.
- Làm việc với các tập hợp độc lập hoặc BLOB.
- Không yêu cầu bản đồ quan hệ đối tượng.ping và chuẩn hóa dữ liệu.
- Không có các tính năng phức tạp như ngôn ngữ truy vấn, công cụ lập kế hoạch truy vấn, phép nối toàn vẹn tham chiếu hoặc ACID.
Không có lược đồ
- Các cơ sở dữ liệu NoSQL hoặc là không có lược đồ hoặc có lược đồ được nới lỏng.
- Không cần định nghĩa lược đồ dữ liệu.
- Cung cấp các cấu trúc dữ liệu không đồng nhất trong cùng một lĩnh vực.

API đơn giản
- Cung cấp giao diện dễ sử dụng để lưu trữ và truy vấn dữ liệu.
- API cho phép thao tác dữ liệu ở cấp độ thấp và các phương pháp lựa chọn dữ liệu.
- Các giao thức dựa trên văn bản chủ yếu được sử dụng với HTTP REST với định dạng JSON.
- Chủ yếu sử dụng ngôn ngữ truy vấn NoSQL không dựa trên tiêu chuẩn.
- Các cơ sở dữ liệu được hỗ trợ bởi web, hoạt động như các dịch vụ hướng ra internet.
Phân phối
- Nhiều cơ sở dữ liệu NoSQL có thể được thực thi theo cách phân tán.
- Cung cấp khả năng tự động mở rộng quy mô và chuyển đổi dự phòng.
- Khái niệm ACID thường bị hy sinh để đổi lấy khả năng mở rộng và thông lượng.
- Hầu hết không có sao chép đồng bộ giữa các nút phân tán; sao chép đa máy chủ không đồng bộ, ngang hàng, sao chép HDFS.
- Chỉ mang lại sự nhất quán cuối cùng.
- Kiến trúc không chia sẻ tài nguyên. Điều này cho phép giảm thiểu sự phối hợp và tăng cường phân quyền.
Các loại cơ sở dữ liệu NoSQL
Cơ sở dữ liệu NoSQL Các cơ sở dữ liệu chủ yếu được phân loại thành bốn loại: cặp khóa-giá trị, hướng cột, hướng đồ thị và hướng tài liệu. Mỗi loại đều có những thuộc tính và hạn chế riêng. Không có cơ sở dữ liệu nào trong số những loại đã nêu ở trên có thể giải quyết tất cả các vấn đề. Người dùng nên lựa chọn cơ sở dữ liệu dựa trên nhu cầu của sản phẩm.
Các loại cơ sở dữ liệu NoSQL:
- Dựa trên cặp khóa-giá trị
- Đồ thị hướng cột
- Dựa trên đồ thị
- Định hướng tài liệu
Dựa trên cặp giá trị chính
Dữ liệu được lưu trữ dưới dạng cặp khóa/giá trị. Nó được thiết kế để xử lý lượng dữ liệu lớn và tải trọng nặng. Cơ sở dữ liệu lưu trữ theo cặp khóa-giá trị lưu trữ dữ liệu dưới dạng bảng băm, trong đó mỗi khóa là duy nhất và giá trị có thể là JSON, BLOB (Đối tượng nhị phân lớn), chuỗi, v.v.
Ví dụ, một cặp khóa-giá trị có thể chứa một khóa như “Trang web” được liên kết với một giá trị như “Guru99. "
Đây là một trong những ví dụ cơ bản nhất về cơ sở dữ liệu NoSQL. Loại cơ sở dữ liệu NoSQL này được sử dụng như một tập hợp, từ điển, mảng liên kết, v.v. Kho lưu trữ cặp khóa-giá trị giúp nhà phát triển lưu trữ dữ liệu không có lược đồ. Chúng hoạt động tốt nhất cho các cửa hàng trực tuyến.ping Nội dung giỏ hàng.
Redis, Dynamo và Riak là một số ví dụ về cơ sở dữ liệu NoSQL lưu trữ cặp khóa-giá trị. Tất cả chúng đều dựa trên... Amazongiấy Dynamo của.
Dựa trên cột
Cơ sở dữ liệu hướng cột hoạt động trên các cột và dựa trên bài báo BigTable của... GoogleMỗi cột được xử lý riêng biệt. Giá trị của cơ sở dữ liệu một cột được lưu trữ liền kề.
Chúng mang lại hiệu năng cao cho các truy vấn tổng hợp như SUM, COUNT, AVG, MIN, v.v., vì dữ liệu có sẵn trong một cột. Cơ sở dữ liệu NoSQL dựa trên cột được sử dụng rộng rãi để quản lý kho dữ liệu. kinh doanh thông minh, hệ thống CRM và danh mục thẻ thư viện.
HBase, CassandraHypertable và các truy vấn NoSQL khác là ví dụ về cơ sở dữ liệu dựa trên cột.
Định hướng tài liệu
Cơ sở dữ liệu NoSQL hướng tài liệu lưu trữ và truy xuất dữ liệu dưới dạng cặp khóa-giá trị, nhưng phần giá trị được lưu trữ dưới dạng tài liệu. Tài liệu được lưu trữ ở định dạng JSON hoặc XML. Giá trị được cơ sở dữ liệu hiểu và có thể được truy vấn.
Trong sơ đồ bên trái, bạn có thể thấy chúng ta có các hàng và cột, và bên phải là cơ sở dữ liệu tài liệu có cấu trúc tương tự như JSON. Đối với cơ sở dữ liệu quan hệ, bạn phải biết mình có những cột nào, v.v. Tuy nhiên, đối với cơ sở dữ liệu tài liệu, bạn có một kho lưu trữ dữ liệu giống như một đối tượng JSON. Bạn không cần phải định nghĩa nó, điều này làm cho nó linh hoạt.
Loại tài liệu này chủ yếu được sử dụng cho các hệ thống CMS, nền tảng blog, phân tích thời gian thực và các ứng dụng thương mại điện tử. Nó không nên được sử dụng cho các giao dịch phức tạp yêu cầu nhiều thao tác hoặc truy vấn trên các cấu trúc tổng hợp khác nhau.
Amazon đơn giảnDB, CouchDB, MongoDBRiak và Lotus Notes là những phần mềm quản lý tài liệu phổ biến. Hệ thống DBMS.
Dựa trên đồ thị
Cơ sở dữ liệu dạng đồ thị lưu trữ các thực thể cũng như các mối quan hệ giữa các thực thể đó. Thực thể được lưu trữ dưới dạng một nút, còn mối quan hệ được thể hiện bằng các cạnh. Một cạnh thể hiện mối quan hệ giữa các nút. Mỗi nút và cạnh đều có một mã định danh duy nhất.
So với cơ sở dữ liệu quan hệ, nơi các bảng được kết nối lỏng lẻo, cơ sở dữ liệu đồ thị có bản chất đa quan hệ. Việc duyệt qua các mối quan hệ diễn ra nhanh chóng, vì chúng đã được ghi lại trong cơ sở dữ liệu và không cần phải tính toán lại. Cơ sở dữ liệu đồ thị chủ yếu được sử dụng cho mạng xã hội, hậu cần và dữ liệu không gian.
Neo4J, Đồ thị vô hạn, OrientDBvà FlockDB là một số cơ sở dữ liệu dựa trên đồ thị phổ biến.
Công cụ cơ chế truy vấn cho NoSQL
Cơ chế truy xuất dữ liệu phổ biến nhất là truy xuất giá trị dựa trên REST bằng khóa/ID của nó thông qua tài nguyên GET.
Cơ sở dữ liệu lưu trữ tài liệu cho phép thực hiện các truy vấn phức tạp hơn, vì chúng hiểu được giá trị trong cặp khóa-giá trị. Ví dụ: CouchDB Cho phép định nghĩa các view bằng MapReduce.
Định lý CAP là gì?
Định lý CAP còn được gọi là định lý Brewer. Định lý này phát biểu rằng một kho dữ liệu phân tán không thể cung cấp nhiều hơn hai trong ba đảm bảo:
- Tính nhất quán
- Sự có sẵn
- Dung sai phân vùng
Tính nhất quán: Dữ liệu phải được duy trì nhất quán ngay cả sau khi thực hiện một thao tác. Điều này có nghĩa là khi dữ liệu được ghi, mọi yêu cầu đọc trong tương lai đều phải chứa dữ liệu đó. Ví dụ: sau khi cập nhật trạng thái đơn hàng, tất cả khách hàng sẽ có thể xem cùng một dữ liệu.
Khả dụng: Cơ sở dữ liệu phải luôn có sẵn và đáp ứng. Nó không nên có bất kỳ thời gian chết.
Dung sai phân vùng: Dung sai phân vùng có nghĩa là hệ thống sẽ tiếp tục hoạt động ngay cả khi liên lạc giữa các máy chủ không ổn định. Ví dụ: các máy chủ có thể được phân chia thành nhiều nhóm và các nhóm này có thể không liên lạc được với nhau. Ở đây, nếu một phần cơ sở dữ liệu không có sẵn thì các phần khác luôn không bị ảnh hưởng.
Tính nhất quán cuối cùng
Thuật ngữ “tính nhất quán cuối cùng” có nghĩa là sao chép dữ liệu trên nhiều máy để đạt được tính khả dụng cao và khả năng mở rộng. Do đó, những thay đổi được thực hiện đối với bất kỳ mục dữ liệu nào trên một máy đều phải được truyền đến các bản sao khác.
Việc sao chép dữ liệu có thể không diễn ra tức thời, vì một số bản sao sẽ được cập nhật ngay lập tức trong khi những bản khác sẽ được cập nhật sau một thời gian. Các bản sao này có thể không nhất quán với nhau, nhưng theo thời gian, chúng sẽ trở nên nhất quán. Do đó, nó được gọi là tính nhất quán cuối cùng.
CĂN CỨ: Bgiống như một Acó sẵn, Strạng thái thường xuyên, Etính nhất quán thông thường
- Về cơ bản, "có sẵn" nghĩa là cơ sở dữ liệu luôn khả dụng theo định lý CAP.
- Trạng thái mềm có nghĩa là ngay cả khi không có đầu vào, trạng thái của hệ thống vẫn có thể thay đổi.
- Tính nhất quán cuối cùng có nghĩa là hệ thống sẽ trở nên nhất quán theo thời gian.
Ưu điểm của NoSQL
- Có thể được sử dụng làm nguồn dữ liệu chính hoặc nguồn dữ liệu phân tích.
- Khả năng xử lý dữ liệu lớn.
- Không có điểm lỗi duy nhất.
- Dễ dàng sao chép.
- Không cần lớp bộ nhớ đệm riêng biệt.
- Nó cung cấp hiệu suất nhanh và khả năng mở rộng theo chiều ngang.
- Có thể xử lý dữ liệu có cấu trúc, bán cấu trúc và không có cấu trúc với hiệu quả như nhau.
- Lập trình hướng đối tượng, dễ sử dụng và linh hoạt.
- Cơ sở dữ liệu NoSQL không cần máy chủ hiệu năng cao chuyên dụng.
- Hỗ trợ các ngôn ngữ lập trình và nền tảng chính.
- Dễ triển khai hơn so với việc sử dụng hệ quản trị cơ sở dữ liệu quan hệ (RDBMS).
- Nó có thể phục vụ như là nguồn dữ liệu chính cho các ứng dụng trực tuyến.
- Xử lý dữ liệu lớn, quản lý tốc độ, sự đa dạng, khối lượng và độ phức tạp của dữ liệu.
- Có kinh nghiệm vượt trội trong vận hành cơ sở dữ liệu phân tán và đa trung tâm dữ liệu.
- Loại bỏ nhu cầu về một lớp bộ nhớ đệm chuyên biệt để lưu trữ dữ liệu.
- Cung cấp thiết kế lược đồ linh hoạt, có thể dễ dàng thay đổi mà không gây gián đoạn hoạt động hoặc ảnh hưởng đến dịch vụ.
Nhược điểm của NoSQL
- Không có quy tắc tiêu chuẩn hóa nào.
- Khả năng truy vấn hạn chế.
- RDBMS Các cơ sở dữ liệu và công cụ tương đối hoàn thiện.
- Nó không cung cấp bất kỳ khả năng cơ sở dữ liệu truyền thống nào, như tính nhất quán khi nhiều giao dịch được thực hiện cùng lúc.
- Khi khối lượng dữ liệu tăng lên, việc duy trì các giá trị duy nhất trở nên khó khăn hơn vì việc tìm khóa trở nên phức tạp.
- Không hoạt động hiệu quả lắm với dữ liệu quan hệ.
- Quá trình học hỏi đối với các nhà phát triển mới khá khó khăn.
- Các giải pháp mã nguồn mở không phổ biến lắm đối với các doanh nghiệp.






