So sánh tốc độ mongodb với mysql

Chủ yếu số liệu được đưa ra ở đây dưới dạng biểu đồ, qua đó chúng ta sẽ dễ dàng hình dung được ưu điểm cũng như nhược điểm củaMongoDB cũng như các hệ quản trị database khác.

Biểu đồ gây tranh cãi về việc MongoDB chèn dữ liệu nhanh hơn SQL Server tới hơn 100 lần

Hãy thử tưởng tượng rằng bạn đang thành lập 1 hệ thống website thanh toán trực tuyến, có liên quan tới nhiều đơn vị dữ liệu khác nhau. Nếu có 1 hệ quản trị cơ sở dữ liệu nào đó hoạt động nhanh hơn SQL Server nhiều lần, miễn phí, dễ giám sát và xử lý, toàn bộ hệ thống ứng dụng của bạn với LINQ (tạm dịch là ngôn ngữ truy vấn được tích hợp vào ngôn ngữ lập trình) thì MongoDB chắc chắn sẽ là sự lựa chọn không thể tốt hơn.

Và khi có hệ quản trị cơ sở dữ liệu như vậy thì chúng ta có thể triển khai và hoạt động trên hầu hết các thiết bị phần cứng phổ biến hiện nay, chứ không phải là dòng thiết bị máy chủ cao cấp và chuyên dụng. Đồng nghĩa với việc đó là không cần phải mua hoặc thuê server như trước, và tất nhiên chi phí ban đầu phải bỏ ra thấp hơn rất nhiều, trong khi lợi nhuận hoặc doanh thu thì gần như không thay đổi.

Một yếu tố nữa trước khi chúng ta đi vào thử nghiệm, thành viên Kristina Chodorow từ 10Gen đã tổ chức 1 cuộc hội thảo về MySQL tạiSan Francisco với chủ đề Dropping ACID with MongoDB

Tại đây, Kristina đã miêu tả khá cụ thể về kinh nghiệm triển khai của SourceForge trong quá trình di chuyển cơ sở dữ liệu từ MySql tớiMongoDB. Trên nền tảng MySql, SourceForge đã đạt tới giới hạn của hiệu suất hoạt động với số lượng người dùng nhất định nào đó. Nhưng với một vài thay đổi trong tùy chọn của MongoDB, hệ thống đã trở nên ổn định hơn rất nhiều.

Mô hình thử nghiệm:

Một mô hình cơ sở dữ liệu chuyên sâu dành cho ứng dụng trực tuyến được tăng cường để cải thiện khả năng hỗ trợ số lượng người dùng càng nhiều càng tốt. Sẽ có nhiều tài khoản người dùng từ ứng dụng web trực tuyến, từ các hàm API và nhiều ứng dụng khác có liên quan. Về mặt kỹ thuật, người dùng sẽ tương tác trực tiếp với dữ liệu bằng cách thực hiện câu lệnh truy vấn, mỗi thao tác của họ lại tương ứng với từng mảnh dữ liệu nhỏ trong toàn bộ hệ thống. Tuy nhiên, thực tế và lý thuyết lại hoàn toàn khác nhau, mô hình trên chỉ là những gì chúng ta đang tưởng tượng.

So sánh chức năng Insert:

Đây là điểm khác biệt rõ ràng nhất giữa MongoDB và SQL Server:

Quá trình này được thực hiện bằng cách chèn 50.000 đối tượng độc lập sử dụng NoRM của MongoDB và LINQ tới SQL dành cho SQLServer 2008. Mô hình mẫu như sau:

MongoDB

SQL Server

Sau đó, chạy 5 ứng dụng client vào cơ sở dữ liệu với chức năng insert:

MongoDB

SQL Server

Và nhìn kỹ vào phần thông tin quan trọng nhất hiển thị tại đây, đó là thời gian thực hiện:

MongoDB

SQL Server

Rất dễ dàng, các bạn có thể nhận ra sự khác biệt giữa 2 giây – MongoDB và 205 giây – SQL Server. Để đảm bảo tính xác thực của kết quả, chúng tôi tiến hành thực hiện lại sử dụng chương trình dựa trên ADO.NET, và tốc độ của SQL đã được nâng lên khoảng 1.5 tới 3 lần so với trước đó. Làm 1 phép tính đơn giản thì MongoDB vẫn nhanh hơn SQL khoảng 30 – 50 lần.

So sánh tốc độ truy vấn:

Tiếp theo, chúng ta chuyển sang quá trình tách lọc dữ liệu từ cùng đối tượng khác nhau trong trường ID của mỗi bản ghi:

