Tải bản đầy đủ (.pdf) (4 trang)

solidDB và những bí mật của tốc độ ppt

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (120.26 KB, 4 trang )

solidDB và những bí mật của tốc độ
Là cơ sở dữ liệu quan hệ trong bộ nhớ, solidDB của IBM được sử dụng trên toàn thế giới vì nó
có khả năng cung cấp tốc độ và khả năng sẵn sàng vô cùng cao. Đúng như tên gọi hàm ý, một cơ
sở dữ liệu trong bộ nhớ nằm hoàn toàn trong bộ nhớ chính chứ không phải trên ổ đĩa, làm cho
việc truy cập dữ liệu trở nên nhanh hơn một bậc so với cơ sở dữ liệu thông thường trên ổ đĩa.
Một phần của bước nhảy vọt đó là do thực tế rằng RAM cung cấp truy cập dữ liệu nhanh hơn so
với các ổ đĩa cứng.
Nhưng solidDB cũng có cấu trúc dữ liệu và phương pháp truy cập được thiết kế đặc biệt để lưu
trữ, tìm kiếm, và xử lý dữ liệu trong bộ nhớ chính. Kết quả là, nó xử lý tốt hơn các cơ sở dữ liệu
dựa trên ổ đĩa bình thường ngay cả khi các cơ sở dữ liệu này có dữ liệu được lưu trữ sẵn hoàn
toàn trong bộ nhớ. Một số cơ sở dữ liệu có độ trễ thấp, nhưng không thể xử lý một số lượng lớn
các giao dịch hoặc các phiên đồng thời. solidDB của IBM cung cấp thông lượng được đo trong
phạm vi hàng chục đến hàng trăm hàng ngàn giao dịch mỗi giây, trong khi liên tục đạt được thời
gian đáp ứng (hay độ trễ) được đo bằng micro giây. Bài viết này khám phá sự khác biệt về cấu
trúc giữa các cơ sở dữ liệu trong bộ nhớ và dựa trên ổ đĩa, và cách solidDB hoạt động như thế
nào để cung cấp tốc độ cực cao.
Đôi dòng về lịch sử của hệ quản trị cơ sở dữ liệu quan hệ (RDBMS)
Khi các hệ thống quản lý dữ liệu đầu tiên xuất hiện vào những năm 1960, thì ổ đĩa là nơi duy
nhất để lưu trữ và truy cập một lượng lớn dữ liệu trong một khoảng thời gian hợp lý. Các nhà
thiết kế RDBMS tập trung vào việc tối ưu hóa vào/ra và cố gắng để dóng các mẫu truy cập dữ
liệu theo cấu trúc khối mà các ổ đĩa áp đặt. Chiến lược thiết kế thường tập trung vào bộ nhớ đệm
chia sẻ chung, nơi các khối dữ liệu được lưu giữ để tái sử dụng, trong khi các tiến bộ về phương
thức truy cập tạo ra các giải pháp, chẳng hạn như giải pháp cây B+ nổi tiếng, là chỉ mục được tối
ưu hóa theo khối.
Trong khi đó, các chiến thuật tối ưu hóa truy vấn tập trung vào giảm thiểu việc tìm nạp trang bất
cứ nơi nào có thể. Trong trận chiến khốc liệt vì hiệu năng, hoạt động vào/ra đĩa thường là kẻ thù
nguy hiểm nhất, và hiệu quả xử lý phải hy sinh để tránh truy cập ổ đĩa. Ví dụ: Với kích thước
trang điển hình là 8 KB hoặc 16 KB, việc xử lý trong trang vốn có tính tuần tự và kém hiệu quả
về CPU so với truy cập dữ liệu ngẫu nhiên. Tuy nhiên, nó vẫn còn là một cách phổ biến để giảm
truy cập ổ đĩa.
Khi kỷ nguyên bộ nhớ kích thước lớn xuất hiện, nhiều nhà quản trị cơ sở dữ liệu tăng vùng nhớ


