Storage engine là gì?

Một phần của tài liệu Nghiên cứu phương pháp xây dựng Storage Engine cho hệ quản trị cơ sở dữ liệu MySQL (Trang 26)

L ỜI CAM ĐOAN

2.1.Storage engine là gì?

Storage engine hay thực chất là các kiểu bảng là một khái niệm mới do MySQL

đưa ra. Trong khi phát triển các ứng dụng, MySQL cho phép lựa chọn cách thức

những bảng dữ liệu được lưu trữ dựa trên các storage engine phù hợp nhất với tình huống cụ thể. Thậm chí, MySQL còn cho phép người dùng có thể tự thiết kế storage

engine cho riêng mình và dễ dàng tra lắp vào hệ thống. Điều này tạo nên tính linh hoạt vượt trội cùng với tính độc đáo duy nhất có của MySQL.

Có rất nhiều lí do khi sử dụng storage engine, theo Arjen Lentz trong [9], lí do

Thứ nhất, do sự tiến hóa của công nghệ. Đối với người dùng, khi chỉnh sửa ứng

dụng, sẽ rất bất tiện nếu họ phải thực thi các công cụ chuyển đổi hoặc thậm chí kết xuất và nhập (import) toàn bộ dataset. Thay vào đó, nếu chỉ cần chỉnh sửa máy chủ (để

sửa lỗi và các tính năng khác mà không phải chuyển toàn bộ dữ liệu) sẽ tiết kiệm được nhiều thời gian, công sức và chi phí. Điều đó có nghĩa là máy chủ phải hỗ trợ nhiều định dạng tệp.

Thứ hai, Đối với những người phát triển máy chủ, việc thay đổi trong mã nguồn

có thể dẫn tới những yêu cầu thay đổi liên quan khác trong máy chủ, và hầu hết các mã mới luôn luôn có khả năng xảy ra lỗi. Do đó việc thay đổi mã nguồn phía dưới, để mở

rộng, không nên ảnh hưởng tới mã ở các lớp cao hơn, được gọi là trừu tượng.

Thứ ba, Các ứng dụng khác nhau có các yêu cầu khác nhau về lưu trữ dữ liệu,

và một vài yêu cầu thậm chí có thể xung đột với nhau. Các ứng dụng ngân hàng yêu cầu xử lí giao dịch an toàn cao hơn so với lưu lượng đăng nhập vào một website. Khi

đó, cần có sự cân bằng (trade-off) và lựa chọn quyết định. Không có công cụ nào phù hợp được với mọi ứng dụng và sẽ tốt hơn nếu một máy chủ có thể phục vụ hiệu quả

cho nhiều hơn một loại ứng dụng.

Thứ tư, về cơ bản phương tiện lưu trữ khác nhau đưa ra hướng tiếp cận khác

nhau. Một đĩa cứng khác hoàn toàn so với RAM. Dữ liệu lưu trữ trong một đĩa cứng

có thể chứa nhiều dữ liệu nhưng tốc độ đọc/ghi dữ liệu từ nó chậm hơn. Ngược lại,

RAM thì rất nhanh, nhưng lại giới hạn dung lượng. Một vài thuật toán tìm kiếm được

tối ưu cho RAM, các thuật toán khác được tối ưu cho lưu trữ dựa trên đĩa.

MySQL storage engine gồm một tập các cơ chế lưu trữ, truy cập, hỗ trợ giao tác, các cơ chế khóa, cách ly,… nhằm bổ sung các kiểu lưu trữ mới cho máy chủ MySQL, làm nhiệm vụ cầu nối giữa máy chủ MySQL với hệ thống tệp của hệ điều hành. Các storage engine có thể dễ dàng tra lắp vào trong MySQL thông qua một cơ chế đặc biệt

gọi là MySQL pluggable storage engine. Cơ chế này cho phép mọi storage engine đều

có thể tra lắp vào máy chủ sử dụng chung một giao diện chuẩn.

Khi sử dụng storage engine, ứng dụng không cần phải biết dữ liệu được lưu trữ như thế nào. MySQL sử dụng một storage engine mặc định cho các bảng mà nó tạo ra,

chẳng hạn như InnoDB cho các phiên bản 5.5.5 trở lên hoặc MyISAM cho các phiên bản cũ hơn. Do đó, nếu không có yêu cầu đặc biệt, thì không cần chỉ định storage

engine. Tuy nhiên, đối với các ứng dụng lớn hoặc có những yêu cầu truy cập đặc biệt,

cần có sự lựa chọn phù hợp. Một ứng dụng có thể sử dụng nhiều storage engine, bằng

các lựa chọn storage engine trên từng bảng. Thậm chí, các máy chủ cũng có thể

chuyển đổi các bảng giữa các định dạng khác nhau sử dụng một câu lệnh ALTER TABLE đơn giản.

Không chỉ đưa ra các storage engine đã được xây dựng sẵn, với cơ chế pluggable

một storage engine mới nhằm đáp ứng tốt nhất một nhu cầu đặc biệt nào đó của một ứng dụng cụ thể và tra lắp dễ dàng vào máy chủ. Điều đó tạo nên tính linh hoạt, mềm (adsbygoogle = window.adsbygoogle || []).push({});

dẻo tuyệt vời của MySQL.

Một storage engine là một thành phần trong máy chủ CSDL MySQL chịu trách

nhiệm thực hiện các phép toán dữ liệu vào/ra cho một CSDL cũng như là cho phép và

bắt buộc các tập tính năng nhất định phục vụ nhu cầu của một ứng dụng riêng. Khi sử

dụng storage engine, chỉ quan tâm tới các tính năng cần cho ứng dụng, do đó, chi phí

cho CSDL của hệ thống ít hơn, và kết quả cuối cùng là hiệu suất của hệ CSDL hiệu

quả và cao hơn.

Một phần của tài liệu Nghiên cứu phương pháp xây dựng Storage Engine cho hệ quản trị cơ sở dữ liệu MySQL (Trang 26)