NghiêncứuphươngphápxâydựngstorageenginechohệquảntrịsởliệuMySQL Nguyễn Thị Khuê Trường Đại học Công nghệ Chuyên ngành: Hệ thống thông tin; Mã số: 60 48 05 Cán hướng dẫn khoa học: Tiến sĩ Nguyễn Hải Châu Năm bảo vệ: 2012 Abstract Tìm hiểu kiến trúc pluggable storageengineMySQL Thơng qua việc tìm hiểu sốstorageengine điển hình số xu hướng lưu trữ liệu bật sốstorageengine tiêu biểu xu hướng (như lưu trữ liệu theo cột với InfoBright, NoSQL với HandlerSocket), đưa nhìn tổng quanMySQLstorageenginesố gợi ý lựa chọn storageengine phù hợp cho ứng dụng Tìm hiểu yếu tố cần cân nhắc xâydựngstorageengine lựa chọn cách tổ chức lưu trữ liệu, cách thức lưu đệm, hỗ trợ mục, hỗ trợ giao tác, yêu cầu đặc biệt,… cuối tới nghiêncứu tiến trình xâydựngstorageenginecho khả thi Keywords: Hệ thống thông tin; Hệquảntrịsở liệu; Khai thác liệu Content I MỞ ĐẦU Tổ chức lưu trữ truy cập tệp (hay thiết kế vật lí sở liệu) giải pháp hữu hiệu nhằm cải thiện hiệu suất thực thi hệ thống sởliệu tình cụ thể Tuy nhiên, chế truy cập tệp vô phong phú chế truy cập hiệu cho trường hợp Do đó, xâydựng chế truy cập tệp cho tình khác gói giải pháp riêng đem lại hiệu cao triển khai ứng dụng đáp ứng nhiều nhu cầu người dùng nhiều hồn cảnh khác Đó cách mà MySQL đưa sử dụng lớp pluggable storageenginecho phép lựa chọn xâydựng các chế truy cập tệp thông qua storageengine khác dễ dàng tra lắp với máy chủ II TỔNG QUAN VỀ MYSQL A HệquảntrịsởliệuMySQLMySQLhệquảntrịsởliệuquanhệ mã nguồn mở thuộc sở hữu MySQL AB MySQL phát triển ngơn ngữ C/C++, dựa theo mơ hình client – server, hỗ trợ đầy đủ câu lệnh SQL MySQL sử dụng chiến lược phát triển song song sử dụng chế cấp giấy phép kép – bên cạnh sản phẩm tuân thủ giấy phép nguồn mở GPL, MySQL cấp phép sản phẩm thương mại B Kiến trúc MySQLMySQL mô tả hệ thống phân lớp hệ thống với lớp như: lớp kết nối, lớp connection pool, lớp truy vấn đặc biệt lớp plugable storageengine tạo nên linh hoạt vượt trội choMySQL thông qua việc xâydựng cách thức tổ chức tổ chức lưu trữ liệu, truy cập tệp, lưu đệm, lập mục, … phù hợp với ứng dụng lớp cuối lớp truy cập tệp C Truy vấn liệuMySQL Giống hệquảntrịsởliệuquanhệ khác, trình truy vấn liệuMySQL diễn theo quy trình: u cầu người dùng đưa vào thơng qua giao diện SQL, sau phân tách, tối ưu, thực thi cuối kết gửi lại cho người dùng thông qua giao diện SQL Điểm đặc biệt trình truy vấn MySQL khả lưu đệm kết truy vấn đệm truy vấn Một sốhệquảntrịsởliệucó khả lưu lại kế hoạch thực thi nên máy chủ bỏ qua trình phân tách, tối ưu cho truy vấn thực thi trước MySQL tốt cho phép lưu trữ kết truy vấn thực MySQL lấy kết lưu đệm trước mà khơng cần chi phí thực lại q trình truy vấn Điều giúp cải thiện đáng kể hiệu suất truy vấn liệu Ngồi ra, MySQL sử dụng nhiều đệm như: đệm bảng, đệm ghi, đệm khóa, đệm quyền truy cập, đệm tên máy chủ để cải thiện hiệu suất thực thi truy vấn D Các đặc trưng MySQL Các đặc trưng MySQL gồm: Quản lí kết nối an ninh Các kết nối tới máy chủ thực luồng đơn máy chủ xác thực dựa tên người sử dụng, địa host ban đầu mật Quản lí đồng thời: MySQLquản lí đồng thời dựa việc sử dụng khóa: khóa chia sẻ (S) – cho phép nhiều máy khách đọc liệu thời điểm; khóa độc quyền (X) – chặn thao tác đọc tới liệuliệu ghi MySQL sử dụng hai chiến lược khóa quan trọng là: khóa mức bảng – khóa tồn bảng; khóa mức dòng – khóa dòng liệu Các chế khóa MySQL thường triển khai storage engine, nhiên, máy chủ MySQL sử dụng khóa mức bảng cho câu lệnh ALTER TABLE khơng liên quan tới storageengine Giao tác: MySQLcó khả hỗ trợ giao tác, nhiên giao tác triển khai mức storageengine mức server Các giao tác tuân thủ theo mơ hình ACID, hỗ trợ mức độ cách ly theo chuẩn SQL là: READ UNCOMMITED, READ COMMITED, REPEATABLE READ SERIALIZABLE (mặc định REPEATABLE READ), có khả phát phá vỡ deadlock đồng thời lưu biên giao tác để nâng cao hiệu thực giao tác Giao tác triển khai storageengine InnoDB, NDB cluster, … với chế khác Điều khiển đồng thời đa phiên bản: nhằm nâng cao hiệu khóa mức dòng, MySQL sử dụng chế điều khiển đồng thời đa phiên (Multiversion Concurrency Control – MVCC) để cải thiện tính đồng thời Hỗ trợ mục: chế mục triển khai storageengine theo cách thức khơng giống Tuy nhiên, cósố loại mục thường sử dụng như: mục B-Tree, mục băm, mục tiền tố, mục cụm, mục cụm mục gói III MYSQL PLUGGABLE STORAGEENGINE A Tổ chức liệu chế truy cập tệp Khi bắt đầu phát triển ứng dụngsởliệu bất kì, quan tâm tớ chế truy cập tệp hay gọi thiết kế vật lí sởliệu yếu tố khơng thể bỏ qua Nó yếu tố quan trọng góp phần cải thiện hiệu suất thực thi tồn hệ thống Mục đích chế truy cập tệp tối thiểu chi phí vào/ra hệsở liệu, tức cho phép tìm kiếm nhanh chóng hiệu liệu liên quan thông qua đường truy cập tối ưu nhất; tổ chức liệu đĩa cho chi phí vào/ra tìm kiếm liệu liên quan tối thiểu Hiện có nhiều kĩ thuật phổ biến như: phân đoạn liệu, tổ chức tệp, sử dụng chế lưu đệm lập mục B Storageengine gì? Storageengine hay thực chất kiểu bảng, khái niệm MySQL đưa để tập chế lưu trữ, truy cập, hỗ trợ giao tác, chế khóa, lập, lập mục, … Nhằm bổ sung kiểu lưu trữ cho máy chủ MySQL, làm nhiệm vụ cầu nối máy chủ MySQL với hệ thống tệp hệ điều hành Storageengine thành phần máy chủ sởliệuMySQL chịu trách nhiệm thực phép toán vào/ra liệuchosởliệucho phép bắt buộc tập tính định phục vụ nhu cầu ứng dụng riêng Các storageengine tra lắp dễ dàng vào máy chủ MySQL thông qua chế đặc biêt có MySQL, pluggable storageengine C Kiến trúc pluggable storageengine Là lớp kiến trúc máy chủ MySQL chịu trách nhiệm trừu tượng hóa lớp lưu trữ vật lí với lớp logic máy chủ cung cấp phép tốn vào/ra mức thấp cho server Nó cho phép lựa chọn storageenginecó phù hợp với ứng dụngxâydựngstorageengine thông qua giao diện quán đơn giản đồng thời cung cấp tập chuẩn quản lí dịch vụ hỗ trợ phổ biến chostorageengine phía Điều khiến chostorageengine tra lắp dễ dàng vào máy chủ sử dụng chung giao diện chuẩn Các storageengine cắm rút cắm vào máy chủ chạy cách dễ dàng D Một sốstorageengine điển hình MySQL hỗ trợ vài storageengine như: MyISAM: storge engine mặc định từ phiên 3.23, thường sử dụng ứng dụng kho liệu, thương mại điện tử, ứng dụng doanh nghiệp bảng MyISAM lưu trữ tệp: frm – tệp định nghĩa bảng, myd – chứa dòng liệu, myi: chứa mục bảng Nó sử dụng định dạng bảng là: cố định, động nén Các phương thức lập mục gồm: B-Tree, R-Tree (chỉ mục choliệu địa lí) đặc biệt fulltext - thiết kế riêng cho tìm kiếm fulltext MySQL MyISAM sử dụng khóa mức bảng với loại khóa: READ LOCAL, khóa chia sẻ (S) khóa độc quyền (X) MyISAM không hỗ trợ giao tác InnoDB: storageengine mặc định từ phiên 5.5.5, đánh giá storageenginecó độ tin cậy, tính đồng thời, tính sẵn sàng cao khả khôi phục sau cố InnoDB lưu trữ bảng mục không gian bảng (tablespace) riêng vài tệp vùng đĩa nguyên Nó sử dụng chế khóa mức dòng để tăng hiệu sử dụng tài nguyên, chế điều khiển đồng thời đa phiên MVCC để đạt tính đồng thời cao InnoDB sử dụng chế khóa pha: khóa ngầm định (khóa chia sẻ (S) khóa độc quyền (X)); khóa mục tiêu (khóa mục tiêu chia sẻ (IS) khóa mục tiêu độc quyền (IX)) – nhằm ra có dòng bị khóa khóa bảng InnoDB triển khai nhiều kiểu khóa như: khóa ghi (record lock), khóa khoảng trống (gap lock) khóa Next-key InnoDB storageengine hỗ trợ giao tác điển hình thiết kế theo mơ hình ACID với khả commit, rollback, khôi phục sau đổ vỡ để bảo vệ liệu người dùng, sởliệutrì trạng thái quán thời điểm giao tác cô lập với giao tác khác (mặc định REPEATABLE READ) với chiến lược khóa Next – key để ngăn chặn đọc ma (“phantom”) InnoDB tự động phát deadlock rollback lại nhiều giao tác để phá vỡ deadlock InnoDB sử dụng mục: mục cụm, mục phụ, mục băm; hỗ trợ khóa ngoại Foreign key để trì tồn vẹn liệu bảng liên quanDữliêu nén bảng để giảm kích thước sở liệu, giảm chi phí vào/ra, cải thiện thơng lượng đồng thời tăng độ hữu dụng CPU hay sử dụng đệm buffer pool để lưu trữ liệu mục nhớ làm tăng đáng kể tốc độ xử lí; dự đốn trước đọc để tìm nạp trước liệu; sử dụng đệm chèn; sử dụng chế checksum để cảnh báo liệu bị gián đoạn,… Đó cách thức mà InnoDB sử dụng để cải thiện đáng kể hiệu suất hệ thống Archieve: storageengine cung cấp khả lưu trữ lượng lớn liệu không lập mục không gian vừa đủ cực nhỏ Nó hỗ trợ phép tốn INSERT VÀ SELECT Dữliệu nén lại chúng chèn vào theo thuật toán lossless zlib giải nén đọc tới Federated: storageenginecho phép truy cập liệu từ sởliệuMySQL từ xa mà không sử dụng công nghệ nhân hay phân cụm Federated gồm thành phần: máy chủ từ xa (remote server) máy chủ địa phương (local server) Dữliệu không lưu trữ bảng máy địa phương mà chuyển tới từ sởliệu máy chủ từ xa NDB cluster: xâydựng dựa khái niệm không chia sẻ, sởliệu NDB chứa nút liệu, nút quảntrị nút SQL Mỗi nút liệu chứa đoạn (mảnh) liệu cụm Dữliệu nhân đảm bảo độ sẵn sàng cao, tính khơng dư thừa Các nút quảntrịcó nhiệm vụ giám sát điều khiển nút cụm Tất nút liệu kết nối với nhau, tất máy chủ MySQL kết nối với tất nút liệu độ trễ mạng thấp Memory (HEAP): tạo bảng có mục đích lưu trữ đặc biệt nhớ trong, thường sử dụng ứng dụng cần thưc thao tác quản lí phiên lưu đệm, cần lưu trữ liệu để truy cập nhanh với đỗ trễ thấp, ứng dụng đọc chủ yếu đọc Merge (MRG_MyISAM): tập bảng MyISAM giống hệt sử dụng bảng Merge sử dụngcó tập bảng MyISAM giống hệt có trước hay lưu trữ bảng lớn vượt qua giới hạn kích thước tệp hệ điều hành cần phân đoạn bảng Merge có ưu điểm như: quản lí tập bảng biên dễ dàng, tăng tốc độ, thực tìm kiếm hiệu nhiên việc đọc mục Merge chậm Blackhole: hoạt động giống “hố đen”, sử dụngliệu ném mà không lưu trữ, sử dụng trường hợp xác nhận cú pháp tệp dump đo chi phí lưu biên nhị phân (binary log) CSV: lưu trữ liệu tệp văn bản, sử dụng dấu phẩy để phân biệt giá trị Các bảng CSV đọc (thậm chí ghi) ứng dụng bảng tính Excel StarOffice Calc Ngoài storageengine mà MySQL đưa ra, có nhiều storageengine khác bên thứ ba phát triển Trong số đó, cósố kĩ thuật lưu trữ bật storageengine điển hình cho xu lưu trữ liệu theo cột, NoSQL Lưu trữ liệu theo cột storage engine: hệsởliệu truyền thống lưu liệu theo dòng Tuy nhiên, ứng dụng kho liệu, kinh doanh thông minh BI, khai phá liệu, phân tích liệu trực tuyến (OLAP),… mà khối lượng liệu khổng lồ quan tâm tới một vài thuộc tính định, hệ thống phải duyệt số lượng lớn liệu không cần thiết dẫn đến làm giảm hiệu suất thực thi hệ thống Giải pháp đưa lưu trữ liệu theo cột Khi đó, liệu tổ chức theo cột việc tìm kiếm liệu diễn thuộc tính cần quan tâm mà bỏ qua thuộc tính khơng cần khác giúp tiết kiệm đáng kể chi phí Tuy nhiên, việc tổ chức liệu theo cột vấn đề đơn giản Nhận thấy ưu điểm đó, số nhà phát triển đưa storageengine hỗ trợ lưu trữ theo cột làm choMySQLcó khả lưu trữ liệu theo cột đáp ứng yêu cầu ứng dụng kho liệu, kinh doanh thơng minh (BI), phân tích, khai phá liệu,… InfoBright, Kickfire, InfiniBD, … InfoBright: kết hợp sởliệu hướng cột với kiến trúc lưới tri thức để tối ưu hóa sởliệucho phân tích Nó có khả phân tích lượng lớn liệu web, liệu gọi, liệu thương mại, biên hệ thống, mạng với tốc độ tải thời gian truy vấn nhanh nhiều NoSQL storage engine: NoSQL có nghĩa khơng ràng buộc (Non – Relational) hay phổ biến có nghĩa không SQL (Not Only SQL), thuật ngữ chung chohệsởliệu không sử dụng mơ hình liệuquanhệ NoSQL đặc biệt nhấn mạnh đến mơ hình lưu trữ cặp giá trị - khóa hệ thống lưu trữ phân tán Việc tìm kiếm liệu dựa cặp giá trị - khóa diễn nhanh đặc biệt thích hợp với ứng dụngcó khối lượng liệu cần lưu trữ lưu lượng truy cập vào/ra cực lớn mà khơng đòi hỏi cao cấu hình phần cứng dịch vụ tìm kiếm, mạng xã hội, … Dữliệu nút nhân bản, yêu cầu truy vấn gửi tới nhiều máy lúc nên máy gặp cố khơng ảnh hưởng tới tồn hệ thống Các storageengine áp dụng NoSQL thường triển khai plugin hỗ trợ storageengine khác để khiến chúng hoạt động hệ CSDL NoSQL chẳng hạn HandlerSocket, Memcached, … HandlerSocket: giao tiếp với storageengine khác InnoDB khiến chúng hoạt động sởliệu NoSQL HandlerSocket hỗ trợ nhiều mơ hình truy vấn tìm kiếm khóa nhất, tìm kiếm mục khơng nhất, duyệt vùng; quản lí nhiều kết nối đồng thời; hiệu suất thực thi cao sử dụng gói mạng nhỏ E Sử dụngstorageengine Lựa chọn storageengine phù hợp: storageengine vơ phong phú trước bắt đầu ứng dụngsởliệu MySQL, cần lựa chọn storageengine phù hợp Việc lựa chọn cân nhắc số yếu tố như: hỗ trợ giao tác, tính đồng thời, lưu liệu, khôi phục liệu sau đổ vỡ chức đặc biệt khác hệ thống muốn tìm kiếm fulltext có MyISAM hỗ trợ,… Một số cài đặt bản: Để kiểm tra storageengine hỗ trợ MySQL sử dụng câu lệnh: SHOW ENGINEMySQL sử dụng kiến trúc pluggable storageenginecho phép storageengine tải gỡ khỏi server chạy cách dễ dàng - Tải thư viện chia sẻ: Mysql>INSTALL PLUGIN SONAME „‟; - Gỡ bỏ: Mysql> UNINSTALL PLUGIN ; - Tạo bảng: CREATE TABLE … ENGINE = ; Nếu không định rõ cho lựa chọn ENGINEMySQL tạo bảng có kiểu storageengine mặc định - Thay đổi kiểu bảng: ALTER TABLE ENGINE = ; IV XÂYDỰNG MỘT STORAGEENGINE A Cơsở hạ tầng storageengine Khơng có kiến trúc chung chostorageengine hay nói cách khác tùy vào ứng dụng cụ thể hoàn cảnh cụ thể mà storageengine triển khai với nhũng đặc trưng phù hợp cho ứng dụng Khi bắt đầu xâydựngstorageengine cân nhắc số yếu tố như: cách thức lưu trữ vật lí, xét tính đồng thời, hỗ trợ giao tác, hỗ trợ mục, lưu đệm, số kĩ thuật cải thiện hiệu suất đa luồng cho xử lí song song, kiểm sốt sở liệu, chèn với số lượng lớn,… đặc trưng mục tiêu chuyên biệt hỗ trợ thực thi địa lí, hạn chế an ninh, Từ việc cân nhắc này, kết hợp với yêu cầu thực tế ứng dụng mà xác định sở hạ tầng storageengine cần xâydựng B Handlerton Là giao diện chuẩn chostorageengine Nằm tệp handler.cc handler.h thư mục /sql Handlerton kiến trúc lớn với nhiều phương thức kiểu liệu định nghĩa cấu trúc Các phương thức triển khai trỏ hàm C Lớp handler Được dẫn xuất từ lớp sql_alloc, lớp handler cung cấp tập phương thức quán kết nối với máy chủ thông qua cấu trúc handlerton Trong lớp handler chứa đầy đủ chức tạo mới, xóa, chỉnh sửa bảng; phương thức tạo trường, mục chí phương thức bảo vệ khỏi đổ vỡ, khơi phục chép dự phòng D Q trình tạo storageengine Theo [4], trình tạo storageengine chia thành giai đoạn sau: - Giai đoạn 1: Tạo enginesơ khai – tạo storageenginesở tra lắp dễ dàng với máy chủ Tại bước này, tệp mã nguồn tạo ra, storageengine thiết lập dẫn xuất lớp handler sở, storageengine thân tra lắp vào mã nguồn máy chủ - Giai đoạn 2: Làm việc với bảng – đảm bảo storageengine tạo, mở, đóng xóa tệp Đây bước thiết lập thường trình quản lí tệp sở đảm bảo engine làm việc với tệp cách đắn - Giai đoạn 3: Đọc ghi liệu – Là tính storageengine Đây bước tạo phương thức để đọc liệu lưu trữ theo định dạng phương tiện lưu trữ dịch chúng sang định dạng liệu bên MySQL, ngược lại, đọc liệu từ định dạng bên MySQL sang định dạng khác phương tiện lưu trữ - Giai đoạn 4: Chỉnh sửa xóa liệu – Để storageengine sử dụng ứng dụng, cần triển khai phương thức cho phép thay đổi liệustorageengine chỉnh sửa xóa liệu - Giai đoạn 5: Lập mục liệu – storageengine đầy đủ chức nên bao gồm khả cho phép đọc nhanh ngẫu nhiên hạn chế phạm vi truy vấn Bước triển khai trình lập mục liệu - Giai đoạn 6: Bổ sung hỗ trợ giao tác – bước cuối phức tạp Đây bước làm chostorageengine trở thành chế lưu trữ CSDL quanhệ phù hợp để sử dụng mơi trường giao tác Q trình xâydựng storge engine nên thực từ giai đoạn đầu giai đoạn cuối Tại giai đoạn, nên kiểm thử gỡ lỗi theo chế Tùy vào ứng dụng cụ thể, storageengine không cần xâydựng đầy đủ giai đoạn, nhiên mặt chức storageengine nên hoàn thiện tối thiểu giai đoạn MySQL cung cấp storageenginecó tên Example chứa số thành phần có sẵn giai đoạn thứ nhất, sử dụng để hỗ trợ trình tạo storageengine V KẾT LUẬN Như vậy, sau thời gian nghiêncứu tìm hiểu, luận văn đạt kết sau: Nghiêncứu tổng quan MySQL, với tư cách hệquảntrịsởliệu mã nguồn mở thành công Sự độc đáo kiến trúc triển khai lớp pluggable storage engine, sử dụng đệm truy vấn nhiều đệm khác để tăng tốc độ truy vấn liệu, triển khai chế tổ chức truy cập tệp, lập mục, hỗ trợ giao tác storageengine riêng biệt có khả tra lắp dễ dàng vào hệ thống đặc trưng bật tạo nên độc đáo ổn định, hiệu suất cao đặc biệt tính linh hoạt MySQLNghiêncứu kiến trúc pluggable storageengine MySQL, với sốstorageengine điển hình MySQL phát triển Tuy khơng thể đầy đủsố lượng storageengine vô phong phú thông qua nghiêncứu đặc trưng bật sốstorageengine điển hình đó, luận văn đưa nhìn tổng quanstorageengine lưu ý cần cân nhắc lựa chọn storageengine phù hợp đồng thời sở đưa số cân nhắc chức cần cóstorageengine Luận văn tìm hiểu số xu hướng lưu trữ bật storageengine phát triển dựa xu hướng lưu trữ liệu theo cột với InfoBright, NoSQL với đại diện HandlerSocket Trên sở đó, nhấn mạnh phong phú đa dạng phát triển storageengine tương lai Cuối cùng, luận văn nghiêncứu trình xâydựngstorageenginecho khả thi từ bước cân nhắc yếu tố cần thiết chostorageengine tới tiến trình xâydựngstorageengine Việc xâydựngstorageengine vô phức tạp tùy thuộc lớn vào toán ứng dụng cụ thể Do đó, luận văn đưa bước tiếp cận ban đầu cho việc xâydựngstorageengine Phát triển thêm chức storageenginecó hay xâydựngstorageengine hướng phát triển luận văn References Daniel J Abadi (2008), Query Execution in column – oriented database system, MIT PhD Dissertation, Massachusets Institute Technology, USA, pp 17- 45 Daniel J Abadi (2007), “Column – stores for wide and sparse data”, Proceedings of CIDR, Asilomar, USA Daniel J Abadi, Samuel R Madden, Nabil Hachem (2008), “Column-stores vs Row-stores: How different are they really?”, SIGMOD‟08 Proceedings of the 2008 ACM SIGMOD international conference on Management of data, pp 967 – 980 Charles A Bell (2007), Expert MySQL, Apress, NewYork, USA Guy Harrison (2010), 10 things you should know about NoSQL databases, at: http://www.techrepublic.com/blog/10things/10-things-you-should-know-about-nosqldatabases/1772 Knut Haugen (2010), A brief history of NoSQL, at: http://blog.knuthaugen.no/2010/03/a-briefhistory-of-nosql.html Yoshinori Matsunobu (2010), Using MySQL as a NoSQL – A story for exceeding 750,000 qps on a commondity server, at: http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as- nosql-story-for.html MySQL AB (2010), MySQL 5.5 manual, pp.37-150, 1184-1334 Baron Schwartz et al Peter Zaitsev, Vadim Tkachenko, Jeremy D Zawodny, Arjen Lentz, and Derek J Balling (2008), High Performance MySQL, 2nd Edition, O‟Reilly, USA, pp.1-14, 80149, 204-216 10 Sybase Inc (2008), Gaining the performance edge using a column – oriented database management system, USA 11 Writing a custom storage engine, at: http://forge.mysql.com/wiki/MySQL_Internals_Custom_Engine#Writing_a_Custom_Storage_E ngine 12 MySQL specific CMake marcos, at: http://forge.mysql.com/wiki/CMake#MySQL_specific_CMake_macros 13 How can I create a new storageengine for MySQL, at: http://www.mysqlab.net/knowledge/kb/detail/topic/configuration/id/5892 ... trữ cho máy chủ MySQL, làm nhiệm vụ cầu nối máy chủ MySQL với hệ thống tệp hệ điều hành Storage engine thành phần máy chủ sở liệu MySQL chịu trách nhiệm thực phép toán vào/ra liệu cho sở liệu cho. .. ENGINE MySQL tạo bảng có kiểu storage engine mặc định - Thay đổi kiểu bảng: ALTER TABLE ENGINE = ; IV XÂY DỰNG MỘT STORAGE ENGINE A Cơ sở hạ tầng storage engine. .. địa phương mà chuyển tới từ sở liệu máy chủ từ xa NDB cluster: xây dựng dựa khái niệm không chia sẻ, sở liệu NDB chứa nút liệu, nút quản trị nút SQL Mỗi nút liệu chứa đoạn (mảnh) liệu cụm Dữ liệu