sql và no sql - sự khác biệt
Bài đăng này đã không được cập nhật trong 3 năm
Về công nghệ db trên thế giới có 2 loại SQL và NoSQL hoặc có thể nói là relational databases và non-relational databases. The difference speaks to how they’re built, the type of information they store, and how they store it. Relational databases là dạng cấu trúc, như phone books mà lưu số phone và địa chỉ. Non-relational databases là phân phát và hướng đến document, như folder mà giữ mọi thứ từ địa chỉ cá nhân và số phone như face book hay là mua hàng trực tuyến
Sql: Cơ sở dữ liệu quan hệ
Trước tiên, chúng ta hãy cùng xem xét một trong những tính năng chính tách hai hệ thống: cách cấu trúc dữ liệu. Cơ sở dữ liệu quan hệ - hoặc, một cơ sở dữ liệu SQL, được đặt tên cho ngôn ngữ được viết bằng ngôn ngữ truy vấn cấu trúc (Structured Query Language - SQL) - là cách lưu trữ dữ liệu cứng nhắc, cấu trúc, như sổ điện thoại. Được phát triển bởi IBM vào những năm 1970, một cơ sở dữ liệu quan hệ bao gồm hai hoặc nhiều bảng với các cột và hàng. Mỗi hàng đại diện cho một mục và mỗi cột sắp xếp một loại thông tin cụ thể, như tên, địa chỉ và số điện thoại. Mối quan hệ giữa các bảng và các loại trường được gọi là giản đồ. Trong một cơ sở dữ liệu quan hệ, lược đồ phải được xác định rõ ràng trước khi bất kỳ thông tin nào có thể được thêm vào.
Để cơ sở dữ liệu quan hệ có hiệu quả, dữ liệu bạn đang lưu giữ trong nó phải được cấu trúc theo một cách rất có tổ chức. Một lược đồ được thiết kế tốt giảm thiểu sự thừa dữ liệu và ngăn các bảng trở nên không đồng bộ, một tính năng quan trọng đối với nhiều doanh nghiệp, đặc biệt là các giao dịch tài chính. Một lược đồ được thiết kế kém có thể dẫn đến các nhức đầu về tổ chức do tính cứng cáp của nó. Ví dụ: cột được thiết kế để lưu trữ số điện thoại của Hoa Kỳ có thể yêu cầu 10 chữ số vì đó là tiêu chuẩn cho số điện thoại ở Hoa Kỳ. Điều này có lợi thế là từ chối bất kỳ giá trị không hợp lệ nào (ví dụ: nếu một số không có mã vùng). Tuy nhiên, nếu bạn cần thay đổi lược đồ (ví dụ: nếu bạn cần nhập số điện thoại quốc tế có nhiều hơn 10 số), thì toàn bộ cơ sở dữ liệu cần được chỉnh sửa.
Structured Query Language (SQL) là ngôn ngữ lập trình được các kiến trúc sư cơ sở dữ liệu sử dụng để thiết kế cơ sở dữ liệu quan hệ. Trong một cơ sở dữ liệu SQL như MySQL, Sybase, Oracle hoặc IBM DM2, SQL thực hiện các truy vấn, truy xuất dữ liệu và chỉnh sửa dữ liệu bằng cách cập nhật, xoá hoặc tạo các bản ghi mới. SQL là một ngôn ngữ nhẹ, tuyên bố rằng rất nhiều nâng nặng cho cơ sở dữ liệu quan hệ, hành động như một phiên bản của cơ sở dữ liệu của một kịch bản phía máy chủ. Một ưu điểm đặc biệt của SQL là mệnh đề JOIN đơn giản nhưng mạnh mẽ cho phép các nhà phát triển lấy được các dữ liệu liên quan được lưu trữ trên nhiều bảng với một lệnh duy nhất.
Một lý do khác khiến cơ sở dữ liệu SQL vẫn phổ biến là chúng phù hợp với nhiều ngăn xếp phần mềm đáng kính, bao gồm các ngăn xếp LAMP và Ruby. Các cơ sở dữ liệu này được hiểu rõ và được hỗ trợ rộng rãi, có thể là một lợi thế lớn nếu bạn gặp rắc rối.
Một số db relation phổ biến
- MySQL
- Oracle
- IMB DB2
- Sybase
- MS SQL Server
- Microsoft Azure
- MariaDB
- PostgreSQL
NOSQL DATABASES: Cơ sở dữ liệu không quan hệ và phân phối
Nếu yêu cầu dữ liệu của bạn không rõ ràng ngay từ đầu hoặc nếu bạn đang xử lý một số lượng lớn dữ liệu phi cấu trúc, bạn có thể không có sự sang trọng trong việc phát triển một cơ sở dữ liệu quan hệ với giản đồ được xác định rõ ràng. Nhập các cơ sở dữ liệu không quan hệ, cho phép linh hoạt hơn nhiều so với các đối tác truyền thống. Hãy suy nghĩ về các cơ sở dữ liệu không quan hệ giống như các thư mục tập tin, lắp ráp các thông tin liên quan của tất cả các loại. Nếu một blog WordPress sử dụng cơ sở dữ liệu NoSQL, mỗi tệp tin có thể lưu trữ dữ liệu cho bài đăng trên blog: những like, ảnh, văn bản, số liệu, liên kết và hơn thế nữa.
Dữ liệu phi cấu trúc từ web có thể bao gồm dữ liệu cảm biến, chia sẻ xã hội, cài đặt cá nhân, ảnh, thông tin dựa trên vị trí, hoạt động trực tuyến, số liệu sử dụng và hơn thế nữa. Cố gắng lưu trữ, xử lý và phân tích tất cả dữ liệu phi cấu trúc này đã dẫn đến sự phát triển của các lựa chọn thay thế cho SQL. Trong khi thuật ngữ NoSQL bao gồm một loạt các lựa chọn thay thế cho các cơ sở dữ liệu quan hệ, những gì chúng có điểm chung là chúng cho phép bạn xử lý dữ liệu linh hoạt hơn.
Cơ sở dữ liệu NoSQL làm việc như thế nào? Thay vì các bảng, cơ sở dữ liệu NoSQL có định hướng tài liệu. Bằng cách này, dữ liệu không có cấu trúc (chẳng hạn như bài báo, ảnh, dữ liệu truyền thông xã hội, video hoặc nội dung trong một bài đăng blog) có thể được lưu trữ trong một tài liệu đơn giản có thể tìm thấy nhưng không nhất thiết phải được phân loại vào các trường như cơ sở dữ liệu quan hệ. Nó trực quan hơn, nhưng lưu ý rằng lưu trữ dữ liệu với số lượng lớn như thế này đòi hỏi nỗ lực xử lý thêm và lưu trữ nhiều hơn là dữ liệu SQL có tổ chức cao. Đó là lý do tại sao Hadoop, một nền tảng máy tính mã nguồn mở và phân tích dữ liệu có khả năng xử lý dữ liệu khổng lồ trong đám mây, rất phổ biến cùng với các ngăn xếp cơ sở dữ liệu NoSQL.
Cơ sở dữ liệu NoSQL cung cấp một lợi thế lớn, đặc biệt cho các nhà phát triển ứng dụng: dễ truy cập. Các cơ sở dữ liệu quan hệ có quan hệ đầy đủ với các ứng dụng được viết bằng các ngôn ngữ lập trình hướng đối tượng như Java, PHP và Python. Cơ sở dữ liệu NoSQL thường có thể chệch hướng vấn đề này thông qua các API, cho phép các nhà phát triển thực hiện các truy vấn mà không cần phải học SQL hay hiểu kiến trúc cơ sở của hệ thống cơ sở dữ liệu của họ.
Loại Nosql thông dụng:
- Key-value : Lựa chọn Nosql phức tạp nhất mà lưu dữ liệu trong một cách ít lược đồ hơn mà bao gồm index key và value ví dụ : Cassandra, Azure, LevelDB, và Riak.
- Column store : mà lưu dữ liệu bảng thành cột chứ ko phải thành hàng . Nó không chỉ là một bảng được chuyển đổi mà các cột cho phép performance cao: Ví dụ HBase, BigTable, HyperTable
- Document database : sử dụng khái niệm key-value và thêm phức tạp hơn, mỗi tài liệu trong loại cơ sở dữ liệu này có dữ liệu riêng của nó, và khóa riêng của nó, được sử dụng để lấy nó. Đó là một lựa chọn tuyệt vời để lưu trữ, truy xuất và quản lý dữ liệu theo định hướng tài liệu nhưng vẫn có cấu trúc. Ví dụ: MongoDB, CouchDB.
- Graph database: có dữ liệu được kết nối với nhau và được thể hiện tốt nhất dưới dạng đồ thị? Phương pháp này có khả năng rất phức tạp. Ví dụ: Đa giác, Neo4J.
Một số cơ sở dữ liệu Nosql thông dụng :
- MongoDB
- Apache’s CouchDB
- HBase
- Oracle NoSQL
- Apache’s Cassandra DB
- Riak
Lý do sử dụng cơ sở dữ liệu SQL
Khi nói đến công nghệ cơ sở dữ liệu, không có một kích cỡ phù hợp với tất cả các giải pháp. Đó là lý do tại sao nhiều doanh nghiệp dựa vào cơ sở dữ liệu quan hệ và không liên quan cho các nhiệm vụ khác nhau. Ngay cả khi cơ sở dữ liệu NoSQL nổi tiếng về tốc độ và khả năng mở rộng của họ, vẫn có những tình huống mà cơ sở dữ liệu SQL có cấu trúc cao có thể thích hợp hơn. Dưới đây là một vài lý do bạn có thể chọn một cơ sở dữ liệu SQL:
- Bạn cần phải đảm bảo tuân thủ ACID (Nguyên tử, Tính nhất quán, Cách ly, Độ bền). Tính tuân thủ ACID làm giảm dị thường và bảo vệ tính toàn vẹn của cơ sở dữ liệu của bạn bằng cách mô tả chính xác các giao dịch tương tác với cơ sở dữ liệu như thế nào. Nói chung, cơ sở dữ liệu NoSQL hy sinh tính linh hoạt của ACID cho tính linh hoạt và tốc độ xử lý, nhưng đối với nhiều ứng dụng thương mại điện tử và tài chính, cơ sở dữ liệu phù hợp với ACID vẫn là lựa chọn ưu tiên.
- Dữ liệu của bạn được cấu trúc và không thay đổi. Nếu doanh nghiệp của bạn không trải qua sự tăng trưởng to lớn đòi hỏi nhiều máy chủ hơn và bạn chỉ làm việc với dữ liệu phù hợp thì có thể không có lý do gì để sử dụng một hệ thống được thiết kế để hỗ trợ nhiều loại dữ liệu khác nhau và lưu lượng truy cập cao.
Lý do sử dụng cơ sở dữ liệu NoSQL
Khi tất cả các thành phần khác của ứng dụng máy chủ của bạn được thiết kế để nhanh chóng và liền mạch, cơ sở dữ liệu NoSQL ngăn chặn dữ liệu khỏi bị nút cổ chai. Dữ liệu lớn là động lực NoSQL thực sự ở đây, làm những việc mà cơ sở dữ liệu quan hệ truyền thống không thể. Nó thúc đẩy sự phổ biến của các cơ sở dữ liệu NoSQL như MongoDB, CouchDB, Cassandra, và HBase.
- Lưu trữ khối lượng lớn dữ liệu thường có ít hoặc không có cấu trúc. Cơ sở dữ liệu NoSQL không giới hạn các loại dữ liệu bạn có thể lưu trữ với nhau, và cho phép bạn thêm các loại mới khác nhau khi nhu cầu của bạn thay đổi. Với cơ sở dữ liệu dựa trên tài liệu, bạn có thể lưu trữ dữ liệu ở một nơi mà không cần định nghĩa "loại" dữ liệu nào là trước.
- Tận dụng tối đa điện toán đám mây và lưu trữ. Lưu trữ cloud là giải pháp tiết kiệm chi phí tuyệt vời, nhưng yêu cầu dữ liệu được dễ dàng lây lan trên nhiều máy chủ để mở rộng quy mô. Cơ sở dữ liệu NoSQL như Cassandra được thiết kế để được mở rộng trên nhiều trung tâm dữ liệu mà không phải suy nghĩ nhiều . Nguồn dịch : https://www.upwork.com/hiring/data/sql-vs-nosql-databases-whats-the-difference/
All rights reserved