Nhìn vào biểu đồ trên, rõ ràng MongoDB vẫn tỏ ra vượt trội hơn hẳn so với SQL về hiệu suất (khỏang 3 lần). Để tiếp tục, chúng ta hãy chuẩn sang bảng dữ liệu phức tạo hơn đôi chút với khóa ngoại – Foreign Key và join:

MongoDB

SQL Server

Kết quả hiển thị tại đây vẫn tương tự như những lần kiểm tra trước đó mà không cần phải join:

Tất cả các phiên kiểm tra đều được thực hiện trên laptop Lenovo T61, hệ điều hành Windows 7 64 bit với bộ vi xử lý 2.8 GHz, sử dụng phiên bản 64 bit của SQL Server 2008 Standard và MongoDB 1.4.1. Toàn bộ ví dụ mẫu các bạn có thể download trực tiếp tại đây hoặc qua MediaFire.

Khi nói đến việc chọn cơ sở dữ liệu cho dự án phần mềm, một trong những quyết định lớn nhất là chọn cấu trúc dữ liệu "Quan hệ" (SQL) hoặc "Không Quan hệ" (NoSQL).

Đừng hiểu nhầm ý của mình ;)

Mặc dù cả hai đều là các lựa chọn khả thi, nhưng có một số khác biệt chính giữa hai loại CSDL này mà chúng ta phải ghi nhớ khi đưa ra quyết định.

Ở đây, chúng ta chia nhỏ các điểm khác biệt quan trọng nhất và thảo luận về hai trong số những CSDL chính trong cuộc tranh luận giữa "Quan hệ" hay "Không Quan hệ".

Đại diện mình sử dụng để so sánh đó là: MySQL và MongoDB.

1. SQL vs NoSQL: Sự khác biệt giữa SQL và NoSQL

Cơ sở dữ liệu SQL chủ yếu được gọi là Cơ sở dữ liệu quan hệ (RDBMS).

Trong khi đó,

Cơ sở dữ liệu NoSQL chủ yếu được gọi là Cơ sở dữ liệu không liên quan hoặc Cơ sở dữ liệu phân tán.

Cơ sở dữ liệu SQL là cơ sở dữ liệu dựa trên bảng trong khi cơ sở dữ liệu NoSQL là tài liệu dựa trên tập hợp cặp key - value, document, graph databases hoặc wide-column.

Điều này có nghĩa là cơ sở dữ liệu SQL biểu thị dữ liệu dưới dạng bảng bao gồm n số hàng dữ liệu trong khi cơ sở dữ liệu

NoSQL là tập hợp của cặp key - value, document, graph databases hoặc wide-column, không có định nghĩa lược đồ tiêu chuẩn mà nó cần phải tuân thủ.

Cơ sở dữ liệu SQL có lược đồ được xác định trước trong khi cơ sở dữ liệu

NoSQL có lược đồ động cho dữ liệu phi cấu trúc.

Cơ sở dữ liệu SQL có thể mở rộng theo chiều dọc trong khi cơ sở dữ liệu

NoSQL có thể mở rộng theo chiều ngang.

Cơ sở dữ liệu SQL được mở rộng bằng cách tăng sức mạnh của phần cứng. Cơ sở dữ liệu

NoSQL được thu nhỏ bằng cách tăng các máy chủ cơ sở dữ liệu trong nhóm tài nguyên để giảm tải.

Cơ sở dữ liệu SQL sử dụng SQL (ngôn ngữ truy vấn có cấu trúc) để xác định và thao tác dữ liệu, rất mạnh mẽ.

Trong cơ sở dữ liệu

NoSQL, các truy vấn được tập trung vào việc thu thập tài liệu. Đôi khi nó còn được gọi là UnQL (Ngôn ngữ truy vấn phi cấu trúc). Cú pháp sử dụng UnQL thay đổi từ cơ sở dữ liệu đến cơ sở dữ liệu.

  • Ví dụ về cơ sở dữ liệu SQL: MySql, Oracle, Sqlite, Postgres và MS-SQL.
  • Ví dụ về cơ sở dữ liệu NoSQL: MongoDB, BigTable, Redis, RavenDb, Cassandra, Hbase, Neo4j và CouchDb

1.1 Truy vấn phức tạp

Cơ sở dữ liệu SQL phù hợp với môi trường chuyên sâu truy vấn phức tạp trong khi cơ sở dữ liệu NoSQL không phù hợp với các truy vấn phức tạp.

Ở cấp độ cao,

NoSQL không có interfaces tiêu chuẩn để thực hiện các truy vấn phức tạp và bản thân các truy vấn trong NoSQL không mạnh bằng ngôn ngữ truy vấn SQL.

