



















Preview text:
IE103 Quản lý thông tin 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 1
IE103 Quản lý thông tin
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 2
IE103 Quản lý thông tin
CHƯƠNG 1 – TỔNG QUAN VỀ REDIS
1.1 Hệ quản trị cơ sở dữ liệu redis 1.1.1 Redis là gì?
Redis là CSDL dạng khóa - giá trị (key-value) , được cung cấp dưới
dạng mã nguồn mở. Dữ liệu của Redis được lưu dưới dạng cặp khóa - giá trị.
Giá trị được truy xuất thông qua khóa. Có thể sử dụng như một database, bộ
nhớ cache hay một message broker.
Ư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 3
IE103 Quản lý thông tin
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 4
IE103 Quản lý thông tin
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 5
IE103 Quản lý thông tin
có thể tải lên để xử lý tiếp khi hệ thống hoạt động trở lại sau sự cố.
Vấn đề này có ý nghĩa quan trọng đối với Redis vì như đã nêu ở
trên, Redis lưu trữ dữ liệu trên RAM thay vì bộ nhớ ngoài nên khi
xảy ra dữ cố chẳng hạn như server bị tắt nguồn thì toàn bộ dữ
liệu hiện RAM sẽ biến mất. Do đó, để đảm bảo dữ liệu không
hoàn toàn bị mất đi, Redis đã áp dụng thêm những cơ chế để lưu
trữ dữ liệu trên bộ nhớ phụ.
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 sang bộ nhớ phụ Snapshotting (RDB) - Cách thức làm việc
RDB (Redis Database Backup File) là định dạng tệp nhị
phân được sử dụng để chụp và lưu trữ những snapshots của tập dữ liệu.
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 6
IE103 Quản lý thông tin
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 7
IE103 Quản lý thông tin
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 8
IE103 Quản lý thông tin
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 Lợi ích:
o Cải thiện hiệu suất bằng cách mở rộng khối lượng công việc
sang nhiều cơ sở dữ liệu phụ.
o Tạo bản sao lưu từ cơ sở dữ liệu phụ mà không làm gián
đoạn cơ sở dữ liệu chính.
1.4.2 Cơ chế sentinel
Redis Sentinel dùng để giám sát các node trong cụm Redis.
Khi master không thể phục vụ, Sentinel đảm nhiệm nhiệm vụ
giám sát sẽ tự lựa chọn một master mới trong các slaves. Cơ chế Trang 9
IE103 Quản lý thông tin
này rất hữu ích khi không phải login vào server, khắc phục thủ
công bằng tay bằng cách nâng 1 slave bất kỳ lên làm master.
Hình 1.4 Cơ chế sentinel
1.4.2 Cơ chế cluster
Redis Cluster giúp Redis hoạt động theo mô hình phân tán,
chia một instance thành nhiều cluster. Trang 10
IE103 Quản lý thông tin
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 11
IE103 Quản lý thông tin
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 12
IE103 Quản lý thông tin Nhược điểm
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.
1.6 Ứng dụng của Redis
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 13
IE103 Quản lý thông tin
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 14
IE103 Quản lý thông tin
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 15
IE103 Quản lý thông tin Microsoft SQL Server Redis Mô tả
Hệ quản trị CSDL quan Hệ quản trị CSDL in-
hệ được phát triển bởi memory được phát tập đoàn Microsoft
triển và quản lí bởi đội ngũ của redis 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 thời gian
Hệ điều hành hỗ trợ Linux, Windows BSD, Linux, OS X, Windows
Ngôn ngữ lập trình hỗ C#, C++, Java, R, Ruby, C, C#, Crystal, Haskell, trợ Go, Delphi, … Javascript, Lua, Java, …
Nơi lưu trữ dữ liệu Bô nhớ phụ Bộ nhớ chinh chính Ngôn ngữ truy vấn Ngôn ngữ truy vấn có
Tất cả yêu cầu được cấu trúc SQL thực hiện thông qua lệnh
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 16
IE103 Quản lý thông tin
Hình 2.2 Lược đồ cơ sở dữ liệu
Phần mềm và cấu hình máy tính sử dụng - Phần mềm:
+ Ngôn ngữ lập trình: Javascript và Nodejs phiên bản 16.14.2
+ CSDL SQL Server 2019 Express + CSDL Redis phiên bản 7.0
- Cấu hình máy tính: CPU Intel Core i5-1035G1, tốc độ 1.00GHz,
RAM 8GB, HDD 312GB, hệ điều hành Windows 10-64bit.
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 17
IE103 Quản lý thông tin
Bảng 1. Kết quả thời gian truy vấn
Biểu đồ truy vấn Select (đơn vị: giây) 60 Bản ghi SQL Server Redis 50 (1k=1000) 40 10K 0,55 0,8 x10-6 30 100K 1,32 0,85 x10-6 20 200K 15,5 3,4 x10-6 10 500K 20,2 18 x10-6 0 10K 100K 200K 500K 1000K 1000K 52.39 86 x10-6 SQL Server Redis
Bả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
Biểu đồ truy vấn Insert (đơn vị: giây) 4000 Bản ghi SQL Server Redis 3500 (1k=1000) 3000 2500 10K 39,9 0,87 x10-6 2000 100K 87,1 8,7 x10-6 1500 1000 200K 180,4 21,5 x10-6 500 500K 2210 47,3 x10-6 0 10K 100K 200K 500K 1000K 1000K 3622 91,8 x10-6 SQL Server Redis
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 Trang 18
IE103 Quản lý thông tin
Bảng 3. Kết quả thời gian truy vấn
Biểu đồ truy vấn Delete (đơn vị: giây) 450 Bản ghi SQL Redis 400 350 (1k=1000) Server 300 10K 11,76 0,9 x10-6 250 200 100K 129,4 7,9 x10-6 150 100 200K 187,3 8,9 x10-6 50 500K 254,1 12,7 x10-6 0 10K 100K 200K 500K 1000K 415,23 15,7 x10-6 SQL Server Redis
Bả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
Biểu đồ truy vấn (đơn vị: giây) Update Bản ghi SQL Server Redis (1k=1000) 4000 10K 13 0,8 x10-6 3000 100K 207,65 8,3 x10-6 2000 200K 700,8 28,3 x10-6 500K 2105,7 68,3 x10-6 1000 10K 3605,1 83,3 x10-6 0 10K 100K 200K 500K SQL Server Redis
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. Trang 19
IE103 Quản lý thông tin
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 20