2.1.1. Tổng quan
ObjectStore được đăng ký nhón hiệu của Object Design, Inc. Nú là một hệ quản trị cơ sở dữ liệu hướng đối tượng tốc độ cao, linh hoạt, tin cậy và cú tớnh khả dụng cao được thiết kế bởi Object Design. Nú cung cấp một giao diện ngụn ngữ được tớch hợp chặt chẽ với cỏc đặc trưng hệ quản trị cơ sở dữ liệu truyền thống của lưu trữ bền vững, quản trị giao tỏc (điều khiển tương tranh và phục hồi), truy nhập phõn tỏn, truy vấn kết hợp trờn một lượng lớn dữ liệu, và cỏc tiện ớch quản trị cơ sở dữ liệu [14, 15, 17, 18].
Nú là một trong những sản phẩm dẫn đầu trong việc cung cấp cỏc giải phỏp hướng đối tượng thuần tuý cho việc quản trị cơ sở dữ liệu. Nú hỗ trợ một miền rộng cỏc nền với giao diện Hệ cơ sở dữ liệu quan hệ truyền thống.
Dũng sản phẩm bao gồm PSE Pro- một phiờn bản thu gọn của ObjectStore, lý tưởng cho cỏc ứng dụng nhỳng hướng giao tỏc. PSE Pro giảm cho phớ phỏt triển và làm cho việc phỏt triển và triển khai ứng dụng phõn tỏn được tiện lợi, cải thiện hiệu suất của cỏc hệ thống nhỳng, cỏc thiết bị di động, và cỏc ứng dụng Web [15, 19].
2.1.2. Kiến trỳc ObjectStore
ObjectStore dựa trờn kiến trỳc client/server. Để đạt được sự thực thi tốt nhất, ObjectStore thi hành một kiến trỳc độc đỏo gọi là “Cache-Forward” [14, 15, 16]. Kiến trỳc này dựa trờn bộ nhớ ảo với khỏi niệm lỗi trang. Việc truy cập và thao tỏc dữ liệu xảy ra trong bộ nhớ ở phớa client thay vỡ ở phớa server. Khi dữ liệu được một ứng dụng tỡm đến khụng ở trong bộ nhớ chớnh của client, một lỗi trang xảy ra. Tiếp đú để đỏp lại cỏc lỗi trang, client yờu cầu cỏc trang từ server, và server sẽ truyền cỏc trang bao chứa thụng tin được yờu cầu tới client. Dĩ nhiờn cỏc trang được truyền được đặt vào trong bộ nhớ chớnh của client. Truy cập đối tượng trực tiếp từ bộ nhớ khụng chỉ gia tăng đỏng kể tốc độ xử lý dữ liệu mà cũn làm cho giao thụng mạng giảm đi rất nhiều.
(b)
Hỡnh 13. Mụ hỡnh kiến trỳc của ObjectStore: (a) Một server, một client. (b) Nhiều server, nhiều client.
Để đảm bảo sự toàn vẹn và nhất quỏn giao tỏc của dữ liệu được trữ cục bộ trong khi duy trỡ sự thực thi toàn thể hệ thống ở mức cao, ObjectStore cung cấp cụng nghệ callback locking đó được cấp bằng sỏng chế. Nú sẽ được thảo luận trong tiến trỡnh ObjectStore Server.
Cú 3 tiến trỡnh chớnh trong ObjectStore: tiến trỡnh server, tiến trỡnh client, và tiến trỡnh Cache Manager. Tiến trỡnh ObjectStore Server điều khiển việc truy cập tới cỏc cơ sở dữ liệu ObjectStore trờn một host. Bao gồm lưu trữ và khụi phục dữ liệu bền vững; kiểm soỏt việc truy cập đồng thời của nhiều ứng dụng client bằng việc sử dụng callback locking; và phục hồi cỏc cơ sở dữ liệu tới một trạng thỏi nhất quỏn giao tỏc nếu xảy ra sự bói bỏ cỏc tiến trỡnh hoặc đổ vỡ host hoặc trong trường hợp hỏng húc mạng. Tiến trỡnh Client ỏnh xạ cỏc đối tượng cơ sở dữ liệu bền vững vào cỏc địa chỉ ảo, yờu cầu server cấp phỏt và huỷ cấp phỏt vựng nhớ cho cỏc đối tượng bền vững, duy trỡ việc trữ cỏc trang được sử dụng gần đõy và trạng thỏi khoỏ của cỏc trang đú, và điều khiển cỏc lỗi trang. Với bộ quản lý Cache trong ObjectStore,
chức năng chớnh của nú là giỳp cho việc truy cập đồng thời đến dữ liệu được thuận tiện bằng việc điều khiển cỏc thụng điệp callback từ Server. Nú quyết định hoặc cấp quyền đọc hoặc cấp quyền ghi cho client hoặc từ chối yờu cầu cấp quyền [17, 18].
2.1.3. Chức năng
Cỏc hệ thống kinh doanh tới hạn và cỏc ứng dụng cho phộp Web đũi hỏi khả năng cung cấp 24x7 và độ tin cậy và hiệu suất thực hiện mức cao. ObjectStore cung cấp một số khả năng an toàn để bảo vệ dữ liệu trong một mụi trường phõn tỏn. Chỳng bao gồm điều khiển tương tranh cho sự nhất quỏn giao tỏc, cập nhật trực tuyến, khắc phục lỗi một cỏch tự động và sao lặp [14].
Một vị trớ nguy hiểm tiềm tàng với bất bỳ ứng dụng quản trị dữ liệu nào là sự đổ vỡ hệ thống trong quỏ trỡnh một giao tỏc. Cơ chế phục hồi của ObjectStore cho phộp cơ sở dữ liệu được khụi phục lại trạng thỏi nhất quỏn theo sau một đổ vỡ. Sự cam kết hai pha tuõn theo XA được sử dụng để đảm bảo sự nhất quỏn giữa cỏc server phõn tỏn và giữa nhiều cơ sở dữ liệu. Theo sau một đổ vỡ hệ thống, cỏc tệp nhật ký giao tỏc được xử lý để khụi phục cỏc cơ sở dữ liệu tới trạng thỏi nhất quỏn sau cựng ngay trước đổ vỡ.
Một lợi ớch nữa của việc ghi tất cả cỏc thay đổi tới nhật ký giao tỏc và sử dụng nhật ký cho việc truy cập dữ liệu tiếp theo, khi đú thời gian đỏp ứng nhanh trong suốt cỏc cam kết giao tỏc cú thể được đảm bảo. Nếu server cơ sở dữ liệu bận phục vụ cỏc yờu cầu từ cỏc client, nhật ký giao tỏc cú thể đợi trước khi cam kết những thay đổi tới cơ sở dữ liệu, loại bỏ rủi ro của một sự thắt cổ chai trong server cơ sở dữ liệu.
Một thao tỏc chung nhất của cỏc ứng dụng cơ sở dữ liệu là việc huỷ tham chiếu đối tượng một cỏch thụng thường, việc này trong C++ được thực hiện bằng việc sử dụng cỏc con trỏ, và trong Java với cỏc tham chiếu. Trong cả hai trường hợp điểm chớnh của sự thực thi cơ sở dữ liệu là tốc độ ở đú việc huỷ tham chiếu cú thể được thực hiện. ObjectStore sử dụng cụng nghệ đó được cấp bằng sỏng chế trong Kiến trỳc ỏnh xạ bộ nhớ ảo [16 ,17, 18].
ObjectStore cải tiến khụng gian địa chỉ ảo của trạm làm việc bằng việc ỏnh xạ động dữ liệu liệu bền vững được tham chiếu trong suốt cỏc phiờn ứng dụng, do vậy đảm bảo rằng việc truy cập tới dữ liệu bền vững thỡ nhanh như việc truy cập tới dữ liệu trong suốt. Cỏc ứng dụng rất thường xuyờn truy cập tới cỏc số lượng lớn cỏc đối tượng nhỏ. Thụng thường phải cần đến một chỉ thị Đơn vị xử lý trung tõm (CPU) để lấy về một đối tượng đơn, điều này là một sự sử dụng kộm hiệu quả của cỏc tài nguyờn. ObjectStore cho phộp lấy về vài đối tượng được lưu trờn một trang đơn được yờu cầu trong một thao tỏc CPU, đặt vào cache và được ỏnh xạ vào trong bộ nhớ ảo.
Bất cứ khi nào cú thể, cỏc đối tượng được lưu trữ trờn server theo khuụn dạng như là chỳng được biểu diễn trong bộ nhớ ảo để cải thiện hiệu suất. Tuy nhiờn, để cho phộp truy cập khụng đồng nhất thụng qua cỏc nền khỏc nhau, thụng thường đũi hỏi mộ số tiờu chuẩn sửa đổi, vớ dụ, việc thay đổi thứ tự byte.
Một cỏch cải tiến hiệu quả khỏc, được ObjectStore chấp nhận, là khả năng phõn cụm cỏc đối tượng trờn một trang hoặc trờn cỏc trang cụm, để khi dữ liệu được đặt vào trong cache, việc truy cập tới dữ liệu liờn kết lấy về được nhanh chúng.
Trong một RDBMS, một mức tri thức Ngụn ngữ truy vấn cú cấu trỳc (SQL) thường được đũi hỏi để cung cấp cỏc truy vấn phi thể thức. Trong thực tế điều này hầu như cú nghĩa đặt ra một yờu cầu cho phũng IT, nú cú thể đũi hỏi một thời gian trễ vài ngày đợi một cõu trả lời – phi thể thức khú. Cỏc tiện ớch được cung cấp trong ObjectStore để mụ hỡnh hoỏ cỏc mối quan hệ giữa cỏc đối tượng, cho phộp cỏc tập hợp lớn cỏc đối tượng được quản lý. Những tập hợp này thiết lập cơ sở của việc truy vấn với những người dựng bằng việc đơn giản là chọn những phần tử thoả món một điều kiện đặc thự. Những sự khụi phục liờn kết và điều hướng phi thể thức cũng được hỗ trợ.
Một nhõn tố cú thể cú một ảnh hưởng nghiờm trọng tới việc thực thi của một cơ sở dữ liệu là một sự thiếu hụt việc đỏnh chỉ số hiệu quả. Tuy nhiờn, việc tạo ra cỏc chỉ số tự chỳng cũng tạo ra cỏc vấn đề khụng gian vật lý. Do vậy cú thể là một hành
động cõn bằng tốt giữa việc tạo ra cỏc chỉ số phự hợp để tăng tốc độ khụi phục dữ liệu và tối ưu hoỏ khụng gian được cung cấp. ObjectStore loại bỏ cạm bẫy tiềm tàng này thụng qua việc hỗ trợ việc lập chỉ số phi thể thức, nú bao gồm khả năng thờm cỏc chỉ số cho cỏc thuộc tớnh.
2.1.4. Mụ hỡnh dữ liệu
ObjectStore lưu trữ dữ liệu như cỏc đối tượng, do vậy, đưa ra sự hỗ trợ trực tiếp cho mụ hỡnh dữ liệu Java hoặc C++. Nú lưu trữ cỏc đối tượng trong một cơ sở dữ liệu trong sự biểu diễn tự nhiờn của chỳng và khụng biến đổi thành khuụn dạng hàng và cột. Điều này loại bỏ sự khụng khớp giữa cỏc mụ hỡnh dữ liệu đối tượng và quan hệ. Nú cũng loại bỏ những mó trỡnh phụ cần thiết để ỏnh xạ giữa cỏc mụ hỡnh dữ liệu đối tượng và quan hệ mỗi lần dữ liệu được lưu trữ và được khụi phục trong cơ sở dữ liệu. Vỡ khụng đũi hỏi mó trỡnh ỏnh xạ, nú rỳt ngắn đỏng kể thời gian phỏt triển, và cung cấp sự thu hồi dữ liệu nhanh hơn. Hơn nữa, dựa vào sự tớch hợp liền nột của nú với Java và C++, người phỏt triển cú thể dễ dàng tớch hợp cơ sở dữ liệu ObjectStore vào trong ứng dụng của họ, mà khụng cần học thờm về định nghĩa dữ liệu và thao tỏc dữ liệu, và khụng cần viết lại nhiều mó trỡnh hoặc chỉnh sửa nhiều trờn cỏc lớp đó cú sẵn của ứng dụng [22].
Hỡnh 14. Đối tượng được lưu trữ dưới khuụn dạng tự nhiờn của nú
ObjectStore lưu trữ cỏc đối tượng một cỏch trực tiếp trong cơ sở dữ liệu, với sự nguyờn vẹn cỏc mối quan hệ của chỳng. Điều này cho phộp truy vấn dữ liệu đối tượng bằng việc điều hướng cỏc mối quan hệ giữa cỏc đối tượng thay vỡ làm cỏc kết nối bảng quan hệ với cỏc truy vấn SQL. Nú cũng cung cấp tớnh linh hoạt để kết cụm
cỏc đối tượng trong cơ sở dữ liệu (vớ dụ, một khỏch hàng với tất cả cỏc đơn hàng của anh ta), cho phộp ObjectStore lấy về cỏc đối tượng cú liờn quan với sự đọc đĩa đơn nhất tới sự thi hành cơ sở dữ liệu nổi tiếng xa hơn.
Mụ hỡnh dữ liệu của ObjectStore là một mở rộng của ngụn ngữ lập trỡnh hướng đối tượng Java hoặc C++. Tất cả cỏc chức năng cơ sở dữ liệu cần thiết cú thể được truy cập thụng qua một giao diện thư viện. Thư viện giới thiệu cỏc lớp tập hợp bao gồm set, bag, và list. Cỏc tập hợp và truy vấn trờn cỏc tập hợp được hỗ trợ trong thư viện. Cỏc thao tỏc liờn quan đến tập, cập nhật và tớnh lặp cũng được hỗ trợ bởi cỏc lớp đú [7, 22].
2.2. PSE Pro
PSE Pro - một phiờn bản thu gọn của ObjectStore, là một giải phỏp quản trị cơ sở dữ liệu hướng đối tượng đa luồng được thiết kế cho cỏc ứng dụng cú nhiều giao dịch, nhỳng và đơn người dựng. PSE Pro cung cấp một tập đầy đủ cỏc dịch vụ dữ liệu bền vững cho những người phỏt triển Java và C++ [1, 15, 19].
Với thành phần chớnh là một động cơ lưu trữ bền vững gọn nhẹ, PSE Pro cho phộp lưu trữ và tỡm kiếm cỏc đối tượng dưới khuụn dạng nhiờn của nú. Khi khụng sử dụng PSE Pro, muốn phỏt triển cỏc ứng dụng Java và C++ chỳng ta phải lưu trữ dữ liệu trong cỏc tệp phẳng hoặc cỏc cơ sở dữ liệu quan hệ, rồi viết mó trỡnh để chuyển đổi qua lại giữa khuụn dạng đối tượng và cỏc khuụn dạng khỏc. Cụng việc này là khỏ phức tạp, dễ xảy ra lỗi, và khú bảo trỡ. PSE Pro loại bỏ những vấn đề này khi hỗ trợ:
Một kiến trỳc ỏnh xạ bộ nhớ ảo hiệu năng cao
Một giao diện trỡnh ứng dụng (API) dễ sử dụng và dễ học
Kiến trỳc ỏnh xạ bộ nhớ đảm bảo tối ưu hoỏ tốc độ truy cập bằng việc sử dụng cỏc con trỏ bộ nhớ ảo thụng thường thay cho cỏc con trỏ mềm. Với cỏc lược đồ trỏ mềm, hệ thống phải kiểm tra tổng chi phớ của tất cả cỏc thao tỏc huỷ tham chiếu con trỏ để quyết định đối tượng được trỏ tới đó được truyền vào bộ nhớ chương trỡnh
hay chưa. Với PSE Pro, việc kiểm tra được bỏ qua cho cỏc đối tượng đó được truyền. Trỏ tới cỏc đối tượng đó được truyền là cỏc con trỏ bộ nhớ ảo được xử lý ở tốc độ phần cứng.
Giao diện trỡnh ứng dụng của PSE Pro sẽ giỳp chỳng ta tận dụng được thành quả của những đặc trưng trờn mà khụng cần thay đổi cấu trỳc của ứng dụng. Khỏc biệt duy nhất đú là lớp tài liệu của ứng dụng được dẫn xuất từ một lớp tài liệu PSE Pro đặc thự, lớp tư liệu này sử dụng PSE Pro cho mục đớch bền vững thay vỡ chuỗi hoỏ đối tượng [1, 20, 21].