1.2 Loại dữ liệu sẽ được lưu trữ

Cơ sở dữ liệu SQL không phù hợp nhất để lưu trữ dữ liệu phân cấp.

Tuy nhiên, cơ sở dữ liệu

NoSQL phù hợp hơn với việc lưu trữ dữ liệu phân cấp vì nó tuân theo cách lưu trữ dữ liệu cặp key - value tương tự như dữ liệu JSON.

Cơ sở dữ liệu

NoSQL được ưu tiên cao cho tập dữ liệu lớn (nghĩa là cho Big Data). Hbase là một ví dụ cho mục đích này.

  • Xem ngay: Khóa học Big Data

1.3 Khả năng mở rộng

Trong hầu hết các tình huống điển hình, cơ sở dữ liệu SQL có khả năng mở rộng theo chiều dọc. Bạn có thể quản lý tăng tải bằng cách tăng CPU, RAM, SSD, v.v., trên một máy chủ.

Mặt khác, cơ sở dữ liệu

NoSQL có thể mở rộng theo chiều ngang. Bạn có thể dễ dàng thêm một vài máy chủ trong cơ sở hạ tầng cơ sở dữ liệu NoSQL của mình để xử lý lưu lượng lớn.

1.4 Đối với ứng dụng dựa trên giao dịch cao

Cơ sở dữ liệu SQL phù hợp nhất cho các ứng dụng loại giao dịch nặng, vì nó ổn định hơn và hứa hẹn tính nguyên tử cũng như tính toàn vẹn của dữ liệu.

Mặc dù bạn có thể sử dụng

NoSQL cho mục đích giao dịch, nhưng nó vẫn không thể so sánh và đủ khả năng tải cao và cho các ứng dụng giao dịch phức tạp.

1.5 Khả năng hỗ trợ

Hỗ trợ tuyệt vời có sẵn cho tất cả các cơ sở dữ liệu SQL từ các nhà cung cấp của họ. Ngoài ra còn có rất nhiều tư vấn độc lập có thể giúp bạn với cơ sở dữ liệu SQL để triển khai quy mô rất lớn.

Đối với một số cơ sở dữ liệu

NoSQL, bạn vẫn phải dựa vào hỗ trợ của cộng đồng và chỉ có các chuyên gia bên ngoài mới có thể thiết lập và triển khai NoSQL quy mô lớn của bạn.

1.6 Thuộc tính

Cơ sở dữ liệu SQL nhấn mạnh vào các thuộc tính ACID (Nguyên tử, Tính nhất quán, Cách ly và Độ bền)

Trong khi,

Cơ sở dữ liệu

NoSQL tuân theo định lý CAP của nhà sản xuất (Tính nhất quán, Tính khả dụng và Dung sai phân vùng)

1.7 Kiểu DB

Ở mức độ cao, chúng ta có thể phân loại cơ sở dữ liệu SQL là nguồn mở hoặc nguồn đóng từ các nhà cung cấp thương mại.

Cơ sở dữ liệu

NoSQL có thể được phân loại trên cơ sở lưu trữ dữ liệu dưới dạng cơ sở dữ liệu đồ thị, cơ sở dữ liệu lưu trữ key - value, cơ sở dữ liệu lưu trữ tài liệu, cơ sở dữ liệu lưu trữ cột và cơ sở dữ liệu XML.

2. MySQL và MongoDB: Cơ sở dữ liệu nào tốt hơn?

2.1 Một số ưu điểm của MongoDB

Sử dụng miễn phí: Kể từ tháng 10 năm 2018, các bản cập nhật của MongoDB đã được xuất bản theo Server Side Public License (SSPL) v1 và cơ sở dữ liệu được sử dụng miễn phí.

Lược đồ động: Như đã đề cập, điều này cho phép bạn linh hoạt thay đổi lược đồ dữ liệu của mình mà không sửa đổi bất kỳ dữ liệu hiện có nào.

Khả năng mở rộng: MongoDB có thể mở rộng theo chiều ngang, giúp giảm khối lượng công việc và mở rộng quy mô doanh nghiệp của bạn một cách dễ dàng.

Khả năng quản lý: Cơ sở dữ liệu không có cần thiết Quản trị viên CSDL. Vì nó khá thân thiện với người dùng theo cách này, nó có thể được sử dụng bởi cả Lập trình viên và Quản trị viên.

Tốc độ: MongoDB có hiệu suất cao cho các truy vấn đơn giản.

Tính linh hoạt: Bạn có thể thêm các cột hoặc trường mới trên MongoDB mà không ảnh hưởng đến các hàng hoặc hiệu suất ứng dụng hiện có.

