• Thứ Sáu, 03/06/2011 14:10 (GMT+7)

    IMDS cho đòi hỏi truy xuất nhanh

    Mai Phương
    IMDS đáp ứng yêu cầu của những hệ thống phải cung cấp số lượng lớn các dịch vụ đồng thời theo thời gian thực.

    Người dùng ngày nay luôn muốn truy cập thông tin nhanh để đưa ra những quyết định chính xác ở bất kỳ thời điểm nào, vì vậy cơ sở dữ liệu (CSDL) là nguồn tài nguyên hết sức cần thiết và quan trọng.

    Một chương trình máy tính chuyên biệt phổ biến dành cho CSDL chính là hệ quản trị dữ liệu DBMS (Database Management System). Đó là nơi cung cấp phương pháp chuẩn hóa về tính toàn vẹn dữ liệu, thiết lập các mối quan hệ dữ liệu phức tạp, đảm bảo truy nhập thông tin nhanh và hiệu quả. Nhưng điểm hạn chế của các hệ thống DBMS là thường kết hợp với thao tác nhập/xuất (I/O) trên ổ đĩa, một tiến trình cơ học có thể làm giảm hiệu năng của máy tính.

    1. Ứng dụng yêu cầu dữ liệu từ thời điểm chạy CSDL thông qua API của CSDL.
    2. CSDL "ra lệnh"cho hệ thống tập tin (file system) lấy dữ liệu từ thiết bị lưu trữ dữ liệu (cụ thể ở đây là RAM Disk).
    3. File system có bản sao dữ liệu đến cache của nó và gửi đến một bản sao khác đến CSDL.
    4.CSDL giữ 1 bản sao trong cache và gửi một bản sao khác đến ứng dụng.
    5. Ứng dụng hiệu chỉnh trên bản sao và gửi bản sao này trả về CSDL thông qua API của CSDL.
    6. Bản sao của CSDL cũng được hiệu chỉnh trả về cache của CSDL.
    7. Bản sao trong cache của CSDL được ghi vào File system và đồng thời cũng cập nhật trong cache của File system.
    8. Cuối cùng, dữ liệu được ghi trở vào RAM Disk.
    Quy trình truyền dữ liệu đối với CSDL trên ổ đĩa.

    Tuy nhiên, trong một thập niên trở lại đây, các nhà cung cấp phần mềm đã tập trung phát triển CSDL bên trong bộ nhớ (In-memory database system - IMDS) nhiều hơn. IMDS được mô tả như là một mô hình DBMS mới giúp tăng tốc độ lưu trữ, truy xuất và phân loại thông tin bằng cách lưu giữ tất cả dữ liệu trong bộ nhớ chính.

    Khi IMDS chưa xuất hiện, DBMS đã dùng bộ nhớ đệm để giữ các bản ghi được cập nhật thường xuyên trong RAM giúp truy xuất nhanh. Ngoài ra, một số DBMS truyền thống khác có bảng bộ nhớ để giữ các tập dữ liệu trong bộ nhớ. Đôi khi, DBMS được triển khai trên đĩa RAM (RAM disk - bộ nhớ RAM giả lập thành ổ đĩa cứng, khi mất nguồn điện, toàn bộ dữ liệu trên RAM disk sẽ mất) và gần đây là ổ đĩa SSD.

    CSDL bên trong bộ nhớ

    IMDS là hệ quản trị CSDL lưu trữ toàn bộ dữ liệu trong bộ nhớ chính nên giúp cho việc ghi/đọc trong hệ thống tập tin nhanh hơn nhiều. Quan điểm trong thiết kế của IMDS là bộ nhớ ngang bằng với không gian lưu trữ vì hiệu quả sử dụng bộ nhớ là tối quan trọng.

    Ư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.

    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: Đây là hình 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ĩ.

    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.

    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.

    - 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.

    Ứng dụng IMDS

    IMDS được xem là mô hình CSDL nhúng hay hệ thống CSDL máy khách/chủ thời gian thực. IMDS chạy trên hệ điều hành cung cấp các phản hồi trong các ứng dụng như định tuyến, chuyển mạch trong viễn thông.

    Ngoài ra, IMDS có thể kiểm soát CSDL trong thiết bị nghe nhạc MP3 và xử lý trình dữ liệu trong bộ giải mã (set-top box). Bên cạnh đó, IMDS cũng hướng đến các ứng dụng không nhúng, ví dụ, các số liệu tính toán hay các ứng dụng khác trong thị trường tài chính. Thêm vào đó, IMDS còn có thể sử dụng để truy xuất dữ liệu tức thời hay một số ứng web như thương mại điện tử, mạng xã hội hay để lưu trữ dữ liệu vào các hệ thống CSDL dùng ổ đĩa. Đôi khi, các ứng dụng dành cho doanh nghiệp cũng cần lưu trữ dữ liệu lớn bên trong bộ nhớ (thường phiên bản IMDS 64 bit mới có thể đáp ứng).

    Theo báo cáo của McObject, IMDS 64 bit đã triển khai trên máy chủ SGI Altix 4700 160 nhân chạy phiên bản SUSE Linux Enterprise Server 9 từ Novell. CSDL đã tăng đến 1,17 terabyte và có thể đạt đến 15,54 triệu bản ghi. Đối với câu lệnh SELECT đơn giản, IMDS xử lý được 87,78 triệu giao dịch truy vấn trên một giây thông qua giao diện trình ứng dụng (API) và đạt 28,14 triệu giao dịch/giây qua API SQL ODBC.

    Hồi đầu năm ngoái, Sybase đã giới thiệu phiên bản đầu tiên về phần mềm hệ thống CSDL hoạt động toàn bộ trên bộ nhớ, đó là Adaptive Server Enterprise 15.5. Theo Sybase, trong lĩnh vực tài chính, có từ 300.000 đến 400.000 phiên giao dịch diễn ra trong một giây và IMDS thích hợp dùng để phân tích nhanh lượng thông tin lên đến hàng terabyte. Công ty cũng hy vọng rằng IMDS sẽ giúp tốc độ giao dịch nói trên sẽ đạt mức một triệu lượt giao dịch trong một giây. Ngoài ra, một số nhà cung cấp phần mềm hàng đầu đã giới thiệu những gói sản phẩm dựa trên IMDS, ví dụ Oracle cũng giới thiệu gói Oracle TimesTen In-Memory Database 11G kể từ lúc Oracle mua lại Công ty TimesTen năm 2005; IBM đã tung ra sản phẩm solidDB sử dụng công nghệ IMDS.

    Tựu trung, IMDS được xem như là tập con của DBMS. IMDS có thể là sự lựa chọn phù hợp với những yêu cầu đòi hỏi yếu tố nhỏ gọn trong quản lý dữ liệu. IMDS đáp ứng nhu cầu lưu trữ, truy xuất, cập nhật... của ứng dụng mới, những yêu cầu của hệ thống cũng như môi trường của hệ điều hành mới.

    Mặc dù IMDS có thể chưa hẳn là một giải pháp lựa chọn cho ứng dụng đòi hỏi nhiều về quản lý dữ liệu nhưng sẽ là ứng cử viên “sáng giá” cho những yêu cầu cần độ truy xuất nhanh, độ trễ thấp. Ngày nay, với nhu cầu ngày càng cao đối với ngành viễn thông, hàng không vũ trụ, quốc phòng và các hệ thống khác đòi hỏi thời gian thực cũng như sự bùng nổ của các thiết bị di động thì IMDS có thể thỏa mãn nhu cầu của người dùng cuối và những nhà phát triển (vì thời gian phát triển ngắn hơn). Ngoài ra, IMDS cũng giúp giảm thiểu nhu cầu trang bị phần cứng và cắt giảm chi phí sản xuất cho các nhà cung cấp phần mềm. Đồng thời, nhờ vào việc bỏ bộ nhớ đệm và các tiến trình khác nên IMDS cũng giúp tăng độ an toàn cho các ứng dụng.

    ID: A1103_96