So sánh Redis, MySQL và MongoDB

1. Số liệu thống kê

Số liệu Redis Mongodb MySQL
Github Stars 38.8k 16.7k 4.3k
Github Forks 15.1k 4.2k 1.7k
Last commit 20h 15h 19h
Hacker News Points 855 623 1.1k
Reddit Points 245 782 9.7k
StackOverflow questions 16.7k 118.5k 572.1k

2. Cấu trúc cơ sở dữ liệu

Redis Mongodb MySQL
- Key-value store.
- Redis là một mã nguồn mở, BSD licensed, lưu trữ dữ liệu dưới dạng key-value trong bộ nhớ.
- Nó thường được gọi là máy chủ cấu trúc dữ liệu vì các key có thể chứa chuỗi, băm, danh sách, set và sorted-set.
- Cấu trúc này khác với các cơ sở dữ liệu quan hệ có các bảng, hàng và cột; có thể gây khó khăn cho một số bộ đệm SQL truyền thống tới master.
- Document store.
- MongoDB lưu trữ dữ liệu trong các document tương tự như JSON và có thể thay đổi về cấu trúc, cung cấp một schema linh hoạt, năng động.
- Trong Mongodb collection của document không có cấu trúc được xác định trước và các column có thể thay đổi cho các document khác nhau.
- MongoDB cũng được thiết kế để có tính sẵn sàng và khả năng mở rộng cao, với tính năng sao chép và tự động tích hợp sẵn.
- Relational DBMS.
- MySQL cung cấp một máy chủ cơ sở dữ liệu quan hệ SQL (Ngôn ngữ truy vấn có cấu trúc) rất nhanh, đa luồng, đa người dùng và mạnh mẽ.
- MySQL Server được thiết kế cho các hệ thống sản xuất tải trọng nặng, nhiệm vụ quan trọng cũng như nhúng vào phần mềm được triển khai hàng loạt.

3. Một số database models khác

Redis Mongodb MySQL
Document store
Graph DBMS
Search engine
Time Series DBMS
X Document store

4. Tại sao nên sử dụng?

Redis Mongodb MySQL
- Cơ sở dữ liệu NoSQL.
- Dễ cài đặt, sử dụng, deploy và duy trì.
- Lưu trữ dữ liệu trong bộ nhớ nên cho hiệu năng cao và tốc độ nhanh.
- Mã nguồn mở, ổn định, chi phí hiệu quả.
- Tính mở rộng và sẵn sàng cao, sao chép bất đồng bộ, …
- Tích hợp dễ dàng với Sidekiq cho Rails background job.
- Cấu trúc dữ liệu đa dạng, ...
- Một trong những document store phổ biến nhất.
- NoSQL.
- Dễ dàng setup, sử dụng cũng như duy trì.
- Mã nguồn mở, miễn phí, đáng tin cậy có tốc độ và hiệu năng nhanh.
- Khả năng linh hoạt, mở rộng, sẵn sàng cao, có khả năng auto-sharding.
- Hỗ trợ đầy đủ index, tốc độ cập nhật nhanh chóng.
- RDBMS mã nguồn mở được sử dụng rộng rãi.
- Cơ sở dữ liệu SQL.
- Mã nguồn mở miễn phí, dễ sử dụng, khả năng tương thích cao, hỗ trợ đa nền tảng, cộng đồng phát triển mạnh mẽ.
- Hỗ trợ index và full-text searching.
- Nhanh, sẵn có và bảo mật.
- Một RDBMS mạnh mẽ có số lượng ứng dụng gần như không giới hạn.

5. Khi nào nên sử dụng?

Redis Mongodb MySQL
- Dữ liệu key-value.
- Caching.
- Lo lắng và có thời gian cân nhắc thiết kế cơ sở dữ liệu.
- Thực sự cần hiệu năng cao.
- Không quan tâm nhiều tới scaling, kích thước dữ liệu ổn định.
- Dữ liệu phức tạp, lớn, đang phát triển.
- Linh hoạt, dễ để học.
- Prototyping, Startups, Hackathons
- Không quan tâm lắm về cơ sở dữ liệu.
- Cần thay đổi schema nhanh chóng.
- Các hệ thống realtime (thời gian thực) yêu cầu phản hồi nhanh, bigdata với yêu cầu truy vấn nhanh, có tần suất write/insert lớn.
- Sử dụng làm search engine.
- Cơ sở dữ liệu quan hệ.
- Khi có các hoạt động phân tán.
- Cần bảo mật cao và hoạt động đơn giản.
- các giải pháp tùy chỉnh.
- Không nên sử dụng khi dữ liệu lớn dần và không thể cache hết lên memory.
- Cần tuân thủ SQL và sự thi hành đồng thời.

6. Nhược điểm