đệm của mình cho đến khi chúng đủ lớn để chứa toàn bộ cơ sở dữ liệu, do đó tạo ra khái niệm cơ
sở dữ liệu được lưu trữ sẵn hoàn toàn trong bộ nhớ. Nhưng trong vùng đệm RAM, các hệ thống
quản lý cơ sở dữ liệu vẫn còn là con tin của mọi sự kém hiệu quả có tính cấu trúc của chiến lược
vào/ra định hướng theo khối, được tạo ra để làm việc với các ổ đĩa cứng.
Về đầu trang
Di chuyển qua các khối
Một trong những sự khác biệt đáng chú ý nhất của hệ thống cơ sở dữ liệu trong bộ nhớ là sự
vắng mặt các cấu trúc khối dữ liệu lớn. solidDB của IBM đã loại bỏ nó. Các hàng bảng và các
nút chỉ mục được lưu trữ độc lập trong bộ nhớ, do đó có thể thêm dữ liệu vào mà không cần phải
tổ chức lại cấu trúc khối lớn. Cơ sở dữ liệu trong bộ nhớ cũng loại bỏ việc sử dụng các chỉ mục
dạng khối lớn, đôi khi được gọi là rừng cây rậm rạp, mà nghiêng về các cấu trúc mảnh mai, ở
đây số mức chỉ mục được tăng lên và kích thước nút chỉ mục được giữ ở mức tối thiểu để tránh
việc xử lý nội tại nút (in-node) rất tốn kém. Chiến lược chỉ mục cơ sở dữ liệu trong bộ nhớ phổ
biến nhất được gọi là cây T. Thay vào đó, solidDB của IBM sử dụng chỉ mục gọi là trie (hoặc
cây tiền tố), ban đầu được tạo ra để tìm kiếm văn bản, nhưng hóa ra nó rất hoàn hảo cho việc lập
chỉ mục trong bộ nhớ. Một trie (tên gọi xuất phát từ từ retrival – truy lục) được tạo thành từ một
loạt các nút, ở đây các nút con của một nút cho trước có cùng chung một tiền tố là chuỗi ký tự
kết hợp với nút đó. Ví dụ: Nếu từ "dog" – con chó đã được lưu trữ trong một trie như một nút, nó
sẽ đi xuống từ nút có chứa từ "do", nút này sẽ đi xuống từ nút có chứa từ "d."
Các chỉ mục trie tăng hiệu năng bằng cách giảm sự cần thiết phải so sánh giá trị khóa và loại bỏ
trên thực tế việc xử lý nội tại một nút. Chỉ mục này có chứa một nút là một mảng nhỏ các con trỏ
đến mức thấp hơn. Thay vì sử dụng toàn bộ giá trị khóa để đi qua cây bằng cách so sánh, giá trị
khóa được cắt thành nhiều phần nhỏ kích thước một vài bit. Mỗi phần là một chỉ mục trực tiếp
cho mảng con trỏ của mức tương ứng: phần đầu tiên bên trái dành cho các nút thuộc mức thứ
nhất, phần thứ hai dành cho các nút của mức thứ hai, v.v Vì vậy, việc tìm kiếm toàn bộ có thể
được thực hiện chỉ với một vài truy lục phần tử mảng. Ngoài ra, mỗi nút chỉ mục là một khối dữ
liệu nhỏ (khoảng 256 byte trong solidDB), rất có lợi bởi vì các khối phù hợp một cách chính xác
với bộ nhớ nhanh (cache) của các vi xử lý hiện đại, tăng hiệu quả xử lý bằng cách thúc đẩy việc
sử dụng bộ nhớ nhanh hiệu quả. Mảng dữ liệu nhỏ như vậy là cấu trúc dữ liệu hiệu quả nhất
trong các bộ xử lý hiện đại, và solidDB sử dụng chúng thường xuyên để tối đa hóa hiệu năng.

Về đầu trang
Điểm đánh dấu (checkpoint) và độ bền: Con đường dẫn đến tốc độ
solidDB của IBM sử dụng một số kỹ thuật bổ sung để tăng tốc độ xử lý cơ sở dữ liệu, bắt đầu với
một phương pháp đã được cấp bằng sáng chế là tạo điểm đánh dấu, sinh ra điểm đánh dấu là một
ảnh chụp nhanh nhất quán mà không ngăn trở việc xử lý giao dịch bình thường. Một điểm đánh
dấu ảnh chụp nhanh nhất quán cho phép cơ sở dữ liệu chỉ khởi động lại kể từ điểm đánh dấu đó.
Các sản phẩm cơ sở dữ liệu khác thường không cho phép làm việc này. Chúng phải sử dụng các
tệp tin ghi nhật ký các giao dịch để tính toán lại trạng thái nhất quán (solidDB cho phép tắt hoạt
động ghi nhật ký giao dịch nếu muốn). Giải pháp của solidDB có thể thực hiện được nhờ khả
năng cấp phát vùng nhớ cho các ảnh của hàng và các ảnh bóng râm (shadow) của hàng (các
phiên bản khác của cùng một hàng) mà không sử dụng các cấu trúc khối kém hiệu quả. Chỉ có
những ảnh tương ứng với ảnh chụp nhanh nhất quán mới được ghi vào tệp điểm đánh dấu, và các
bóng râm của hàng cho phép các giao dịch hiện đang thi hành chạy không bị hạn chế gì trong
quá trình tạo điểm đánh dấu.