ACID Transactions: MongoDB v.4 cuối cùng cũng nhận được hỗ trợ cho các giao dịch ACID đa nguyên (tính nguyên tử, tính nhất quán, cách ly, độ bền). Đó là một thứ gì đó mà cộng đồng MongoDB đã yêu cầu trong nhiều năm và MongoDB Inc hỗ trợ. Giờ đây họ sắp biến điều này thành hiện thực.

MongoDB Atlas (đây là một tính năng mới): MongoDB gần đây đã thêm công nghệ cơ sở dữ liệu đám mây toàn cầu MongoDB Atlas vào các dịch vụ của nó. Tính năng này cho phép bạn triển khai MongoDB được quản lý hoàn toàn thông qua AWS, Azure hoặc GCP. MongoDB Atlas cho phép bạn sử dụng trình điều khiển, tích hợp và công cụ để giảm thời gian cần thiết để quản lý cơ sở dữ liệu của bạn.

2.2 Ai nên sử dụng MongoDB?

MongoDB là một lựa chọn tốt cho các doanh nghiệp có tốc độ tăng trưởng nhanh hoặc cơ sở dữ liệu không có định nghĩa lược đồ rõ ràng (nghĩa là, bạn có rất nhiều dữ liệu phi cấu trúc).

Nếu bạn không thể xác định lược đồ cho cơ sở dữ liệu của mình, nếu bạn thấy mình không chuẩn hóa các lược đồ dữ liệu hoặc nếu các yêu cầu và lược đồ dữ liệu của bạn liên tục phát triển - thường xảy ra đối với các ứng dụng di động, phân tích thời gian thực, hệ thống quản lý nội dung, v.v.

\> MongoDB có thể là một lựa chọn phù hợp cho bạn.

2.3 Một số ưu điểm của MySQL

Được sở hữu bởi Oracle: Mặc dù MySQL là mã nguồn mở và miễn phí, nhưng hệ thống cơ sở dữ liệu được sở hữu và quản lý bởi Oracle.

Trưởng thành: MySQL là một cơ sở dữ liệu cực kỳ lâu đời, có nghĩa là MySQL có một cộng đồng lớn, thử nghiệm rộng rãi và khá ổn định.

Khả năng tương thích: MySQL có sẵn cho tất cả các nền tảng chính, bao gồm Linux, Windows, Mac, BSD và Solaris. Nó cũng có các trình kết nối với các ngôn ngữ như Node.js, Ruby, C #, C ++, Java, Perl, Python và PHP, có nghĩa là nó không bị giới hạn trong ngôn ngữ truy vấn SQL.

  • Tham khảo: Khóa Học Python

Hiệu quả chi phí: Cơ sở dữ liệu là nguồn mở và miễn phí.

Có thể nhân rộng: Cơ sở dữ liệu MySQL có thể được sao chép trên nhiều nút, có nghĩa là khối lượng công việc có thể giảm và khả năng mở rộng và tính sẵn sàng của ứng dụng có thể được tăng lên.

Shending: Mặc dù shending không thể được thực hiện trên hầu hết các cơ sở dữ liệu SQL, nhưng nó có thể được thực hiện trên các máy chủ MySQL. Điều này vừa hiệu quả vừa tốt cho việc kinh doanh.

2.4 Ai nên sử dụng MySQL?

MySQL là một lựa chọn mạnh mẽ cho bất kỳ doanh nghiệp nào sẽ được hưởng lợi từ cấu trúc dữ liệu được xác định trước và thiết lập được các lược đồ.

  • Học Lập trình Web với PHP và MySQL

Ví dụ: Các ứng dụng yêu cầu giao dịch nhiều hàng (như Hệ thống kế toán hoặc Hệ thống theo dõi hàng tồn kho) hoặc chương trình chạy trên các hệ thống cũ sẽ phát triển mạnh với cấu trúc MySQL.

SQL hay NoSQL tốt hơn?

Trong thực tế, mọi cơ sở dữ liệu cả SQL và No-SQL đều có những ưu điểm riêng. Không có cơ sở dữ liệu nào cung cấp giải pháp toàn diện tốt nhất.

Chỉ có cơ sở dữ liệu tốt nhất cho từng dự án cụ thể.

---

HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI

Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!

Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội

SĐT: 02435574074 - 0914939543

Email: hello@niithanoi.edu.vn

Fanpage: //facebook.com/NIIT.ICT/

niit

niithanoi

niiticthanoi

hoclaptrinh

khoahoclaptrinh

hoclaptrinhjava

hoclaptrinhphp

java

php

python

Chủ đề