Làm thế nào để giải thích cho bà của bạn về sự khác biệt giữa SQL và NoSQL

Làm thế nào để giải thích cho bà của bạn về sự khác biệt giữa SQL và NoSQL

Một trong những quyết định quan trọng nhất mà nhà phát triển đưa ra là sử dụng cơ sở dữ liệu nào. Trong nhiều năm, các tùy chọn được giới hạn trong các tùy chọn cơ sở dữ liệu quan hệ khác nhau hỗ trợ Ngôn ngữ truy vấn có cấu trúc (SQL). Chúng bao gồm MS SQL Server, Oracle, MySQL, PostgreSQL, DB2 và nhiều hơn nữa.

Trong 15 năm qua, nhiều cơ sở dữ liệu mới đã gia nhập thị trường theo cách tiếp cận No-SQL. Chúng bao gồm các kho lưu trữ khóa-giá trị như Redis và Amazon DynamoDB, cơ sở dữ liệu cột rộng như Cassandra và HBase, kho lưu trữ tài liệu như MongoDB và Couchbase cũng như cơ sở dữ liệu đồ thị và công cụ tìm kiếm như Elaticsearch và Solr.

Trong bài viết này, chúng ta sẽ cố gắng hiểu SQL và NoSQL mà không đi sâu vào chức năng của chúng.
Ngoài ra, chúng tôi sẽ có một số niềm vui trên đường đi.

Giải thích SQL cho Granny

Bà ơi, hãy tưởng tượng rằng cháu không phải là cháu trai duy nhất của bà. Thay vào đó, mẹ và bố yêu nhau như thỏ, họ có 100 người con, sau đó họ nhận nuôi thêm 50 người nữa.

Vì vậy, bạn yêu tất cả chúng tôi và không muốn quên bất kỳ tên, ngày sinh nhật, hương vị kem yêu thích, kích cỡ quần áo, sở thích, tên vợ/chồng, tên con cái và những thông tin cực kỳ quan trọng khác của chúng tôi. Tuy nhiên, hãy đối mặt với nó. Bạn đã 85 tuổi và trí nhớ cũ tốt không thể xử lý được.

May mắn là đứa cháu thông minh nhất trong đám cháu, tôi có thể giúp được. Vì vậy, tôi đến nhà bạn, lấy ra một số tờ giấy và yêu cầu bạn nướng một ít bánh quy trước khi chúng ta bắt đầu.

Trên một tờ giấy, chúng tôi lập một danh sách có tên "Cháu“. Mọi cháu trai được ghi lại với một số thông tin quan trọng về anh ta, bao gồm một số duy nhất mà bây giờ sẽ cho biết làm thế nào cháu trai Anh ấy là. Ngoài ra, vì lợi ích của tổ chức, chúng tôi viết ra các thuộc tính được đặt tên ở đầu danh sách để chúng tôi luôn biết danh sách chứa thông tin gì.

id
tên
sinh nhật
lần truy cập trước
kích thước quần áo
kem yêu thích
con nuôi

1
Jimmy
09-22-1992
09-01-2019
L
sôcôla bạc hà
sai

2
Jessica
07-21-1992
02-22-2018
M
đường gập ghềnh
đúng

…chúng tôi tiếp tục danh sách!

Danh sách cháu

Sau một thời gian, bạn đã hiểu mọi thứ và chúng ta gần như đã hoàn thành danh sách này! Tuy nhiên, bạn quay sang tôi và nói: "Chúng tôi quên thêm không gian cho vợ/chồng, sở thích, cháu!" Nhưng không, chúng tôi không quên! Điều này tiếp tục sau đó và yêu cầu một tờ giấy mới.

Vì vậy, tôi rút ra một tờ giấy khác và trên đó chúng tôi gọi danh sách Vợ chồng. Chúng tôi lại thêm các thuộc tính quan trọng đối với chúng tôi lên đầu danh sách và bắt đầu thêm vào các hàng.

id
cháu_id
tên
sinh nhật

1
2
nhà vệ sinh
06-01-1988

2
9
Fernanda
03-05-1985

…thêm vợ chồng!

Danh sách vợ chồng

Lúc này, tôi giải thích với bà rằng nếu bà muốn biết ai kết hôn với ai thì bà chỉ cần tương xứng. id trong danh sách cháu с cháu_id trong danh sách vợ chồng.

Sau vài chục chiếc bánh quy, tôi cần đi chợp mắt. "Bà có thể tiếp tục không, bà?" Tôi đi ngủ đây.

Tôi sẽ quay lại sau vài giờ nữa. Bạn thật tuyệt, bà! Mọi thứ trông tuyệt vời ngoại trừ danh sách sở thích. Có khoảng 1000 sở thích trong danh sách. Hầu hết chúng đều lặp đi lặp lại; Chuyện gì đã xảy ra?

cháu_id
sở thích

1
đi xe đạp

4
đi xe đạp

3
đi xe đạp

7
chạy

11
đi xe đạp

…chúng ta tiếp tục!