Hơn nữa, trình tối ưu hóa truy vấn của solidDB ghi nhận bản chất khác của các bảng trong bộ
nhớ bằng cách ước tính chi phí chạy thi hành theo cách mới. Tối ưu hóa truy vấn tập trung vào
tuyến thi hành giới hạn trong CPU (CPUbound), trong khi cơ sở dữ liệu lưu trữ hoàn toàn trong
bộ nhớ nhanh sẽ vẫn lo lắng với việc tối ưu hóa tìm nạp các trang cho bộ lưu trữ thứ cấp, mà bây
giờ không còn là vấn đề nữa.
Một kỹ thuật khác mà solidDB của IBM sử dụng là nới lỏng độ vững bền của giao dịch. Trong
quá khứ, các cơ sở dữ liệu đã luôn hỗ trợ một độ vững bền hoàn toàn, đảm bảo rằng các dữ liệu
được ghi lâu bền ngay khi giao dịch được giao kết. Vấn đề là để có độ vững bền hoàn toàn thì
phải thực hiện việc ghi nhật ký đồng bộ, và do đó nó tiêu thụ tài nguyên và làm giảm thời gian
đáp ứng. Trong nhiều trường hợp, chấp nhận độ vững bền thấp hơn cho một số công việc để đổi
lấy thời gian phản ứng nhanh hơn là một sự đánh đổi hoàn toàn chấp nhận được. Với solidDB,
độ vững bền giao dịch có thể được nới lỏng tại thời gian chạy cho một phiên giao dịch cơ sở dữ
liệu đã cho hoặc thậm chí chỉ với một giao dịch duy nhất.
IBM solidDB cũng làm tăng hiệu năng của cơ sở dữ liệu bằng cách giúp các nhà phát triển tránh

các chuyển bối cảnh trong quá trình tương tác khách/chủ. Bằng cách sử dụng trình điều khiển
truy cập cơ sở dữ liệu được cung cấp với solidDB có chứa mã thực hiện truy vấn đầy đủ, một nhà
phát triển có thể liên kết có hiệu quả các ứng dụng với mã của hệ thống quản trị cơ sở dữ liệu và
sử dụng bộ nhớ chia sẻ để chia sẻ dữ liệu giữa các ứng dụng.
Khi tất cả các biện pháp này được áp dụng và tải ứng dụng thuộc kiểu phải chịu những hoạt động
vào/ra đáng kể trong một cơ sở dữ liệu truyền thống, thì bằng cách sử dụng solidDB thông lượng
có thể được tăng lên hẳn một mức mới. Hơn nữa, thậm chí việc cải thiện thời gian đáp ứng còn
ấn tượng hơn: độ trễ đối với các giao dịch truy vấn thường là từ 10 đến 20 micro giây và độ trễ
đối với các giao dịch cập nhật thường ít hơn 100 micro giây. Trong cơ sở dữ liệu trên ổ đĩa
truyền thống, thời gian tương ứng thường được đo bằng mili giây.
Về đầu trang
Tốc độ và sức mạnh của solidDB
Ngoài những lợi thế về hiệu năng, solidDB cũng cung cấp một số lợi ích bổ sung. Nó kết hợp cơ
sở dữ liệu trong bộ nhớ giao dịch đầy đủ với cơ sở dữ liệu trên ổ đĩa mạnh mẽ thành một giải
pháp nhỏ gọn, với khả năng lưu trữ một phần của cùng một cơ sở dữ liệu trong bộ nhớ và một
phần khác trên ổ đĩa một cách trong suốt với người dùng. Và solidDB của IBM là sản phẩm duy
nhất trên thị trường có thể được triển khai như một cache tốc độ cao ở mặt trước hầu hết bất kỳ
cơ sở dữ liệu quan hệ trên ổ đĩa nào khác (xem hình 1). Cuối cùng, solidDB cung cấp khả năng
sẵn sàng vô cùng cao, vượt quá mức phần trăm điển hình với năm số chín, đến mức sáu số chín
(99,9999%) thời gian hoạt động. Nói cách khác, nếu bạn đang tìm kiếm tốc độ cực cao, bạn sẽ
tìm thấy nó, nhưng đó chỉ là sự khởi đầu đối với solidDB của IBM.

×