19
VIN CÔNG NGHTHÔNG TIN ĐẠI HC QUC GIA HÀ NI Tiu lun môn Cơ sdliu nâng cao IN MEMORY DATABASE (CƠ SDLIU TRÊN BNH) Thành viên: Nguyn Đình Chính Nguyn Văn Chung Lp CIO K5

In memory database-NguyenDinhChinh-NguyenVanChungdocshare02.docshare.tips/files/23994/239944328.pdf · 2017-01-13 · Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu:

  • Upload
    others

  • View
    18

  • Download
    2

Embed Size (px)

Citation preview

  • VIỆN CÔNG NGHỆ THÔNG TIN ĐẠI HỌC QUỐC GIA HÀ NỘI

    Tiểu luận môn Cơ sở dữ liệu nâng cao IN MEMORY DATABASE

    (CƠ SỞ DỮ LIỆU TRÊN BỘ NHỚ)

    Thành viên: Nguyễn Đình Chính Nguyễn Văn Chung

    Lớp CIO K5

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 3/19

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 4/19

    Mục lục (Table of Contents)

    1   Giới thiệu chung về cơ sở dữ liệu trên bộ nhớ (2 trang) 5  1.1   Giới thiệu chung 5  1.2   Một số ứng dụng tiêu biểu dựa trên cơ sở dữ liệu trên bộ nhớ 6  

    1.2.1   Ứng dụng trong viễn thông và thông tin di động 6  1.2.2   Hệ thống giao dịch tài chính, chứng khoán 6  1.2.3   Ứng dụng trong các mạng xã hội 6  

    2   Các vấn đề liên quan đến cơ sở dữ liệu trên bộ nhớ (4 trang) 6  2.1   So sánh IMDS và DBMS 6  

    2.1.1   Sự khác biệt giữa IMDS vs DBMS 6  2.1.2   Lưu trữ tạm thời (Caching) 7  2.1.3   Data-Transfer Overhead 7  2.1.4   Xử lý giao dịch 9  2.1.5   Khả năng phục hồi khi gặp sự cố 9  

    2.2   Ưu nhược điểm của IMDS 10  2.2.1   Ưu điểm của IMDS 10  2.2.2   Hạn chế của IMDS 12  

    2.3   Các mô hình IMDS 14  2.3.1   Mô hình client/server 14  2.3.2   Mô hình AO 14  

    3   Các hệ quản trị cơ sở dữ liệu trên bộ nhớ tiêu biểu (4-6 trang) 15  3.1   MemSQL 15  3.2   SAP HANA 15  3.3   Timesten (Oracle) 16  3.4   FastDB 17  

    4   Ứng dụng cơ sở dữ liệu trên bộ nhớ vào bài toán thực tế (1-2 trang) 18  4.1   Khi nào thì nên sử dụng cơ sở dữ liệu trên bộ nhớ 18  4.2   Một số chú ý khi sử dụng cơ sở dữ liệu trên bộ nhớ 19  

    5   Nhận xét và đánh giá (1 trang) 19  

    6   Tài liệu tham khảo (1 trang) 19  

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 5/19

    Tiểu luận Cơ sở dữ liệu nâng cao

    1 Giới thiệu chung về cơ sở dữ liệu trên bộ nhớ (2 trang)

    1.1 Giới thiệu chung Khi tính toán hiệu suất của một trình ứng dụng CSDL, IO bao giờ cũng chiếm một tỷ lệ rất lớn. Truy cập đĩa cứng là loại truy cập tiêu tốn tài nguyên của hệ thống nhiều nhất. Từ đó các nhà thiết kế đã nảy ra ý tưởng nếu chúng ta có thể “bê” toàn bộ CSDL vào bộ nhớ chính trong quá trình vận hành thì thật là quá tuyệt vời, chi phí cho I/O sẽ được cắt giảm tuyệt đối. Với ý tưởng ấy, “Cơ sở dữ liệu trên bộ nhớ chính” (in memory database) đã ra đời.

    Động cơ chính dẫn đến ý tưởng này là giá bộ nhớ chính (RAM) đã khá rẻ trong thời gian gần đây và chắc chắn sẽ tiếp tục giảm trong tương lai. Đặc biệt, với máy tính 64 bit, các CPU hiện đại có thể vận hành trong một không gian có địa chỉ (address space) rất lớn. Thực tế đã có một vài hệ thống máy tính hiện nay được cấu hình với bộ nhớ chính lên đến nhiều Gigabytes.

    Một cơ sở dữ liệu In-Memory Database System (IMDS) (còn được gọi là cơ sở dữ liệu trong bộ nhớ) là một hệ quản lý cơ sợ dữ liệu chủ yếu dựa vào bộ nhớ chính của máy tính để lưu trữ dữ liệu. Nó ngược với hệ quản trị cơ sở dữ liệu lưu trên ổ cứng. IMDS nhanh hơn và tốn ít CPU hơn. Do tốc độ truy xuất dữ liệu trên bộ nhớ chính rất nhanh nên tốc độ truy suất trên cơ sở dữ liệu trên bộ nhớ cũng nhanh hơn rát nhiều so với trên đĩa cứng thông thường.

    Trong các ứng dụng mà thời gian phản hồi là rất quan trọng, như là hệ thống mạng viễn thông, hệ thống di động, tài chính .… IMDS thường được sử dụng.

    Sau đây là một vài đặc thù của CSDL trên bộ nhớ chính:

    - Nội dung lưu trên bộ nhớ chính sẽ bị mất đi trong trường hợp hệ thống bị “chết” (system crash), do đó chúng ta vẫn phải lưu trữ chi tiết các giao dịch và “Log” vào trên ổ đĩa cứng (logging) và thực hiện phục hồi để đảm bảo các điều kiện ACID cho tất cả các giao dịch. Các bản ghi log (log record) được lưu vào đĩa có thể hình thành hiệu ứng “thắt cổ chai” (bottle neck) gây nghẽn cho cả hệ thống. Để giải quyết vấn đề này, chúng ta có thể thu thập các giao dịch đã hoàn thành và xác nhận cả nhóm giao dịch (group commit) thay vì xác nhận từng giao dịch riêng lẻ.

    - Do các thao tác được thực hiện 100% trên bộ nhớ chính, do vậy việc tối ưu hoá các thao tác sẽ cần được thực hiện theo cách khác với cách thông thường. Khối lượng bộ nhớ sử dụng bởi mỗi thao tác sẽ là một tiêu chuẩn mới trong quá trình tính toán tối ưu cho các thao tác.

    - Các thuật toán dựa trên cấu trúc theo “trang” dữ liệu (page oriented data structure) sẽ không còn hiệu quả vì “trang” không còn là một đơn vị truy vấn dữ liệu. Kỹ thuật clustering cũng không còn cần thiết.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 6/19

    1.2 Một số ứng dụng tiêu biểu dựa trên cơ sở dữ liệu trên bộ nhớ

    1.2.1 Ứng dụng trong viễn thông và thông tin di động

    Mức độ thông minh của các thiết bị viễn thông ngày càng tăng đi đôi với nó là khối lượng dữ liệu mà các hệ thống phần mềm nhúng phải xử lý ngày càng nhiều và phức tạp. Các nhà phát triển phần mềm nhúng nhận thấy rằng các tổ chức dữ liệu theo phương pháp tiếp cận truyền thống trở nên ngày càng khó khăn và chương trình trở nên khó bảo dưỡng và nâng cấp mỗi khi nảy sinh yêu cầu mới. Các chương trình cung cấp các dịch vụ thời gian thực hoặc gần thực trở nên nặng nề khi sử dụng các flat-file hoặc cơ sở dữ liệu truyền thống chậm chạp. Cùng với đó, giá RAM ngày cảng giảm và tốc độ CPU ngày càng nhanh khiến cho các nhà phát triển nghĩ tới lối thoát là xây dựng các Cơ sở dữ liệu trong bộ nhớ. IMDS đã ra đời từ nhu cầu đó. Các nhà phát triển phần mềm lúc này chỉ việc chú trọng vào việc giải quyết bài toán của mình còn việc tổ chức, lưu trữ và truy suất dữ liệu trong bộ nhớ thế nào hoàn toàn do IMDS đảm nhiệm.

    Việc sử dụng IMDS đặc biệt phát huy hiệu quả trong các hệ thống nhúng như các IP router hiện đại, các tổng đài thế hệ mới, các phần mềm cần yêu cầu cao về hiệu xuất và thời gian đáp ứng. Các sản phẩm của một số hãng lớn đều có sử dụng các IMDS như Kenan của CSG, các giải pháp của Amdocs...

    1.2.2 Hệ thống giao dịch tài chính, chứng khoán

    1.2.3 Ứng dụng trong các mạng xã hội

    2 Các vấn đề liên quan đến cơ sở dữ liệu trên bộ nhớ (4 trang)

    2.1 So sánh IMDS và DBMS What else distinguishes an in-memory database from a “traditional” (on-disk) database management system (DBMS)?

    2.1.1 Sự khác biệt giữa IMDS vs DBMS

    Việc tối ưu hoá giữa cơ sở dữ liệu trên ổ đĩa và trên bộ nhớ là đối lập nhau.

    Các DBMS truyền thống lưu trữ dữ liệu trên đĩa cứng nên có tốc độ truy xuất dữ liệu bị hạn chế bởi tốc độ chậm chạp của các linh kiện cơ khí tạo nên đĩa cứng. Còn đúng như tên gọi, IMDS lưu trữ dữ liệu hoàn toàn trên bộ nhớ và chỉ truy xuất đĩa cứng trong trường hợp cần.

    Phải chăng IMDS chỉ đơn giản là các DBMS được nạp hoàn toàn vào bộ nhớ? Câu trả lời là không. IMDS có những khác biệt cơ bản với người họ hàng DBMS của nó. Do không phải truy xuất đĩa cứng nữa nên không có phần dữ liệu nào bị chuyển qua lại giữa đĩa cứng và bộ nhớ. Điều đó dẫn tới giảm thiểu được tiêu tốn xung nhịp CPU và có đáp ứng nhanh hơn từ hàng chục đến hàng trăm lần so với các DBMS truyền thống. Sau đây là các khác biệt cơ bản giữa DBMS truyền thống và IMDS.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 7/19

    Với một hệ thống cơ sở dữ liệu trên ổ đĩa gánh nặng nằm ở việc đọc/ghi dữ liệu. Do đó một hệ thống cơ sở dữ liệu trên ổ đĩa cần phải tìm cách giảm việc đọc/ghi dữ liệu, và đổi lại cần nhiều CPU cho việc này. Việc này cần thêm một bộ nhớ đệm và một chu kì CPU để duy trì bộ nhớ đệm này.

    Cơ sở dữ liệu trên ổ đĩa cũng lưu trữ rất nhiều dữ liệu dư thừa. Ví dụ như việc đánh index dữ liệu, giúp cho việc truy suất dữ liệu nhanh hơn thực tế việc này chính là tạo ra một bản sao dữ liệu ở trên bộ nhớ đệm. Và điều này cũng dễ hiểu vì bộ nhớ của ổ cứng rất là lớn gần như là vô hạn.

    Và điều hoàn toàn ngược lại, cơ sở dữ liệu trên bộ nhớ không coi việc đọc/ghi dữ liệu là gánh nặng. Ngay từ khi thiết kế, việc tối ưu hoá bộ nhớ và CPU luôn đặt lên hàng đầu. Mặc dù giá bộ nhớ giảm, cũng như không gian lưu trữ IMDS tăng lên nhưng IMDS cần được thiết kế để tiết kiệm bộ nhớ nhất. Một IMDS có lợi thế về mặt hiệu suất vì vậy loại bỏ được những chu kì CPU không cần thiết.

    2.1.2 Lưu trữ tạm thời (Caching)

    Để hạn chế số lần phải truy xuất đĩa cứng, các DBMS truyền thống đều sử dụng biện pháp lưu giữ phần dữ liệu được truy xuất mới nhất trong bộ nhớ. Caching bao gồm cả việc đồng bộ dữ liệu. Việc này đảm bảo rằng phần ảnh của dữ liệu được cache giống với phần gốc được lưu trên đĩa cứng của nó. Ngoài ra caching gồm cả thủ tục tìm kiếm dữ liệu. Nếu dữ liệu mà ứng dụng yêu cầu nằm trong cache thì nó được lấy ra và trả về cho chương trình, nếu không thì dữ liệu này sẽ được lấy ra từ đĩa cứng và thêm vào cache để cho những lần dùng sau.

    Đối với các DBMS, các thủ tục này đều được thực hiện cho dù nó được nạp vào bộ nhớ. Còn đối với các IMDS, do loại bỏ được công đoạn ra vào đĩa nên caching là không cần thiết do đó giảm bớt được sự phức tạp và tiêu tốn tài nguyên RAM và xung nhịp CPU

    2.1.3 Data-Transfer Overhead

    Chúng ta hãy xem xét điều gì sẽ xẩy ra khi ứng dụng truy vấn dữ liệu sau đó thay đổi nó và ghi lại trên DBMS truyền thống.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 8/19

    Hình 1: Luồng dữ liệu luân chuyển trong một DBMS truyền thống

    Màu đỏ thể hiện luồng dữ liệu

    Mầu xám thể hiện luông thông điệp

    1. ứng dụng truy vấn dữ liệu từ CSQL thông qua các giao diện API của nó.

    2. CSDL hướng dẫn hệ thống file lấy dữ liệu từ thiết bị lưu trữ.

    3. Hệ thống file sẽ chuyển một bản copy của dữ liệu vào cache của nó và chuyển một bản copy khác trả lại cho CSDL.

    4. CSDL giữ lại một bản copy cho cache của nó và chuyển một bản cho ứng dụng.

    5. ứng dụng cập nhật dữ liệu và chuyển nó trở lại cho CSDL thông qua các API của nó

    6. CSDL sao lại dữ liệu đã thay đổi vào cache.

    7. Bản sao của cache của CSDL cuối cũng cũng sẽ được lưu vào hệ thống file, tại đó cache của hệ thống file cũng được cập nhật.

    8. Cuối cùng thì dữ liệu lại được ghi vào thiết bị lưu trữ vật lý

    Các bước này là trình tự cơ bản không thể bỏ qua trong bất kỳ một CSDL truyền thống nào ngay cả khi công việc được thực hiện hoàn toàn trong bộ nhớ. Các bước này trong thực tế còn phức tạp hơn nhiều khi tính đến các công đoạn Log các thao tác và một số công đoạn quan trọng khác

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 9/19

    Ngược lại, trong các IMDS, việc truyền dữ liệu qua lại là không cần thiết. CSDL cho cho phép người dùng truy cập dữ liệu thông qua các con trỏ trực tiếp tới dữ liệu. Tuy nhiên dữ liệu vẫn được đảm bảo an toàn do con trỏ này chỉ được sử dụng thông qua các API của IMDS. Loại bỏ được việc phải chuyền dữ liệu qua lại nhiều lần làm tăng tốc độ truy xuất dữ liệu. Giảm được số lượng bản sao của dữ liệu dẫn đến giảm tài nguyên chiếm dụng bởi CSDL. Sự đơn giản trong hoạt động khiến cho thiết kế đơn giản làm tăng độ tin cật của hệ thống

    2.1.4 Xử lý giao dịch

    Trong các trường hợp có sự cố nghiêm trọng như là mất điện, CSDL dựa trên đĩa cứng sẽ được khôi phục bằng cách commit những giao dịch đã được hoàn tất và hồi phục lại dữ liệu liên quan đến những giao dịch chưa hoàn tất từ log file khi hệ thống khởi động lại. Các CSDL truyền thống xử lý các giao dịch dựa trên các log file.

    IMDS cũng cup cấp các tính năng đảm bảo tính toàn vẹn của các giao dịch. Để làm điều này, các IMDS lưu lại các bản sao của các đối tượng được cập nhật hay bị xóa và một danh sách các dữ liệu được chèn vào CSDL trong suốt quá trình giao dịch diễn ra. Khi ứng dụng commit giao dịch, phần bộ nhớ của các bản sao của các dữ liệu được bỏ đi và các dữ liệu được chèn vào được chuyển tới vùng nhớ chứa dữ liệu chính của CSDL, thao tác này được thực hiện rất nhanh và hiệu quả. Nếu ứng dụng hủy giao dịch thì các bản sao dữ liệu được chuyển thành bản chính và các dữ liệu được chèn vào trong quá trình giao dịch bị huỷ bỏ.

    Nếu các sự cố nghiêm trọng xẩy ra thì dữ liệu trong IMDS sẽ bị mất. Đó là điều khác biệt lớn giữa các DBMS truyền thống và các IMDS. Khi hệ thống được khởi động lại, để có thể tiếp tục sử dụng được thì dữ liệu phải được nạp lại bằng cách này hay cách khác. Nguyên nhân của sự khác biệt này là IMDS được tạo ra để tăng tối đa tốc độ truy xuất dữ liệu có thể nên một số tính năng như ghi log file và các tính năng làm ảnh hưởng đến hiệu xuất khác đều bị loại bỏ.

    Đặc tính này của IMDS rõ ràng là không phù hợp với mọi loại ứng dụng. Tuy nhiên lại rất thích hợp trong lĩnh vực phần mềm nhúng hoặc những ứng dụng đòi hỏi truy xuất dữ liệu với tốc độ thời gian thực.

    Tuy nhiên một phần lớn các IMDS hiện nay đều cung cấp tính năng Sao lưu và Hồi phục dữ liệu. Có thể kể đến các IMDS phổ biến là: FastDB, GigaBase, Goods

    2.1.5 Khả năng phục hồi khi gặp sự cố

    Isn’t the database just lost if there’s a system crash?

    -> cơ sở dữ liệu không bị mất khi hệ thống bị phá huỷ, gặp sự cố.

    Hầu hết các IMDS đều được cung cấp tính năng để có sự ổn định khi gặp sự cố về phần cứng, cũng như phần mềm.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 10/19

    Một công cụ quan trọng là transaction logging, nếu hệ thống gặp sự cố và phải khởi động lại, cơ sở dữ liệu có thể roll back lại giao dịch hoàn thành cuối cùng hoặc là roll forward giao dịch vẫn đang thực hiện (phục thuộc vào từng IMDS).

    IMDS có thể đạt độ bền vững bằng cách duy trì nhiều bản sao cơ sở dữ liệu và lưu trữ ở nhiều nơi cũng việc không cho phép hệ thống sử dụng các bản sao này.

    RAM và NVRAM cung cấp khía cạnh khác về sự ổn định của IMDS. Một loại NVRAM được gọi là pin RAM, kể cả khi thiết bị bị ngắt thì vẫn có pin hỗ trợ cho cơ sở dữ liệu. Một loại RVRAM mới hơn đó là RAM sắt điện (FeRAM), RAM từ điện trở được thiết kế để duy trì thông tin khi nguồn điện bị ngắt.

    Cuối cùng việc lưu trữ ở trên ổ đĩa vẫn là cần thiết cho dù bộ nhớ có đc cải thiện.

    2.2 Ưu nhược điểm của IMDS

    2.2.1 Ưu điểm của IMDS

    - Nhiều người dùng có thể truy cập dữ liệu đồng thời với thời gian phản hồi xác định và các giao dịch diễn ra nhanh theo thời gian thực.

    - Tổ chức hợp lý hóa việc quản lý dữ liệu, gỡ bỏ các lớp dư thừa đặc thù trong các hệ quản trị dữ liệu DBMS trên ổ đĩa.

    - Các giải thuật tìm kiếm trong truy cập vào bộ nhớ được tối ưu hóa.

    - Trong biên dịch tìm kiếm, IMDS trỏ trực tiếp vào vùng bộ nhớ của các yếu tố dữ liệu.

    - Đảm bảo việc truy nhập trực tiếp đến dữ liệu.

    Điểm mạnh của IMDS loại bỏ cách quản lý bộ nhớ đệm (cache) cũng như thiết bị I/O, giúp tăng hiệu năng hệ thống so với DBMS trên ổ đĩa với bộ nhớ đệm. Cache là nơi lưu trữ sẵn các dữ liệu được dự đoán là sẽ phục vụ yêu cầu của các ứng dụng hay hệ thống nhằm tăng tốc độ xử lý (không phải tốn thời gian tìm kiếm). Bộ nhớ đệm chỉ tăng tốc khi trích xuất/đọc thông tin. Trong trường hợp cập nhật hay tạo ra bản ghi mới trong CSDL, thông tin phải được ghi vào cache, sau đó vào đĩa. Tuy nhiên, có lúc cache thiếu tính linh hoạt vì trong lúc người dùng thực hiện nhiều thao tác ghi/đọc liên tục có thể kích thước cache không đủ lớn để đáp ứng. Lúc đó người dùng không thể tác động vào những bản ghi quan trọng, vì dữ liệu đã được lưu trữ tự động bởi các thuật toán. Khi cache đầy, một số dữ liệu sẽ được ghi vào hệ thống tập tin với tốc độ được tính bằng micro giây.

    Công ty McObject chuyên cung cấp CSDL nhúng đã tiến hành so sánh 3 cách tiếp cận khi cho chạy cùng một ứng dụng, đó là: CSDL trên ổ đĩa, CSDL bên trong bộ nhớ, CSDL trên đĩa RAM.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 11/19

    Theo kết quả đánh giá của McObject, CSDL trên RAM disk có tốc độ đọc nhanh hơn gấp 4 lần và việc cập nhật CSDL cũng nhanh hơn gấp 3 lần so với CSDL trên ổ đĩa. Khi so sánh CSDL bên trong bộ nhớ với CSDL trên RAM disk, hiệu năng tăng đáng kể: CSDL bên trong bộ nhớ có tốc độ đọc nhanh gấp 4 lần và tốc độ ghi nhanh gấp 420 lần so với CSDL trên RAM disk.

    Hình 2: Minh họa trong CSDL nhúng của thiết bị nghe nhạc MP3, giúp quản lý danh sách bài hát, tên bản nhạc, nghệ sĩ.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 12/19

    Bên cạnh RAM disk, hiện nay cũng xuất hiện ổ đĩa SSD được coi là giải pháp lưu trữ dữ liệu cho các trang web, các trung tâm dữ liệu và thậm chí cho một số ứng dụng nhúng. SSD được chế tạo từ chip nhớ Flash và không có bộ phận cơ học như ổ đĩa cứng truyền thống. Điều này đã làm dấy lên những đồn đoán rằng SSD là một thiết bị lưu trữ dành cho CSDL dùng ổ đĩa có thể cung cấp hiệu năng như IMDS. Tuy nhiên, khi triển khai DBMS trên đĩa SSD, hiệu năng cũng không đạt như mong muốn do ảnh hưởng của tiến trình liên quan đến cache, bản sao dữ liệu, truyền dữ liệu… Thời gian truy cập dữ liệu trên đĩa SSD khoảng 200-300 micro giây, nhanh hơn rất nhiều so với đĩa cứng thông thường, nhưng chậm hơn nhiều so với DRAM (khoảng 60 nano giây).

    Ưu điểm nữa của IMDS là không cần "gánh" thêm vai trò nhập/xuất tập tin. Ngay từ đầu, tiêu chí của IMDS là tối ưu hóa để giảm thiểu việc chiếm nhiều bộ nhớ và rút ngắn chu kỳ xử lý trong CPU, vì vậy CSDL bên trong bộ nhớ chỉ dưới 100KB, thay vì từ 100KB cho đến hàng megabyte so với các kiến trúc CSDL khác.

    Việc này là do:

    • Loại bỏ những phần "thừa" và không còn phù hợp trong CSDL trên ổ đĩa, chẳng hạn như tất cả tiến trình cache và nhập/xuất tập tin.

    • Xóa bỏ những tính năng không cần thiết trong các ứng dụng. Ví dụ, bộ định tuyến không cần tách riêng giữa máy khách/chủ để quản lý dữ liệu định tuyến.

    Trong lúc đó, đối với CSDL trên ổ đĩa thì thao tác đọc/ghi là mối đe dọa lớn nhất về mặt hiệu năng, vì vậy các hệ thống này đã dùng phương pháp ghi đè để hạn chế ảnh hưởng.

    2.2.2 Hạn chế của IMDS

    Điểm hạn chế của IMDS chính là nội dung lưu trữ trong bộ nhớ chính không cố định (volatile memory), nghĩa là cần phải cấp nguồn liên tục để lưu trữ nội dung thông tin đó - mất điện là mất hết. Do đó, IMDS đã thêm vào một số cơ chế để tăng tính ổn định và có thể duy trì nội dung nhớ khi không có điện:

    - Lưu nhanh tập tin (snapshot file), lưu kịp thời tình trạng lúc đó. Cách này sẽ lưu theo định kỳ. Nếu hệ thống máy tính hỏng và phải khởi động lại thì cùng lúc đó CSDL cũng phải hoàn tất việc lưu lại thông tin được cập nhật gần nhất .

    - Thực hiện lưu nhật ký (log) để khi có bất kỳ sự thay đổi nào trong CSDL cũng có thể tự động phục hồi trong IMDS.

    - Trong IMDS cũng có thể giữ nội dung nhớ bằng cách duy trì một hay nhiều bản sao của CSDL. Giải pháp này được gọi là bản sao CSDL. Các CSDL bản chính và bản sao có thể được duy trì bởi nhiều tiến trình hay tiểu trình trong cùng phần cứng và chúng có thể nằm trên 2 hay nhiều bo mạch trong cùng máy chủ với “bus” truyền dữ liệu tốc độ cao hay chạy trên từng máy tính trong mạng LAN và có thể tồn tại ở các cấu hình khác.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 13/19

    - Khác với RAM, NVRAM (non-volatile RAM) không bị mất dữ liệu khi tắt nguồn. Tính năng này được tận dụng để chạy chung với pin của CMOS, lưu các thông số của hệ thống như: số serial, hãng sản xuất, ngày sản xuất, địa chỉ MAC của card mạng... Một kiểu mới hơn của NVRAM gồm có FeRAM (Ferroelectric RAM), MRAM (Magnetoresistive RAM) và PRAM (Phase change RAM) được thiết kế để bộ nhớ không bị mất dữ liệu khi không có điện.

    Một cách khác là dùng hệ thống CSDL “lai” mới, nghĩa là vừa hỗ trợ cho các bảng bên trong bộ nhớ và các bảng ở ổ đĩa vào cùng một CSDL. Thuận lợi của cách này là cải thiện việc trích xuất, lưu trữ, lọc toàn bộ dữ liệu trong bộ nhớ, đồng thời giảm chi phí trang bị ổ cứng thay vào đó là tăng lượng bộ nhớ chính.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 14/19

    2.3 Các mô hình IMDS Hiện tại, các IMDS chưa hề có chuẩn. Các hãng phát triển hoặc là áp dụng các chuẩn của DBMS hoặc tự định nghĩa riêng cho mình. Các cách tiếp cận và triển khai, các khái niệm của chúng cũng khác nhau. Trên thế giới các IMDS tồn tại dưới 2 mô hình chính là mô hình hướng ứng dụng (Application Oriented - AO) và mô hình Client/Server. Phần lớn các IMDS hiện nay đều là các CSDL hướng đối tượng hoặc CSDL Hướng đối tượng - Quan hệ.

    2.3.1 Mô hình client/server

    Đây là mô hình gần với các DBMS truyền thống nhất và nổi bật trong số này là GOODS (Generic Object Oriented Database System). Chúng hỗ trợ môi trường phân tán và có rất nhiều tính năng của một DBMS nhưng có lợi điểm là truy xuất dữ liệu rất nhanh so với các sản phẩm truyền thống. Client và Server có thể nằm trên các node khác nhau.

    Mô hình này thường được sử dụng trong các ứng dụng lớn với những đòi hỏi khắt khe về thời gian đáp ứng.

    GOODS là một IMDS mã nguồn mở khá mạnh với rất nhiều tính năng của một DBMS như Replication, quản lý các giao dịch chặt chẽ nhờ các REDO log và Global History Log. GOODS là một CSDL phân tán, dữ liệu có thể đặt trên nhiều node trong mạng.

    2.3.2 Mô hình AO

    Đây là một mô hình khá phổ biến của IMDS. Chúng được cung cấp dưới dạng các thư viện nhúng vào trong chương trình phần mềm. Thực chất chúng cung cấp các dịch vụ lưu trữ, truy vấn và cập nhật dữ liệu cho các ứng dụng. Thường thì các IMDS không thể sửa đổi cấu trúc khi chạy chương trình mà điều này được thực hiện khi viết chương trình ví dụ của loại này là FastDB, GigaBase, Berkeley DB.

    Đa phần IMDS cũng cung cấp khả năng Sao lưu và hồi phục dữ liệu. Khi ứng dụng gặp sự cố thì dữ liệu vẫn có thể khôi phục lại được như trước đó nhờ các file dữ liệu được lưu trên ổ cứng. Các IMDS loại này mang lại cho ứng dụng khả năng truy cập dữ liệu rất nhanh.

    Các DBMS loại này thường chỉ hỗ trợ việc truy cập dữ liệu từ một hay nhiều tiến trình trong cùng một ứng dụng chứ không cho phép nhiều ứng dụng cùng truy cập.

    CSDL loại này được dùng nhiều trong các ứng dụng đòi hỏi tốc độ xử lý cao và phải quản lý rất nhiều tham số như hệ thống tính cước của chúng tối là một ví dụ.

    Ngược lại, một hệ thông cơ sở dữ liệu trong bộ nhớ đòi hỏi việc truyền dữ liệu là duy nhất. Loại bỏ việc xử lý nhiều đường truyền dữ liệu. Xoá bỏ nhiều bản sao dữ liệu làm giảm tiêu thụ bộ nhớ, và cải thiện nhu cầu CPU.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 15/19

    3 Các hệ quản trị cơ sở dữ liệu trên bộ nhớ tiêu biểu (4-6 trang) Mỗi hệ quản trị cơ sở dữ liệu cần nêu được một số thông tin như: đặc điểm nổi bật (thường có trong phần giới thiệu), kiến trúc, các khách hàng lớn đã sử dụng, thông tin về license …

    3.1 MemSQL - MemSQL là một cơ sở dữ liệu để xử lý nhanh dữ liệu. Với duy nhất một nền tảng, việc hội tụ trực tiếp dữ liệu với kho dữ liệu giúp cho ứng dụng xử lý nhanh hơn và thế mạnh là phân tích hoạt động thời gian thực. Bằng việt kiết hợp giữa lưu trữ theo hàng trên bộ nhớ và tối ưu việc lưu trữ theo cột, MemSQL cho phép lưu trữ, truy vấn tới hàng trăm Terabyte dữ liệu thời gian thực.

    - Ưu điểm chính của MemSQL + Tăng tốc độ giao dịch: Bằng việc lưu trữ cơ sở dữ liệu trong bộ nhớ, MemSQL có thể xử lý truy vấn với hàng tỉ bản ghi trong vài giây. + Columnar Compression: Dữ liệu được lưu dưới dạng block, json. + Hỗ trợ ANSI SQL: MemSQL sử dụng ANSI SQL, việc này cho phép tích hợp vào những ứng dụng có sẵn mà không cần phải viết lại câu sql. + Cấu trúc dữ liệu không khoá: MemSQL sử dụng danh sách, bảng băm không khoá để tối ưu việc truy cập dữ liệu. + Kiểm soát đồng thời Multiversion (MVCC): Với MVCC thì việc đọc/ghi dữ liệu không ảnh hưởng lẫn nhau, nghĩa là người dùng có thể truy vấn dữ liệu trong khi đang ghi dữ liệu. + ACID Compliant: Tất cả tác động tới cơ sở dữ liệu đề được lưu trữ vào ổ cứng, trong trường hợp server gặp sự cố thì hoàn toàn có thể phục hồi lại được cơ sở dữ liệu. + Nhân bản trực tuyến: Giữa một khối lượng công việc cần ghi liên tục, MemSQL bắt đầu tạo ra những bản sao mà không cần cấu hình hay tạm dừng cơ sở dữ liệu chính. MemSQL sẽ cung cấp bản sao cơ sở dữ liệu bằng cách tải về và chạy lại tệp tin gần nhất. + Lược đồ linh hoạt: MemSQL hỗ trợ thay đổi cấu trúc bảng trong khi cơ sở dữ liệu vẫn đang được sử dụng, Thêm vào đó MemSQL hỗ trợ kiểu dữ liệu JSON, thậm chí cho phép tạo JSON index trực tuyến. + Sao lưu, khôi phục dữ liệu trực tuyến: MemSQL cho phép sao lưu, khôi phục dữ liệu trực tuyến để đảm bảo không có thời gian chết.

    3.2 SAP HANA - SAP HANA là một cơ sở dữ liệu trong bộ nhớ, nó chính là sự kết hợp giữa phần cứng và phần

    mềm để xử lý dữ liệu thời gian thực bằng cách sử dụng bộ nhớ trong của máy tính. Nó kết hợp cả xử lý dữ liệu theo hàng và cột. Dữ liệu lưu trữ trên bộ nhớ, không còn lưu trong ổ đĩa nữa. Nó phù hợp với việc phân tích và phát triển ứng dụng thời gian thực.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 16/19

    3.3 Timesten (Oracle) - Timeten là một thành phần phần mềm xử lý hiệu suất cao, nó cho phép ứng dụng lưu trữ, sử

    dụng, phân tích dữ liệu ngay thời gian thực, trong khi vẫn đảm bảo tính toàn vẹn của giao dịch và luôn sẵn sàng.

    - Ứng dụng tích hợp Timeten có thể xử lý khối lượng lớn giao dịch và đáp ứng yêu cầu ngay lập tức. Timeten đã được tích hợp thành công vào nhiều ứng dụng viễn thông, tài chính, dịch vụ, và các doanh nghiệp thời gian thực.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 17/19

    - So sánh Timesten với một cơ sở dữ liệu thông thường:

    + Giao diện chuẩn ODBC/JDBC: Timesten hỗ trợ ODBC 2.5 và JDBC 1.2. + SQL: Timesten hỗ trợ tính năng SQL-92. + Kiểm soát truy cập: Timesten kiểm soát truy cập bằng cách sử dụng SQL operation để thiết lập tài khoản người dùng với quyền cụ thể. + Phân tán giao dịch: Timesten hỗ trợ phân tán giao dịch qua giao diện XA và JTA. + Kết nối cơ sở dữ liệu: Như những DB khác, Timesten hỗ trợ kết nối client/server. Bên cạnh đó Timesten cũng quản lý việc nhiều ứng dụng truy cập cùng một thời điểm với cùng 1 DB. + Logging: Timesten giữ lại log những thay đổi và có thể lưu vào ổ đĩa. Log này dung để: khôi phục dữ liệu khi cần thiết, sao chép sự thay đổi tới Timesten Data store hay Oracle DB, cho phép ứng dụng phát hiện sự thay đổi trong bảng dữ liệu. + Tối ưu hoá truy vấn. + Checkpoints.

    - TimesTen có thể sử dụng như là:. + Cơ sở dữ liệu chính trong ứng dụng thời gian thực, trường hợp này mọi dữ liệu đều lưu ở TimesTen. + Trình quản lý dữ liệu thời gian thực, nhiệm vụ của nó chỉ thực hiện một phần trong cả quy trình, và kết hợp với RDBMS. Ví dụ như ứng dụng thanh toán hóa đơn điện thoại thì dữ liệu của cuộc gọi lưu ở Timesten, còn thông tin về khách hàng lưu ở trên RDBMS. + Một tiện ích dữ liệu cho việc cả thiện hiệu suất. + Một điểm tích hợp dữ liệu của ứng dụng. Ví dụ như một tổ chức lưu thông tin ở rất nhiều nguồn, và mỗi nơi có một vài thông tin liên quan tới hoạt động kinh doanh. Và tổ chức muốn lấy thông tin tới hoạt động kinh doanh hàng ngày. Lúc này Timesten là kho lưu trữ dữ liệu liên quan tới hoạt động kinh doanh.

    3.4 FastDB Sau một số thời gian nghiên cứu và tìm kiếm thông tin trên mạng, chúng tôi đã tìm được một số IMDS phù hợp với nhu cầu và điều kiện của mình. Sau đây chúng tôi xin giới thiệu 2 IMDS nổi bật là FastDB và GigaDB.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 18/19

    Đây đều là 2 IMDS mã nguồn mở và đã được sử dụng khá phổ biến. Cả hai cùng cung cấp tính năng sao lưu và phục hồi dữ liệu rất tốt. Chúng là các AO viết bằng ngôn ngữ C++ nên việc giao tiếp cũng rất thuận lợi. Và một điều đặc biệt quan trọng, chúng đều là các CSDL hướng đối tượng nên rất thuận tiện trong việc tích hợp vào các chương trình hiện tại của phòng đang phát triển bằng công nghệ hướng đối tượng.

    GigaBase sử dụng kỹ thuật page-pool để truy cập dữ liệu nên sẽ lưu trữ được nhiều dữ liệu hơn nhưng chậm hơn so với FastDB sử dụng kỹ thuật virtual-memory. Qua cân nhắc, chúng tôi lựa chọn FastDB do chương trình Tính cước của chúng tôi đòi hỏi thời gian đáp ứng ngắn và phải xử lý rất nhiều dữ liệu cuộc gọi.

    FastDB là một IMDS hướng ứng dụng và hướng đối tượng, mã nguồn mở. Nó có một số tính năng mạnh như quản lý giao dịch, tự động sao lưu và hồi phục khi có sự cố. Thủ tục ‘commit’ hoạt động rất hiệu quả dựa trên thuật toán “shadow root pages”. Và một tính năng rất hay nữa của FastDB là nó hỗ trợ truy vấn dữ liệu thông qua một ngôn ngữ gần giốn SQL (SQL liked language). Câu lệnh truy vấn bao gồm: điều kiện lọc dữ liệu, sắp xếp dữ liệu.

    Một bản ghi trong FastDB chính là một đối tượng của chương trình. Các thủ tục trong đối tượng đó có thể dùng như những từ khóa trong câu lệnh truy vấn dữ liệu.

    Công nghệ sắp xếp và tìm kiếm dữ liệu ở đây là T-tree, extensible hash table, GiST khiến cho chương trình có thể truy vấn dữ liệu rất hiệu quả.

    4 Ứng dụng cơ sở dữ liệu trên bộ nhớ vào bài toán thực tế (1-2 trang)

    4.1 Khi nào thì nên sử dụng cơ sở dữ liệu trên bộ nhớ What kinds of applications typically employ an in-memory database?

    Những ứng dụng kiểu ntn thì dùng IMDS

    IMDS được sử dụng ở hầu hết các ứng dụng yêu cầu tốc độ truy suất dữ liệu nhanh, và những hệ thống không có ổ đĩa mà vẫn cần quản lý lượng lớn cơ sở dữ liệu.

    Với các hệ thống thời gian thực thì việc sự dụng IMDS là điều rất là quan trọng. IMDS chạy trên hệ điều hành thời gian thực cung cấp những yêu cầu cần thiết cho ứng dụng bao gồm IP, chuyển mạch viễn thông, điều khiển công nghiệp. IMDS quản lý cơ sở dữ liệu âm nhạc trong máy mp3 và xử lý dữ liệu trong set-top boxs.

    Trong lĩnh vực tài chính IMDS được dùng để cung cấp ngay các thao tác dữ liệu, để xác định và tận dụng cơ hội thị trường. Với những ứng dụng web lớn như thương mại điện tử, mạng xã hội, cần sử dụng IMDS để cache dữ liệu phần back-end. Những ứng dụng doanh nghiệp quy mô lớn yêu cầu IMDS lớn để lưu trữ và cần dùng tới phiên bản 64bit-IMDS.

  • Tiểu luận Cơ sở dữ liệu nâng cao File tài liệu: In memory database-NguyenDinhChinh-NguyenVanChung.doc

    Advanded database topic: In memory database 19/19

    4.2 Một số chú ý khi sử dụng cơ sở dữ liệu trên bộ nhớ

    5 Nhận xét và đánh giá (1 trang)

    6 Tài liệu tham khảo (1 trang) http://en.wikipedia.org/wiki/In-memory_database http://en.wikipedia.org/wiki/List_of_in-memory_databases