Hầu hết các ứng dụng phần mềm ngày nay đều liên quan đến một số lưu trữ dữ liệu động để tham khảo rộng rãi trong tương lai trong chính ứng dụng đó. Tất cả chúng ta đều biết dữ liệu được lưu trữ trong cơ sở dữ liệu được chia thành hai loại:DBMS quan hệ và không quan hệ.
Lựa chọn của bạn trong số hai lựa chọn này sẽ hoàn toàn phụ thuộc vào cấu trúc dữ liệu, lượng dữ liệu liên quan, hiệu suất cơ sở dữ liệu và khả năng mở rộng.
DBMS quan hệ lưu trữ dữ liệu trong bảng dưới dạng hàng để chúng sử dụng Ngôn ngữ truy vấn có cấu trúc (SQL), làm cho chúng trở thành lựa chọn tốt cho các ứng dụng liên quan đến một số giao dịch. Chúng bao gồm MySQL, SQLite và PostgreSQL.
Mặt khác, NoSQL DBMS như MongoDB hướng đến tài liệu để dữ liệu được lưu trữ trong các bộ sưu tập dưới dạng tài liệu. Điều này mang lại dung lượng lưu trữ lớn hơn cho một bộ dữ liệu lớn do đó có lợi thế hơn nữa về khả năng mở rộng.
Trong blog này, chúng tôi giả định rằng bạn có kiến thức tốt hơn về MongoDB hoặc MySQL và do đó muốn biết mối tương quan giữa cả hai về mặt truy vấn và cấu trúc cơ sở dữ liệu.
Dưới đây là bảng gian lận để bạn làm quen thêm với việc truy vấn MySQL tới MongoDB.
MySQL to MongoDB Cheat Sheet - Điều khoản
Điều khoản MySQL | Điều khoản MongoDB | Giải thích |
---|---|---|
Bảng | Bộ sưu tập | Đây là vùng chứa dữ liệu có xu hướng giống nhau trong các đối tượng được chứa. |
Hàng | Tài liệu | Xác định một thực thể đối tượng trong bảng cho MySQL và tập hợp trong trường hợp MongoDB. |
Cột | Trường | Đối với mỗi mục được lưu trữ, nó có các thuộc tính được xác định bởi các giá trị và kiểu dữ liệu khác nhau. Trong MongoDB, các tài liệu trong cùng một bộ sưu tập, có thể có các trường khác nhau. Trong MySQL, mọi hàng phải được xác định với cùng các cột từ những hàng hiện có. |
Khóa chính | Khóa chính | Mọi đối tượng được lưu trữ được xác định bằng một giá trị trường duy nhất trong trường hợp MongoDB, chúng tôi có trường _id được đặt tự động trong khi trong MySQL, bạn có thể xác định khóa chính của riêng mình, khóa này tăng dần khi bạn tạo các hàng mới. |
Bảng tham gia | Nhúng và liên kết tài liệu | Kết nối được liên kết với một đối tượng trong một bộ sưu tập / bảng khác với dữ liệu trong một bộ sưu tập / bảng khác. |
ở đâu | $ match | Chọn dữ liệu phù hợp với tiêu chí. |
nhóm | $ group | Nhóm dữ liệu theo một số tiêu chí. |
thả | $ unset | Xóa cột / trường khỏi hàng / tài liệu / |
bộ | $ set | Đặt giá trị của cột / trường hiện có thành giá trị mới. |
Tuyên bố lược đồ
Câu lệnh bảng MySQL | Tuyên bố thu thập MongoDB | Giải thích |
---|---|---|
Cơ sở dữ liệu và bảng được tạo rõ ràng thông qua bảng quản trị PHP hoặc được định nghĩa trong một tập lệnh, tức là Tạo cơ sở dữ liệu Tạo bảng | Cơ sở dữ liệu có thể được tạo ngầm định hoặc rõ ràng. Trong khi chèn tài liệu đầu tiên, cơ sở dữ liệu và bộ sưu tập được tạo ngầm cũng như trường _id tự động được thêm vào tài liệu này. Bạn cũng có thể tạo cơ sở dữ liệu một cách rõ ràng bằng cách chạy nhận xét này trong Mongo Shell | Trong MySQL, bạn phải chỉ định các cột trong bảng mà bạn đang tạo cũng như thiết lập một số quy tắc xác thực như trong ví dụ này, loại dữ liệu và độ dài đi đến một cột cụ thể. Trong trường hợp của MongoDB, không nhất thiết phải xác định các trường mà mỗi tài liệu nên giữ cũng như các quy tắc xác thực mà các trường được chỉ định nên giữ. Tuy nhiên, trong MongoDB để đảm bảo tính toàn vẹn và nhất quán của dữ liệu, bạn có thể đặt các quy tắc xác thực bằng cách sử dụng JSON SCHEMA VALIDATOR |
Bỏ bàn Người dùng | | Đây là các câu lệnh để xóa một bảng cho MySQL và bộ sưu tập trong trường hợp MongoDB. |
Thêm một cột mới có tên là join_date Xóa cột ngày tham gia nếu đã được xác định | Thêm một trường mới có tên là join_date Thao tác này sẽ cập nhật tất cả các tài liệu trong bộ sưu tập để có ngày tham gia là ngày hiện tại. Xóa trường join_date nếu đã được xác định Thao tác này sẽ xóa trường join_date khỏi tất cả các tài liệu thu thập. | Thay đổi cấu trúc của lược đồ bằng cách thêm hoặc bớt một cột / trường. Vì kiến trúc MongoDB không thực thi nghiêm ngặt cấu trúc tài liệu nên các tài liệu có thể có các trường khác nhau. |
Tạo chỉ mục với cột UserId tăng dần và Age giảm dần | Tạo chỉ mục liên quan đến các trường UserId và Age. | Các chỉ số thường được tạo để tạo thuận lợi cho quá trình truy vấn. |
| | Chèn bản ghi mới. |
| | Xóa các bản ghi khỏi bảng / bộ sưu tập có tuổi bằng 25. |
| | Xóa tất cả các bản ghi khỏi bảng / bộ sưu tập. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng với tất cả các cột / trường. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng với các cột / trường Tuổi, Giới tính và khóa chính. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng với các cột / trường Tuổi và Giới tính. Khóa chính bị bỏ qua. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành M. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng chỉ có giá trị Giới tính nhưng có giá trị Tuổi bằng 25. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F và Tuổi là 25. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Tuổi không bằng 25. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F hoặc Tuổi là 25. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Độ tuổi lớn hơn 25. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Tuổi nhỏ hơn hoặc bằng 25. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Tên có các chữ cái He. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F và sắp xếp kết quả này theo thứ tự tăng dần của cột id trong trường hợp MySQL và thời gian được chèn trong trường hợp MongoDB. |
| | Trả về tất cả các bản ghi từ bảng / bộ sưu tập người dùng có giá trị Giới tính được đặt thành F và sắp xếp kết quả này theo thứ tự giảm dần của cột id trong trường hợp MySQL và thời gian được chèn trong trường hợp MongoDB. |
| hoặc | Đếm tất cả các bản ghi trong bảng / bộ sưu tập người dùng. |
| hoặc | Đếm tất cả các bản ghi trong bảng / bộ sưu tập người dùng có giá trị cho thuộc tính Name. |
| hoặc | Trả về bản ghi đầu tiên trong bảng / bộ sưu tập người dùng. |
| | Trả về bản ghi đầu tiên trong bảng / bộ sưu tập người dùng có giá trị Giới tính bằng F. |
| | Trả về năm bản ghi trong bảng / bộ sưu tập người dùng sau khi bỏ qua năm bản ghi đầu tiên. |
| | Điều này đặt độ tuổi của tất cả các bản ghi trong bảng / bộ sưu tập người dùng có độ tuổi lớn hơn 25 đến 26. |
| | Điều này làm tăng tuổi của tất cả các bản ghi trong bảng / bộ sưu tập người dùng lên 1. |
| | Điều này làm giảm tuổi của bản ghi đầu tiên trong bảng / bộ sưu tập người dùng xuống 1. |
Để quản lý MySQL và / hoặc MongoDB một cách tập trung và từ một điểm duy nhất, hãy truy cập:https://severalnines.com/product/clustercontrol.