Redis Mongodb MySQL
- Vì Redis sử dụng RAM làm bộ nhớ cho mình nên khi lượng file cache lớn thì sẽ dẫn đến trường hợp thiếu RAM cho Server.
- Không thể truy vấn trực tiếp các object.
- Không hỗ trợ JOIN.
- Dữ liệu dễ bị sai ro không có ràng buộc.
- Sử dụng nhiều bộ nhớ và giới hạn kích thước bản ghi (< 16Mb).
- Thuộc sở hữu của một công ty với dự thảo riêng của họ.
- Cần bổ sung thêm nhiều tính năng doanh nghiệp như các công cụ và tính năng mở rộng.
- Nhiều report về vấn đề lưu trữ procedures và triggers, xử lý transaction không hiệu quả.
- Phát triển chậm từ khi bị mua lại.

7. Các công ty đã sử dụng

Redis Mongodb MySQL
Airbnb, Uber Technologies, Instagram, Medium, Pinterest, Twitter, Reddit, Slack, Instacart, Lyft, Stack Exchange, Shopify, StackShare, Udemy, DigitalOcean , Samsung ... Uber Technologies, Lyft, Codecademy, MIT, Rainist, CircleCI, Bodybuilding.com, OpenGov, Hootsuite, Keen, Trello, 500px, nrise, OpenTable, eBay ... Airbnb, Uber Technologies, Netflix, Dropbox, Pinterest, Twitter, Slack, Shopify, LinkedIn, Coursera, Udemy, DigitalOcean, 9GAG, Asana, Yelp ...

8. Công cụ tích hợp

Redis Mongodb MySQL
Datadog, Presto, EasyEngine, Heroku Redis, Spring Data, Tyk Cloud, OpsDash, SignalFx ... Datadog, Mongoose, Metabase, MongoDB Atlas, JSON, Azure Cosmos DB, Presto, Redash ... Travis CI, Slick, Datadog, Composer, Metabase, Amazon RDS for Aurora, Sequelize, JSON ...

9. Một số tiêu chí khác

Tiêu chí Redis Mongodb MySQL
Website và tài liệu https://redis.io/
https://redis.io/documentation
https://www.mongodb.com/
https://docs.mongodb.com/manual/
https://www.mysql.com/
https://dev.mysql.com/doc/
Năm phát hành 2009 2009 1995
Nhà phát triển Salvatore Sanfilippo MongoDB, Inc Oracle
Phiên bản phát hành hiện tại 5.0.5, May 2019 4.0.10, May 2019 8.0.17, July 2019
Chỉ dựa trên cloud Không Không Không
Ngôn ngữ thực thi C C++ C and C++
Hệ điều hành máy chủ BSD
Linux
OS X
Windows
Linux
OS X
Solaris
Windows
FreeBSD
Linux
OS X
Solaris
Windows
Data scheme Schema-free Schema-free
Typing Một phần
Hỗ trợ XML Không X
Secondary indexes
SQL Không Các truy vấn SQL chỉ đọc qua trình kết nối MongoDB cho BI
API và các phương thức truy cập khác Proprietary protocol Proprietary protocol using JSON Proprietary native API
ADO.NET
JDBC
ODBC
Hỗ trợ các ngôn ngữ lập trình C, C#, C++, Clojure, Crystal, D, Dart, Elixir, Erlang, Fancy, Go, Haskell, Haxe, Java, JavaScript (Node.js), Lisp, Lua, MatLab, Objective-C, OCaml, Pascal, Perl, PHP, Prolog, Pure Data, Python, R, Rebol, Ruby, Rust, Scala, Scheme, Smalltalk, Swift, Tcl, Visual Basic Actionscript , C, C#, C++, Clojure, ColdFusion, D, Dart, Delphi, Erlang, Go, Groovy, Haskell, Java, JavaScript, Lisp, Lua, MatLab, Perl, PHP, PowerShell, Prolog, Python, R, Ruby, Scala, Smalltalk Ada, C, C#, C++, D, Delphi, Eiffel, Erlang, Haskell, Java, JavaScript (Node.js), Objective-C, OCaml, Perl, PHP, Python, Ruby, Scheme, Tcl
Server-side scripts Lua JavaScript
Triggers Không Không
Phân vùng Sharding Sharding Phân vùng ngang, sharding với MySQL Cluster hoặc MySQL Fabric
Replication Master-slave
Multi-master
Master-slave Master-master
Master-slave
MapReduce Không Không
Khái niệm nhất quán - Sự nhất quán cuối cùng mạnh với CRDT.
- Tính nhất quán cuối cùng.
- Tính nhất quán cuối cùng.
- Tính nhất quán ngay lập tức.
- Tính nhất quán ngay lập tức.
Foreign keys Không Không
Transaction Khóa tối ưu, thực thi nguyên tử các khối lệnh và tập lệnh. Multi-document ACID Transactions với snapshot isolation. ACID
Concurrency
Durability
In-memory
User Kiểm soát truy cập dựa trên mật khẩu đơn giản. Quyền truy cập cho user và role. User có khái niệm ủy quyền chi tiết.

10. Lãi suất theo thời gian

11. Tham khảo

Redis - Mongobd

Mongodb - MySQL - Redis