TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA KỸ THUẬT THÔNG TIN ĐỒ ÁN MÔN HỌC QUẢN LÍ THÔNG TIN ĐỀ TÀI Tìm hiểu về hệ quản trị Redis và so sánh điểm khác biệt so với hệ quản trị SQL Server LỚP IE103 M21 CNCL GVHD TS LƯU THANH SƠN TS NGUYỄN GIA TUẤN ANH IE103 Quản lý thông tin Trang 1 MỤC LỤC MỤC LỤC 1 DANH SÁCH BẢNG BIỂU, HÌNH VẼ 2 CHƯƠNG 1 – TỔNG QUAN VỀ REDIS 3 1 1 Hệ quản trị cơ sở dữ liệu redis 3 1 2 Kiến trúc của Redis 5 1 3 Toàn vẹ.
Trang 1TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KỸ THUẬT THÔNG TIN
TS NGUYỄN GIA TUẤN ANH SVTH: LƯU TẤN HƯNG - MSSV: 20521364
NGUYỄN THANH HIẾU - MSSV: 20521328
Trang 2Trang 1
MỤC LỤC
MỤC LỤC 1
DANH SÁCH BẢNG BIỂU, HÌNH VẼ 2
CHƯƠNG 1 – TỔNG QUAN VỀ REDIS 3
1.1 Hệ quản trị cơ sở dữ liệu redis 3
1.2 Kiến trúc của Redis 5
1.3 Toàn vẹn dữ liệu 5
1.4 Khả năng đáp ứng cao và mở rộng 8
1.5 Ưu và nhược điểm của Redis 11
1.6 Ứng dụng của Redis 13
Chương 2 – Redis vs Microsoft SQL Server 14
2.1 Sơ lược về hệ quản trị cơ sở dữ liệu Microsoft SQL Server 14
2.2 So sánh Redis với Microsoft SQL Server 15
Tài liệu tham khảo 20
Trang 3Trang 2
DANH SÁCH BẢNG BIỂU, HÌNH VẼ
Hình 1.1 Logo của hệ quản trị CSDL Redis……… 3
Hình 1.2 Kiến trúc của Redis……… 5
Hình 1.3 Cơ chế sao chép cơ sở dữ liệu……… 9
Hình 1.4 Cơ chế sentinel……… 10
Hình 1.5 Cơ chế cluster……… 11
Hình 2.1 Logo của hệ quản trị CSDL Microsoft SQL Server……… 14
Bảng 1 Thời gian thực hiện truy vấn Select……… 16
Bảng 2 Thời gian thực hiện truy vấn Insert……… 17
Bảng 3 Thời gian thực hiện truy vấn Delete……… 17
Bảng 4 Thời gian thực hiện truy vấn Update……… 18
Trang 4Ưu điểm của dạng khóa - giá trị là truy xuất, tìm kiếm rất nhanh Nhược điểm là lưu dữ liệu không theo mẫu (schema) nhất định Thường dùng làm bộ nhớ đệm cho nội dung giúp truy xuất nhanh hơn Dữ liệu có thể lưu trữ dưới các dạng: Strings, Lists, Hashes, Sets, Sorted Sets, được lưu trữ dữ liệu trên RAM để tối ưu hóa thời gian truy xuất, hỗ trợ lưu xuống đĩa cứng, hỗ trợ phân tán
1.1.2 Lịch sử ra đời
Hình 1.1 Logo redis
Tên Redis có nghĩa là Máy chủ Từ điển Từ xa Dự án Redis bắt đầu khi Salvatore Sanfilippo, nhà phát triển ban đầu của Redis Sau khi
Trang 5Trang 4
gặp phải các vấn đề đáng kể trong việc mở rộng một số loại khối lượng công việc bằng cách sử dụng các hệ thống cơ sở dữ liệu truyền thống, Sanfilippo bắt đầu tạo mẫu thử nghiệm phiên bản khái niệm đầu tiên của Redis trong TCL Sau đó, Sanfilippo đã dịch nguyên mẫu đó sang ngôn ngữ C và triển khai kiểu dữ liệu đầu tiên, danh sách Sau một vài tuần sử dụng dự án trong nội bộ với thành công, Sanfilippo đã quyết định mở mã nguồn của nó, thông báo về dự án trên Hacker News Dự
án bắt đầu nhận được sức hút, đặc biệt là trong cộng đồng Ruby,
với GitHub và Instagram là một trong những công ty đầu tiên áp dụng
nó
1.1.2 Định nghĩa In-memory database
Không như các DBMS khác lưu trữ dữ liệu trên đĩa cứng, Redis lưu trữ dữ liệu trên RAM và thao tác đọc/ghi trên RAM nhanh hơn nhiều so với trên ổ cứng
Tuy nhiên, khi lưu trữ trên RAM thì nhanh thật nhưng lại gặp 1 vấn đề là bị mất điện thì dữ liệu cũng mất tiêu Để ngăn chặn việc mất dữ liệu xảy ra, có một mô-đun được tích hợp sẵn để ghi trạng thái trong bộ nhớ vào file trên đĩa trong những trường hợp nhất định Các file này được tải lại khi khởi động lại redis Vì vậy, dữ liệu sẽ không bị mất Ngoài ra, để tăng tính sẵn sàng và khả năng chịu lỗi của hệ thống Redis có thể cấu hình theo dạng Cluster với
kỹ thuật Master-Slave giúp hệ thống redis luôn sẵn sàng đáp ứng sao lưu dữ liệu trên đĩa cứng và phục hồi dữ liệu khi gặp sự cố
Trang 6Trang 5
1.2 Kiến trúc của Redis
Kiến trúc Redis chứa hai tiến trình chính: Redis client và Redis
Server
Hình 1.2 Kiến trúc của redis
Máy khách và máy chủ Redis có thể nằm trong cùng một máy tính hoặc trong hai máy tính khác nhau
Máy chủ Redis có nhiệm vụ lưu trữ dữ liệu trong bộ nhớ Nó xử lý tất cả các loại quản lý và tạo thành phần chính của kiến trúc Máy khách Redis có thể là máy khách bảng điều khiển Redis hoặc API Redis của bất kỳ ngôn ngữ lập trình nào khác
1.3 Toàn vẹn dữ liệu
1.3.1 Khái niệm toàn vẹn dữ liệu
Toàn vẹn dữ liệu hay data persistence liên quan đến việc đảm bảo
dữ liệu vẫn có thể tồn tại kể cả khi ứng dụng ngưng hoạt động và
Trang 7 Những lợi ích của việc lưu trữ dữ liệu ở bộ nhớ phụ:
Đảm bảo toàn vẹn dữ liệu khi có sự cố xảy ra cũng như tái tạo lại dataset khi khởi động lại server
Gửi dữ liệu đến các slave server, phục vụ cho tính năng replication
1.3.2 Những cơ chế Redis sử dụng để sao chép dữ liệu từ bộ nhớ chính
Snapshotting (RDB) được mô tả là việc lưu tập dữ liệu trên đĩa trong tệp nhị phân dump.rdb (RDB) Điều này bao gồm
Trang 8Trang 7
việc sử dụng snapshots để lưu cấu hình, cấu trúc và dữ liệu để phục hồi hệ thống bị lỗi
- Ưu điểm
o Sử dụng RDB nhỏ gọn và do đó cho phép lưu trữ nhiều
dữ liệu hơn Do đó, đây là một lựa chọn tuyệt vời khi bạn cần lưu trữ bộ dữ liệu của mình
o Dễ dàng thực hiện các biện pháp khôi phục bằng cách sử dụng tệp RDB
o So với các phương pháp khác như AOF, RDB nhanh hơn khi tải các tập dữ liệu lớn
- Nhược điểm
o Redis thường tạo các snapshots trong những khoảng thời gian nhất định như sau mỗi năm phút, mười phút, hay ba mươi phút Nên trong trường hợp Redis ngừng hoạt động thì sẽ bị mất dữ liệu sau lần snapshot gần nhất
o RDB cần fork () thường xuyên để snapshot trên đĩa bằng quy trình con fork () có thể tốn thời gian nếu tập dữ liệu lớn và có thể dẫn đến việc Redis ngừng phục vụ client trong vài phần nghìn giây hoặc thậm chí trong một giây nếu tập dữ liệu rất lớn và hiệu suất CPU không lớn
AOF (Append Only File)
- Cách thức làm việc
Trang 9Trang 8
Redis server ghi lại mọi thao tác ghi mà nó nhận được vào file AOF trên ổ đĩa Các thao tác này sẽ được thực thi khi khởi động lại máy chủ, tạo lại tập dữ liệu ban đầu
- Ưu điểm
o Nó phù hợp hơn nhiều cho RDB trong trường hợp sao lưu khẩn cấp AOF sẽ tiếp tục thực hiện sao lưu nhật ký trong nền khi nó quá lớn
o Vì phương pháp AOF chỉ bổ sung các thao tác mới được thực hiện nên có rất ít khả năng bị hỏng dữ liệu hoặc mất mác dữ liệu
o Tệp AOF dễ hiểu và dễ xuất vì nó chỉ ghi lại các thao tác được thực thi trên máy chủ một cách tuần tự
- Nhược điểm
o File AOF thường lớn hơn file RDB với cùng 1 dataset
o AOF có thể chậm hơn RDB tùy theo cách thức thiết lập khoảng thời gian cho việc sao lưu vào ổ cứng Tuy nhiên, nếu thiết lập log 1 giây 1 lần có thể đạt hiệu năng tương đương với RDB
1.4 Khả năng đáp ứng cao và mở rộng
1.4.1 Sao chép cơ sở dữ liệu
Redis dùng cơ chế sao chép master/slave để sao chép cơ sở dữ liệu nhằm cải thiện hiệu suất và khả năng dự phòng
Trang 10Trang 9
Hệ thống có một cơ sở dữ liệu tổng thể hoạt động như một giao diện với thế giới bên ngoài, xử lý tất cả các yêu cầu đọc và ghi bên ngoài
Hình 1.3 Cơ chế sao chép cơ sở dữ liệu
Trang 12Trang 11
Hình 1.5 Cơ chế cluster
1.5 Ưu và nhược điểm của Redis
Ưu điểm
Hiệu quả Tất cả dữ liệu Redis được lưu trữ trong bộ nhớ, cho phép
truy cập dữ liệu có độ trễ thấp và thông lượng cao Không giống như
cơ sở dữ liệu truyền thống, lưu trữ dữ liệu trong bộ nhớ không yêu cầu quyền truy cập vào đĩa, giảm độ trễ của động cơ xuống micro giây Do đó, việc lưu trữ dữ liệu trong bộ nhớ có thể hỗ trợ các hoạt động quy mô lớn hơn với thời gian phản hồi nhanh hơn Ưu điểm này mang lại hiệu suất cực nhanh với thời gian hoạt động đọc và ghi
Trang 13Trang 12
trung bình dưới một phần nghìn giây và hỗ trợ hàng triệu thao tác mỗi giây
Cấu trúc dữ liệu linh hoạt: Trong khi các kho dữ liệu khóa-giá trị
khác cung cấp cấu trúc dữ liệu hạn chế, Redis cung cấp nhiều cấu trúc dữ liệu khác nhau để đáp ứng nhu cầu ứng dụng như String, List ,Bitmap, Hash,
Đơn giản để sử dụng Redis cho phép bạn viết mã phức tạp truyền
thống với ít dòng đơn giản hơn Với Redis, bạn có thể lưu trữ, truy cập và sử dụng dữ liệu ứng dụng của mình chỉ với một vài dòng mã
Sự khác biệt là các nhà phát triển sử dụng Redis sử dụng cấu trúc lệnh đơn giản hơn là ngôn ngữ truy vấn của cơ sở dữ liệu truyền thống
Nhân rộng và bền bỉ Redis sử dụng kiến trúc bản sao chính và hỗ
trợ sao chép không đồng bộ, có thể sao chép dữ liệu sang nhiều máy chủ bản sao Điều này không chỉ cải thiện hiệu suất đọc (vì các yêu cầu có thể được phân chia trên nhiều máy chủ) mà còn cho phép khôi phục nhanh chóng trong trường hợp máy chủ chính bị lỗi Về tính bền bỉ, Redis hỗ trợ sao lưu điểm trong thời gian (sao chép bộ
dữ liệu Redis vào đĩa)
Tính khả dụng và khả năng mở rộng cao Redis cung cấp kiến trúc
bản sao chính trong cấu trúc liên kết chính hoặc cụm một nút Điều này cho phép bạn xây dựng các giải pháp có tính khả dụng cao mang lại hiệu suất và độ tin cậy nhất quán
Mã nguồn mở Redis là một dự án mã nguồn mở được hỗ trợ bởi một
cộng đồng sôi động
Trang 14 Caching: Được sử dụng để làm bộ nhớ đệm và tạo ra được tốc độ ghi
nhanh có thể chia sẻ được nhiều dữ liệu nằm giữa các ứng dụng hoặc làm database trong khoảng thời gian tạm thời ngoài ra, Redis còn có thể sử dụng để có thể làm Full Page Cache dành cho website Nhờ tính nhất quán bên dù bạn có restart Redis thì người sử dụng sẽ không cảm nhận được việc chậm khi tải trang
Counter: Được ứng dụng để làm bộ đếm Nhờ vào những thuộc tính
tăng giảm thông số nhanh chóng nên các dữ liệu được lưu trữ trên RAM, sets và sorted sets đều được sử dụng phổ biến để có thể thực hiện đếm lượt view cho một website và các bảng xếp hạng ở trong game Redis còn hỗ trợ thread safe nên có thể thực hiện được quá trình đồng bộ dữ liệu giữa các request
Publish/Suscribe (Pub/Sub): Có thể thực hiện tạo kênh, chia sẻ các
dữ liệu Redis sở hữu tính năng có thể hỗ trợ tạo ra các channel để người sử dụng có thể trao đổi dữ liệu giữa publisher và subscriber tương tự như một channel trong Socket Cluster hoặc các topic trong Apache Kafka Ví dụ: Pub/Sub thường được dùng để có thể theo dõi được các kết nối bên trong mạng xã hội cũng như các hệ thống chat khác
Trang 15Trang 14
Queues: Tạo được hàng đợi để có thể xử lý lần lượt được các request
Redis thường cho phép bạn có thể lưu trữ theo list cũng như cung cấp nhiều thao tác với hầu hết các phần tử bên trong list Chính vì vậy, nó còn được sử dụng và xem như một message queue
Chương 2 – Redis vs Microsoft SQL Server 2.1 Sơ lược về hệ quản trị cơ sở dữ liệu Microsoft SQL Server
Hình 2.1 Logo Microsoft SQL Server
2.1.1 SQL Server là gì?
SQL Server hay còn gọi là Microsoft SQL Server, viết tắt là MS SQL Server Đây là một phần mềm được phát triển bởi Microsoft dùng để lưu trữ dữ liệu dựa trên chuẩn RDBMS, và nó cũng là một hệ quản trị cơ
sở dữ liệu quan hệ đối tượng (ORDBMS)
SQL Server cung cấp đầy đủ công cụ để quản lý, từ giao diện GUI cho đến việc sử dụng ngôn ngữ truy vấn SQL Ngoài ra điểm mạnh của nó
Trang 16Trang 15
là Microsoft có khá nhiền nền tảng kết hợp hoàn hảo với SQL Server như ASP.NET, C# xây dựng Winform, bởi vì nó hoạt động hoàn toàn độc lập
2.1.2 Ưu và nhược điểm của SQL Server
Ưu điểm:
Có thể cài nhiều phiên bản MS SQL khác nhau trên cùng một máy tính
Duy trì riêng biệt các môi trường sản xuất, phát triển, thử nghiệm
Giảm thiểu các vấn đề tạm thời trên cơ sở dữ liệu
Tách biệt các đặc quyền bảo mật
Duy trì máy chủ dự phòng
Nhược điểm:
Cần thanh toán phí license để chạy nhiều CSDL (database)
2.2 So sánh Redis với Microsoft SQL Server
2.2.1 Hệ thống
Trang 17Trang 16
hệ được phát triển bởi tập đoàn Microsoft
Hệ quản trị CSDL memory được phát triển và quản lí bởi đội ngũ của redis
in-Mô hình chính Mô hình quan hệ Mô hình khóa-giá trị
Mô hình phụ Tài liệu, đồ thị Tài liệu, đồ thị, chuỗi
Nơi lưu trữ dữ liệu
2.2.2 Thời gian thực hiện các câu truy vấn
Xây dựng dữ liệu mẫu
CSDL gồm bảng customer (khóa chính: CustomerID)
Trang 18 Thời gian thực hiện truy vấn của cơ sở dữ liệu
+ Truy vấn Select: Kết quả được thể hiện như bảng 1
Trang 19Bảng 1 cho thấy dữ liệu càng lớn thì thời gian thực hiện câu truy vấn
Select của CSDL SQL Server lớn hơn nhiều lần so với CSDL Redis
+ Truy vấn Insert: Kết quả được hiển thị như bảng 2
Bảng 2 Kết quả thời gian truy vấn
Bảng 2 cho thấy được thời gian thực hiện câu truy vấn Insert của CSDL
SQL Server lớn hơn nhiều lần so với CSDL Redis
+ Truy vấn Delete: Kết quả được hiển thị như bảng 3
0 10 20 30 40 50 60
Biểu đồ truy vấn Select
0 500 1000 1500 2000 2500 3000 3500 4000
Biểu đồ truy vấn Insert
Trang 20Bảng 3 cho ta thấy được thời gian thực hiện câu truy vấn Delete của
CSDL SQL Server lớn hơn nhiều lần so với CSDL Redis khi dữ liệu bản ghi càng nhiều
+ Truy vấn Update: Kết quả được hiển thị như bảng 4
Bảng 4 Kết quả thời gian truy vấn
Bảng 4 cho ta thấy được việc thực hiện câu truy vấn Update của CSDL
SQL Server cũng mất thời gian hơn so với CSDL Redis
0 50 100 150 200 250 300 350 400 450
Biểu đồ truy vấn Delete
0 1000 2000 3000 4000
Biểu đồ truy vấn Update
Trang 21Trang 20
Tóm lại, thời gian truy vấn của CSDL SQL Server tỏ ra khá chậm so với
CSDL Redis khi dữ liệu ngày càng lớn Với xu hướng hiện nay, đòi hỏi tốc độ truy vấn dữ liệu phải nhanh chóng thì Redis là một giải pháp tốt cho các nhà phát triển phần mềm
Trang 22Trang 21
Tài liệu tham khảo
[1] https://viblo.asia/p/tim-hieu-ve-redis-LzD5dXEW5jY
[2] redis-as-a-primary-database-2c55
https://dev.to/techworld_with_nana/redis-the-what-why-and-how-to-use-[3] http://qnimate.com/overview-of-redis-architecture/
[4]
https://www.eginnovations.com/documentation/Redis/Redis-Architecture.htm
[5] uu-hieuxuat
https://levanphu.info/redis-la-gi-tai-sao-can-hieu-va-su-dung-redis-de-toi-[6] Nguyễn GiaTuấnAnh (2016), Bài giảng môn Cơ sở dữ liệu nâng cao, Trường Đại học Công nghệ Thông tin
[7] "Redis." Internet: http://redis.io