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

NoSQL là gì và nó có phải là xu hướng lớn tiếp theo trong cơ sở dữ liệu không?

NoSQL là gì?

Theo định nghĩa chính thức của Wiki:“A NoSQL (ban đầu đề cập đến cơ sở dữ liệu “không phải SQL” hoặc “không quan hệ”) cung cấp cơ chế lưu trữ và truy xuất dữ liệu được mô hình hóa bằng các phương tiện khác với quan hệ dạng bảng được sử dụng trong cơ sở dữ liệu quan hệ (RDBMS). Nó bao gồm nhiều loại công nghệ cơ sở dữ liệu khác nhau được phát triển để đáp ứng với sự gia tăng khối lượng dữ liệu được lưu trữ về người dùng, đối tượng và sản phẩm, tần suất mà dữ liệu này được truy cập, hiệu suất và nhu cầu xử lý. Nói chung, cơ sở dữ liệu NoSQL được cấu trúc theo cặp khóa-giá trị, cơ sở dữ liệu đồ thị, cấu trúc hướng tài liệu hoặc hướng cột.

Trong nhiều thập kỷ và nhiều thập kỷ phát triển phần mềm, chúng tôi đã sử dụng cơ sở dữ liệu dưới dạng SQL (Ngôn ngữ truy vấn có cấu trúc), nơi chúng tôi lưu trữ dữ liệu của mình trong các bảng quan hệ. Tuy nhiên, trong những năm gần đây với sự gia tăng mạnh mẽ của việc sử dụng Internet và các ứng dụng Web 2.0, cơ sở dữ liệu đã phát triển thành hàng nghìn và hàng nghìn terabyte. Các ứng dụng như Facebook, Google, Amazon, Watsapp, v.v. Cơ sở dữ liệu như vậy được sử dụng trong dữ liệu lớn, các ứng dụng thời gian thực lớn và phân tích.

Ví dụ, hãy xem xét rằng bạn có một ứng dụng viết blog lưu trữ các blog của người dùng. Bây giờ, giả sử rằng bạn phải kết hợp một số tính năng mới trong ứng dụng của mình chẳng hạn như người dùng thích các bài đăng blog này hoặc nhận xét về chúng hoặc thích các nhận xét này. Với một triển khai RDBMS điển hình, điều này sẽ cần một cuộc đại tu hoàn chỉnh đối với thiết kế cơ sở dữ liệu hiện có của bạn. Tuy nhiên, nếu bạn sử dụng NoSQL trong các tình huống như vậy, bạn có thể dễ dàng sửa đổi cấu trúc dữ liệu của mình để phù hợp với các yêu cầu nhanh này. Với NoSQL, bạn có thể bắt đầu chèn trực tiếp dữ liệu mới này vào cấu trúc hiện có của mình mà không cần tạo bất kỳ cột nào mới được xác định trước hoặc cấu trúc được xác định trước.

Những thách thức của RDBMS

  • RDBMS giả định cấu trúc dữ liệu được xác định rõ ràng và giả định rằng dữ liệu phần lớn là đồng nhất.

  • Nó cần lược đồ của ứng dụng của bạn và các thuộc tính của nó (cột, kiểu, v.v.) được xác định trước trước khi xây dựng ứng dụng. Điều này không phù hợp tốt với các phương pháp tiếp cận phát triển nhanh cho các ứng dụng năng động cao.

  • Khi dữ liệu bắt đầu lớn hơn, bạn phải mở rộng cơ sở dữ liệu của mình theo chiều dọc, tức là thêm nhiều dung lượng hơn cho các máy chủ hiện có.

Lợi ích của NoSQL so với RDBMS

Lược đồ ít hơn -

Cơ sở dữ liệu NoSQL không có giản đồ không xác định bất kỳ cấu trúc dữ liệu nghiêm ngặt nào.

Năng động và nhanh nhẹn -

Cơ sở dữ liệu NoSQL có xu hướng phát triển linh hoạt với các yêu cầu thay đổi. Nó có thể xử lý dữ liệu có cấu trúc, bán cấu trúc và phi cấu trúc.

Cân theo chiều ngang -

Trái ngược với cơ sở dữ liệu SQL có quy mô theo chiều dọc, NoSQL mở rộng theo chiều ngang bằng cách thêm nhiều máy chủ hơn và sử dụng các khái niệm về sharding và nhân rộng. Hành vi này của NoSQL phù hợp với các dịch vụ điện toán đám mây như Amazon Web Services (AWS), cho phép bạn xử lý các máy chủ ảo có thể được mở rộng theo chiều ngang theo yêu cầu.

Hiệu suất tốt hơn -

Tất cả các cơ sở dữ liệu NoSQL đều tuyên bố mang lại hiệu suất tốt hơn và nhanh hơn so với các triển khai RDBMS truyền thống.