Xin lỗi, tôi hoàn toàn quên nói! Sử dụng một danh sách, bạn chỉ có thể theo dõi sở thích. Sau đó, trong một danh sách khác, chúng ta cần theo dõi cháuai đang làm việc này sở thích. Chúng ta sẽ gọi nó "Danh sách chung". Thấy bạn không thích, tôi lo lắng và quay lại chế độ danh sách.

id
sở thích

1
đi xe đạp

2
chạy

3
bơi

…nhiều sở thích hơn!

Danh sách sở thích

Khi chúng tôi có danh sách sở thích của mình, chúng tôi tạo danh sách thứ hai và gọi nó là "Sở thích của cháu'.

cháu_id
sở thích_id

4
1

3
1

7
2

…hơn!

Danh sách chung về sở thích của cháu

Sau tất cả những công việc này, giờ đây bà ngoại đã có một hệ thống trí nhớ tuyệt vời để theo dõi toàn bộ gia đình đông con đáng kinh ngạc của mình. Và sau đó - để giữ tôi lâu hơn - cô ấy hỏi một câu hỏi kỳ diệu: "Bạn đã học được tất cả những điều này ở đâu?"

Cơ sở dữ liệu quan hệ

Cơ sở dữ liệu quan hệ là một tập hợp các bảng được mô tả chính thức (trong ví dụ của chúng tôi, đây là các trang tính) mà từ đó bạn có thể truy cập cho hoặc thu thập chúng theo nhiều cách khác nhau mà không phải sắp xếp lại các bảng Cơ sở dữ liệu. Có nhiều loại cơ sở dữ liệu quan hệ khác nhau, nhưng thật không may, một danh sách trên một tờ giấy không phải là một trong số đó.

Đặc điểm nổi bật của cơ sở dữ liệu quan hệ phổ biến nhất là ngôn ngữ truy vấn SQL (Structured Query Language). Nhờ có ông, nếu bà chuyển hệ thống bộ nhớ của mình sang máy tính, bà có thể nhanh chóng nhận được câu trả lời cho những câu hỏi như: “Năm ngoái ai không đến thăm tôi, đã có gia đình và không có sở thích nào?”

Một trong những hệ thống quản lý cơ sở dữ liệu SQL phổ biến nhất là MySQL mã nguồn mở. Nó được triển khai chủ yếu như một hệ thống quản lý cơ sở dữ liệu quan hệ (RDBMS) cho các ứng dụng phần mềm dựa trên web.

Một số tính năng chính của MySQL:

  • Nó khá nổi tiếng, được sử dụng rộng rãi và được thử nghiệm rộng rãi.
  • Có nhiều nhà phát triển lành nghề có kinh nghiệm với SQL và cơ sở dữ liệu quan hệ.
  • Dữ liệu được lưu trữ trong nhiều bảng khác nhau, giúp dễ dàng thiết lập mối quan hệ bằng cách sử dụng khóa chính và khóa ngoài (mã định danh).
  • Nó rất dễ sử dụng và hiệu quả, lý tưởng cho các doanh nghiệp lớn và nhỏ.
  • Mã nguồn tuân theo các điều khoản của Giấy phép Công cộng GNU.

Bây giờ quên Tất cả.

Giải thích NoSQL cho bà

Bà ơi, chúng ta có một đại gia đình. Bà có 150 đứa cháu! Nhiều người trong số họ đã kết hôn, có con, thích một thứ gì đó, v.v. Ở tuổi của bạn, không thể nhớ tất cả mọi thứ về tất cả chúng ta. Những gì bạn cần là một hệ thống bộ nhớ!

May mắn thay, tôi không muốn bạn quên ngày sinh nhật và hương vị kem yêu thích của tôi, tôi có thể giúp bạn. Vì vậy, tôi chạy đến cửa hàng gần nhất, lấy một cuốn sổ và quay trở lại nhà bạn.

Bước đầu tiên tôi làm là viết chữ "Cháu" bằng chữ to, đậm trên bìa vở. Sau đó, tôi lật sang trang đầu tiên và bắt đầu viết tất cả những gì bạn cần nhớ về tôi. Một vài phút sau, trang trông giống như thế này.

{ 
  "_id":"dkdigiye82gd87gd99dg87gd",
  "name":"Cody",
  "birthday":"09-12-2006",
  "last_visit":"09-02-2019",
  "clothing_size":"XL",
  "favorite_ice_cream":"Fudge caramel",
  "adopted":false,
  "hobbies":[ 
     "video games",
     "computers",
     "cooking"
  ],
  "spouse":null,
  "kids":[ 

  ],
  "favorite_picture":"file://scrapbook-103/christmas-2010.jpg",
  "misc_notes":"Prefers ice-cream cake on birthday instead of chocolate cake!"
}

Я: “Dường như mọi thứ đã sẵn sàng!”
: “Đợi đã, còn những đứa cháu còn lại thì sao?”
Я: "Đúng chính xác. Sau đó phân bổ một trang cho mỗi.”
: “Liệu tôi có cần viết ra tất cả thông tin giống nhau cho mọi người, như tôi đã làm cho bạn không?”
Я: “Không, chỉ khi bạn muốn. Để tôi cho xem."
Chộp lấy cây bút của bà tôi, tôi lật trang và nhanh chóng ghi lại thông tin về người em họ ít yêu thích nhất của mình.