Nói về những hạn chế, vì NoSQL là một tập hợp toàn bộ cơ sở dữ liệu (và không phải là một cơ sở dữ liệu duy nhất), những hạn chế khác nhau giữa cơ sở dữ liệu này với cơ sở dữ liệu khác. Một số cơ sở dữ liệu này không hỗ trợ các giao dịch ACID trong khi một số cơ sở dữ liệu trong số chúng có thể thiếu độ tin cậy. Nhưng mỗi người trong số họ đều có thế mạnh riêng do đó chúng rất phù hợp với các yêu cầu cụ thể.

Các loại cơ sở dữ liệu NoSQL

Cơ sở dữ liệu hướng tài liệu -

Cơ sở dữ liệu hướng tài liệu coi một tài liệu như một tổng thể và tránh tách tài liệu theo các cặp tên / giá trị cấu thành của nó. Ở cấp độ bộ sưu tập, điều này cho phép tập hợp một bộ tài liệu đa dạng vào một bộ sưu tập duy nhất. Cơ sở dữ liệu tài liệu cho phép lập chỉ mục tài liệu trên cơ sở không chỉ từ định danh chính mà còn cả các thuộc tính của nó. Các cơ sở dữ liệu tài liệu nguồn mở khác nhau có sẵn ngày nay nhưng nổi bật nhất trong số các tùy chọn có sẵn là MongoDB và CouchDB. Trên thực tế, MongoDB đã trở thành một trong những cơ sở dữ liệu NoSQL phổ biến nhất.

Cơ sở dữ liệu dựa trên đồ thị -

Cơ sở dữ liệu đồ thị sử dụng cấu trúc đồ thị với các nút, cạnh và thuộc tính để biểu diễn và lưu trữ dữ liệu. Theo định nghĩa, cơ sở dữ liệu đồ thị là bất kỳ hệ thống lưu trữ nào cung cấp sự liền kề không có chỉ mục. Điều này có nghĩa là mọi phần tử đều chứa một con trỏ trực tiếp đến phần tử liền kề của nó và không cần tra cứu chỉ mục. Cơ sở dữ liệu đồ thị chung có thể lưu trữ bất kỳ đồ thị nào khác với cơ sở dữ liệu đồ thị chuyên biệt như cửa hàng bộ ba và cơ sở dữ liệu mạng. Các chỉ mục được sử dụng để duyệt qua biểu đồ.

Cơ sở dữ liệu dựa trên cột -

Việc lưu trữ theo hướng cột cho phép dữ liệu được lưu trữ một cách hiệu quả. Nó tránh tiêu tốn dung lượng khi lưu trữ giá trị rỗng bằng cách đơn giản là không lưu trữ một cột khi giá trị không tồn tại cho cột đó. Mỗi đơn vị dữ liệu có thể được coi là một tập hợp các cặp khóa / giá trị, trong đó bản thân đơn vị được xác định với sự trợ giúp của số nhận dạng chính, thường được gọi là khóa chính. Bigtable và các bản sao của nó có xu hướng gọi khóa chính này là khóa hàng.

Cơ sở dữ liệu giá trị chính -

Khóa của một cặp khóa / giá trị là một giá trị duy nhất trong tập hợp và có thể dễ dàng tra cứu để truy cập dữ liệu. Các cặp khóa / giá trị có nhiều loại khác nhau:một số giữ dữ liệu trong bộ nhớ và một số cung cấp khả năng lưu giữ dữ liệu vào đĩa. Một kho lưu trữ khóa / giá trị đơn giản nhưng mạnh mẽ là Oracle’s Berkeley DB.

Cơ sở dữ liệu NoSQL phổ biến

Hãy để chúng tôi tóm tắt một số cơ sở dữ liệu NoSQL phổ biến tương ứng thuộc các loại trên.

  • Cơ sở dữ liệu hướng tài liệu - MongoDB, HBase, Cassandra, Amazon SimpleDB, Hypertable, v.v.
  • Cơ sở dữ liệu Dựa trên Đồ thị - Neo4j, OrientDB, Facebook Open Graph, FlockDB, v.v.
  • Cơ sở dữ liệu dựa trên cột - CouchDB, OrientDB, v.v.
  • Cơ sở dữ liệu Giá trị Chính - Membase, Redis, MemcacheDB, v.v.

NoSQL là gì và nó có phải là xu hướng lớn tiếp theo trong cơ sở dữ liệu không?

Cơ sở dữ liệu NoSQL. Nguồn hình ảnh:getfilecloud.com

Kết luận

Trong bài viết này, chúng ta đã tìm hiểu về công nghệ cơ sở dữ liệu NoSQL là gì và nó chủ yếu khác với triển khai RDBMS như thế nào. Sau đó, chúng tôi khám phá nhiều loại cơ sở dữ liệu NoSQL khác nhau, các ứng dụng của chúng và một số cơ sở dữ liệu phổ biến nhất của từng loại.

Rất nhiều tổ chức ngày nay đang thích ứng với các cơ sở dữ liệu như vậy cho các bộ dữ liệu khổng lồ và các ứng dụng quy mô lớn của họ. Điều này cho thấy NoSQL chắc chắn sẽ trở thành thứ lớn tiếp theo trong công nghệ web và cơ sở dữ liệu có khả năng phá vỡ di sản lâu năm của RDBMS.