{ 
  "_id":"dh97dhs9b39397ss001",
  "name":"Tanner",
  "birthday":"09-12-2008",
  "clothing_size":"S",
  "friend_count":0,
  "favorite_picture":null,
  "remember":"Born on same day as Cody but not as important"
}

Bất cứ khi nào một người bà cần ghi nhớ điều gì đó về một trong những đứa cháu của mình, bà ấy chỉ cần điều hướng đến trang bên phải trong sổ ghi chép của các cháu mình. Tất cả thông tin về họ sẽ được lưu trữ ngay trên trang của họ, mà cô ấy có thể nhanh chóng thay đổi và cập nhật.

Khi mọi thứ đã xong, cô ấy hỏi một câu hỏi kỳ diệu: "Bạn đã học được ở đâu để làm tất cả những điều này?"

cơ sở dữ liệu NoSQL

Có rất nhiều cơ sở dữ liệu NoSQL (“không chỉ SQL”). Trong các ví dụ của chúng tôi, chúng tôi đã chỉ ra cơ sở dữ liệu tài liệu. Cơ sở dữ liệu NoSQL lập mô hình dữ liệu theo cách loại trừ các mối quan hệ bảng được sử dụng trong cơ sở dữ liệu quan hệ. Các cơ sở dữ liệu này trở nên phổ biến vào đầu những năm 2000 với các công ty cần phân cụm cơ sở dữ liệu dựa trên đám mây do yêu cầu mở rộng quy mô rõ ràng của họ (như Facebook). Trong các ứng dụng như vậy, tính nhất quán của dữ liệu ít quan trọng hơn nhiều so với hiệu suất và khả năng mở rộng.

Ban đầu, cơ sở dữ liệu NoSQL thường được sử dụng cho các nhiệm vụ quản lý dữ liệu thích hợp. Về cơ bản, khi nói đến các ứng dụng web và đám mây, cơ sở dữ liệu NoSQL đã xử lý và phân phối một lượng dữ liệu đáng kể. Các kỹ sư NoSQL cũng thích lược đồ dữ liệu linh hoạt (hoặc không có lược đồ này) để có thể thực hiện các thay đổi nhanh chóng trong các ứng dụng đã được cập nhật.

Các tính năng chính của NoSQL:

  • Cách rất linh hoạt để lưu trữ dữ liệu
  • Chia tỷ lệ ngang thành cụm
  • Trình tự có thể có trên mỗi lần duy trì/lây lan
  • Tài liệu được xác định bằng các khóa duy nhất

So sánh chi tiết

MySQL yêu cầu một lược đồ được xác định và có cấu trúc.
NoSQL cho phép bạn lưu trữ bất kỳ dữ liệu nào trong một "tài liệu".

MySQL có một cộng đồng lớn.
NoSQL có một cộng đồng nhỏ và đang phát triển nhanh chóng.

NoSQL rất dễ mở rộng quy mô.
MySQL cần nhiều khả năng quản lý hơn.

MySQL sử dụng SQL, được sử dụng trong nhiều loại cơ sở dữ liệu.
NoSQL là một thiết kế dựa trên cơ sở dữ liệu với các triển khai phổ biến.

MySQL sử dụng ngôn ngữ truy vấn tiêu chuẩn (SQL).
NoSQL không sử dụng ngôn ngữ truy vấn tiêu chuẩn.

MySQL có nhiều công cụ báo cáo tuyệt vời.
NoSQL có một số công cụ báo cáo khó chuẩn hóa.

MySQL có thể hiển thị các vấn đề về hiệu suất đối với dữ liệu lớn.
NoSQL cung cấp hiệu suất tuyệt vời trên dữ liệu lớn.

Suy nghĩ 8cơ sở

Công ty cơ sở 8nơi tôi làm việc, chúng tôi cung cấp không gian làm việc cho từng dự án với cơ sở dữ liệu quan hệ Aurora MySQL được lưu trữ trên AWS. Mặc dù NoSQL là một lựa chọn hợp lý khi ứng dụng của bạn yêu cầu hiệu suất cao và khả năng mở rộng, nhưng chúng tôi tin rằng tính nhất quán dữ liệu mạnh do DBMS cung cấp là điều cần thiết khi xây dựng các ứng dụng SaaS và phần mềm kinh doanh khác.

Đối với các công ty khởi nghiệp và nhà phát triển xây dựng các ứng dụng kinh doanh yêu cầu báo cáo, tính toàn vẹn của giao dịch và các mô hình dữ liệu được xác định rõ ràng, theo chúng tôi, đầu tư vào cơ sở dữ liệu quan hệ là lựa chọn đúng đắn.

Tìm hiểu thêm về cách phát triển với Aurora, Serverless và GraphQL tại 8base.com đây.

Nguồn: www.habr.com

Thêm một lời nhận xét