Kết luận chƣơng 2

Một phần của tài liệu Nghiên cứu cơ sở dữ liệu trong bộ nhớ giải quyết bài toán đa giao dịch (Trang 55 - 78)

Trong chƣơng này tìm hiểu về CSDL trong bộ nhớ. Một chức năng quan trọng trong môi trƣờng CSDL trong bộ nhớ đó là khả năng đánh địa chỉ trực tiếp các thực thể CSDL. Khả năng đánh địa chỉ trực tiếp cho phép các con trỏ bản ghi đƣợc sử

47

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

dụng bất kỳ giá trị ở đâu hoặc toàn bộ các bản ghi nếu cần. Nội dung chƣơng đã trình bày đƣợc kiến trúc CSDL trong bộ nhớ, các cấu trúc chỉ mục, xử lý truy vấn, khôi phục, kiểm soát đồng thời, một cấu trúc điển hình đƣợc gắn với CSDL trong bộ nhớ là T Tree. Tiếp theo, Chƣơng 3 trình bày thử nghiệm về CSDL trong bộ nhớ với môi trƣờng là Oracle TimesTen. So sánh thời gian thực hiện việc insert dữ liệu trong TimesTen với MS SQL Server 2008 và đánh giá quá trình thử nghiệm.

48

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Chƣơng 3. THỬ NGHIỆM VÀ ĐÁNH GIÁ 3.1. Cơ sở dữ liệu trong bộ nhớ của Oracle TimesTen

TimesTen [16] là một thành phần phần mềm giúp xử lý sự kiện với hiệu năng cao, nó cho phép các ứng dụng nắm bắt, lƣu trữ, sử dụng, và phân phối thông tin trong thời gian thực, trong khi vẫn giữ đƣợc sự toàn vẹn và sẵn sàng phục vụ các giao tác một cách liên tục.

Các ứng dụng có kết hợp TimesTen có thể xử lý khối lƣợng giao dịch lớn, đáp ứng ngay lập tức các yêu cầu sử dụng phần cứng một cách ít tốn kém hơn các kiến trúc phần mềm thông thƣờng. TimesTen đã tích hợp thành công vào nhiều ứng dụng về viễn thông, mạng, dịch vụ tài chính, du lịch, logistics, và các ứng dụng doanh nghiệp thời gian thực.

Sử dụng giao diện tiêu chuẩn, TimesTen có thể tích hợp vào một ứng dụng để phục vụ nhƣ một hệ thống quản lý CSDL quan hệ (relational database management system: RDBMS) hoặc nhƣ một bộ nhớ cache cho các công cụ RDBMS truyền thống, nhƣ Oracle, SQL Server. TimesTen có thể đƣợc cấu hình để hoạt động hoàn toàn trong bộ nhớ, có thể đƣợc cấu hình cho môi trƣờng ổ đĩa để ghi lại nhật ký và kiểm soát dữ liệu ra vào ổ đĩa.

3.1.1. So sánh TimesTen và các CSDL thông thƣờng

Trong một RDBMS thông thƣờng, các ứng dụng client giao tiếp với Database Server qua một số loại kết nối IPC (Inter-Process Communication), từ đó hiệu suất truy cập đến không gian địa chỉ vật lý bị giảm xuống. Một ứng dụng có thể liên kết trực tiếp với TimesTen và vào không gian địa chỉ của nó mà không cần IPC. API của TimesTen không phân biệt kết nối đến là trực tiếp hay Client/Server, cách xử lý giống hệt nhau.

49

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.1: So sánh giữa các công cụ disk-based RDBMS và TimesTen

Các công cụ RDBMS thực hiện các xử lý dƣới giả thiết là dữ liệu thƣờng trú dƣới ổ đĩa cứng. Việc tối ƣu hóa thuật toán, quản lý bộ nhớ đệm, thiết lập chỉ mục đều đƣợc thiết kế dựa trên giả thiết cơ bản này. Ngay cả khi RDBMS đƣợc cấu hình để giữ tất cả dữ liệu trong bộ nhớ thì hiệu quả vẫn không tốt, do giả thiết trên đã đƣợc mã cứng lại trong hàng thập niên nghiên cứu và phát triển RDBMS. TimesTen thì khác, nó đƣợc thiết kế với những kiến thức mới, rằng dữ liệu sẽ cƣ trú trong bộ nhớ chính và do đó có thể sử dụng trực tiếp dữ liệu đó. Nó làm giảm sự phức tạp trong việc điều khiển truy cập dữ liệu của máy, giúp làm ngắn các đoạn code kết nối, đơn giản hóa các thuật toán. Từ đó các thiết kế đƣợc đơn giản hơn, nhỏ gọn hơn và truy cập nhanh hơn.

50

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

3.1.2. Kiến trúc của TimesTen

Hình 3.2. Các thành phần trong TimesTen

TimesTen Data Store hoạt động ở phân vùng bộ nhớ chia sẻ, nó chứa tất cả các bảng biểu, chỉ mục, cấu trúc dữ liệu, các quan hệ cần thiết để quản lý dữ liệu của hệ thống TimesTen.

TimesTen ODBC Direct Driver nhƣ một “database engine” quản lý sự tƣơng tác giữa ứng dụng và Data Store. Nhƣ trong Hình 3.2, ứng dụng ODBC có thể chạy với hiệu suất tối đa bằng cách kết nối đến ODBC Direct Driver. Các ứng dụng java cũng có thể làm điều tƣơng tự thông qua các thƣ viện JDBC. Ứng dụng client có thể chạy từ xa thông qua các kết nối TCP/IP với TimesTen Server Child Processes và đƣợc sắp xếp một cách tuần tự truy cập trực tiếp vào các trình điều khiển.

TimesTen cũng cung cấp khả năng ghi lại nhật ký các giao tác (logging) và tạo ảnh để khôi phục lại khi có lỗi xảy ra (checkpointing). Ứng dụng cũng có thể tinh chỉnh logging và checkpointing để tạo sự cân bằng giữa hiệu suất và tính bền bỉ. Một vài đặc tính khác của TimesTen nhƣ hỗ trợ tạo bản sao (replication) dữ liệu giúp cho dữ liệu luôn đƣợc sẵn sàng và Cache Connect cho phép TimesTen vận hành nhƣ một bộ nhớ đệm (cache) cho các sản phẩm, nhƣ Oracle data, SQL Server.

51

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

3.1.2.1. TimesTen Data Store

Một TimesTen Data Store là một tập các phần từ nhƣ bảng (table), khung nhìn (view) có thể đƣợc truy cập và thao tác thông qua SQL. TimesTen Data Manager có thể quản lý đƣợc nhiều Data Store.

Hình 3.3. TimesTen Data Store

Mỗi Data Store đƣợc tạo ra khi kết nối đầu tiên đƣợc khởi tạo, đƣợc nhận dạng bởi một tên và một tập các thuộc tính định nghĩa trong cấu hình của nó. Trong hầu hết các trƣờng hợp, tên và thuộc tính này đƣợc định nghĩa trong ODBC Data Source Name (DSN).

3.1.2.2. TimesTen Data Manager

52

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

TimesTen Data Manager mô tả tất cả các tiến trình, các thƣ viện, khả năng đáp ứng cho các tiến trình do các hàm của ODBC và JDBC gọi và các câu lệnh SQL phát sinh bởi các ứng dụng sử dụng Data Store.

Tại lõi của Data Manager là ODBC Direct Driver, một thƣ viện tiêu chuẩn của ODBC thông thƣờng về SQL, logging, checkpointing, locking, failure recovery. Điều quan trọng nhất tạo ra sự khác biệt là các ứng dụng ODBC có thể đạt đƣợc hiệu suất rất cao bằng các thao tác trực tiếp với Data Store thông qua Direct Driver

3.1.2.3. TimesTen ODBC và JDBC APIs

Kiến trúc của TimesTen hỗ trợ các kết nối thông qua ODBC và JDBC APIs, cho phép ứng dụng truy cập đến dữ liệu của TimesTen sử dụng SQL-92 nhƣ là ngôn ngữ truy cập dữ liệu tiêu chuẩn. ODBC và JDBC đƣợc hỗ trợ bởi hầu hết các nhà cung cấp DBMS và đƣợc chấp nhận rộng rãi bởi các nhà phát triển ứng dụng.

Hình 3.5: TimesTen ODBC và JDBC APIs

TimesTen cung cấp khả năng xây dựng các thủ tục (procedures) kế thừa từ ODBC và JDBC functionality. TimesTen cũng cung cấp API chuyên dụng cho việc hỗ trợ quản lý phân bổ giao tác (transactions) hoặc giám sát (transaction log).

3.1.3. Ứng dụng kết nối đến Data Store

53

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

 Direct Driver Connection

 Client/Server Connection

 Driver Manager Connection

Khi đã kết nối thành công, ứng dụng có thể giao tiếp với TimesTen Data Store qua JDBC or ODBC APIs. TimesTen Data Manager hỗ trợ các ứng dụng đa luồng, do đó cùng một thời điểm nhiều ứng dụng có thể kết nối đến, mỗi kết nối đến đƣợc đại diện bởi ODBC Connection Handle và JDBC Connection Object.

Với các ứng dụng Client/Server và Driver Manager Connections sẽ làm giảm hiệu suất thực thi một cách đáng kể.

3.1.4. Data Availability và Integrity

TimesTen chắc chắn về sự sẵn sàng, toàn vẹn dữ liệu và tính bền của hệ thống thông qua việc sử dụng 3 cơ chế:

3.1.4.1. Logging

Hình 3.6: Two-tiered logging

Có 2 cấp độ logging:

 Trong bộ nhớ Transaction Log Buffer

54

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

TimesTen cung cấp một thuộc tính cấu hình của logging cho phép ngƣời dùng tinh chỉnh việc logging để có đƣợc sự thỏa hiệp tốt nhất giữa hiệu suất và tính bền bỉ. Tùy chọn này là một thuộc tính của Data Store và sẽ đƣợc cố định khi tải lên bộ nhớ. Tức là không đƣợc sửa đổi thuộc tính này khi nó đã đƣợc đƣa lên bộ nhớ.

Ở đây có 2 tùy chọn:

Disk-based logging

Ứng dụng sẽ có đƣợc dữ liệu có tính bền bỉ bằng cách ghi lại các nội dung từ Log Buffer vào log files trên ổ cứng một cách định kỳ. Ngƣời dùng có thể cấu hình TimesTen thực hiện ghi lại hành động một cách tự động tại thời điểm hoàn thành giao tác hoặc cho ứng dụng làm thủ công bằng cách gọi các procedure có sẵn trong thƣ viện (khi mà buffer chuẩn bị đầy. TimesTen sẽ tự lƣu nội dung của buffer vào file trên ổ đĩa).

Trong tùy chọn này, TimesTen ghi lại một bản sao sự thay đổi của Data Store ở ổ đĩa nhƣ là một nhiệm vụ để hoàn thành giao tác. Bản ghi này có thể dùng để quay lui (rolled back) hoặc khôi phục lại khi cần thiết. Tuy nhiên việc phải truy cập vào ổ đĩa sẽ làm tăng thời gian đáp ứng một giao tác.

Logging disabled

Cung cấp hiệu suất cao nhất cho việc hoạt động của hệ thống. Nhƣng, các giao tác không thể quay lui hoặc khôi phục lại đƣợc. Chỉ nên vô hiệu hóa logging trong các hoạt động mà nó có thể khởi động lại từ đầu nếu thất bại xảy ra, chẳng hạn nhƣ khi phải tải một số lƣợng lớn Data Store.

Log files sẽ bị xóa khỏi ổ đĩa khi một hành động checkpoint trên Data Store hoàn thành và TimesTen thông báo rằng đƣợc phép dọn dẹp.

3.1.4.2. Checkpointing

Đƣợc sử dụng để gửi một bản chụp (snapshot) của Data Store đến file trên ổ cứng. Trong trƣờng hợp có lỗi hệ thống, TimesTen có thể sử dụng một checkpoint file cùng với log files để khôi phục một Data Store trở lại trạng thái gần nhất trƣớc khi bị hỏng. Ứng dụng có thể khởi tạo một checkpoint bằng cách gọi các procedure tƣơng ứng trong thƣ viện.

55

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

TimesTen duy trì hai checkpoint files cho mỗi Data Store, có tên là DataStoreName.ds0 và DataStoreName.ds1. Khi mà Data Store đã đƣợc checkpoint vào ổ đĩa, TimesTen sẽ ghi đè lên 2 checkpoint file cũ.

Chỉ có dữ liệu đƣợc thay đổi kể từ checkpoint gần nhất mới đƣợc ghi lại. Hoạt động checkpoint sẽ quét các Data Store và tìm ra những sự khác biệt, sau đó chỉ cập nhật những thông tin đã thay đổi và loại bỏ những thứ không cần thiết (đã tồn tại rồi).

Hình 3.7: Các hoạt động trong Checkpoint

Data Store thể bị lỗi bởi hệ thống đổ vỡ hay tiến trình đang sử dụng gặp sự cố, mọi kết nối sẽ bị ngắt. Khi ứng dụng kết nối lại đến Data Store bị lỗi, Subdaemon sẽ cấp phát một memory segment mới cho Data Store và khôi phục lại nó từ checkpoint và log file.

56

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.8. Khôi ph c d li u t log và checkpoint files 3.1.4.3. Replication

Là một tiến trình sao chép dữ liệu giữa các Data Store, để tạo ra những dữ liệu có tính sẵn sàng cao nhằm nhiệm vụ giảm thiểu tối đa việc ảnh hƣởng đến hiệu suất do nhiều ứng dụng cùng sử dụng. Ngoài ra nó còn có vai trò phục hồi Data Store khi thất bại, Replication cũng rất hữu ích cho việc phân phối để ngƣời dùng tải nhiều Data Store với hiệu suất tối đa và dễ bảo trì.

Replication configurations

TimesTen Replication sao chép các bản sao cập nhật từ một Master Data Store đến một Subscriber Data Store.

57

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Để đạt đƣợc hiệu quả cao và chi phí thấp, TimesTen sử dụng một Transaction Log Buffer.

Nhƣ trong hình 3.9, Replication tại mỗi Master và Subscriber Data Store đƣợc điều khiển bởi Replication Agent, giao tiếp thông qua TCP/IP socket. Replication Agent trên Master (Master Agent) Data Store đọc bản ghi từ Transaction Log và chuyển tiếp những thay đổi đƣợc phát hiện đến Replication Agent trên Subscriber (Subscriber Agent) Data Store. Subscriber Agent thực hiện cập nhật lại Data Store. Nếu Subscriber Agent không hoạt động khi các thay đổi đƣợc chuyển tiếp từ Master, Master sẽ vẫn giữ thay đổi trong nhật ký của nó đến khi có thể thực hiện thay đổi đƣợc cho Subscriber.

Hình 3.10. Master and Subscriber Replication Agents

Điểm tập trung của TimesTen Replication là tạo cho dữ liệu khả năng sẵn sàng cao. Để đạt đƣợc mục tiêu Replication cung cấp nhiều cách khác nhau trong việc cấu hình, để đƣa ra đƣợc một sự cân bằng tốt nhất giữa hiệu năng và tính sẵn sàng.

Replication đƣợc cấu hình thông qua câu lệnh SQL. Thông thƣờng, Replication có thể đƣợc cấu hình đơn hƣớng (Unidirectional hay one way) từ Master đến một hay nhiều Subscribers, hoặc hai hƣớng (bidirectional hay two way) giữa hai hay nhiều Data Store ở cả Master và Subscriber. Nhiều hơn nữa ta có thể cấu hình đa hƣớng (N-way) hoặc cập nhật mọi nơi (update anywhere) Replication.

58

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.11. Ví dụ về các cấu hình replication

Hot standby: là một phƣơng pháp sao lƣu dự phòng, có một hệ thống repication chạy đồng thời với hệ thống chính.

Hình 3.11, thể hiện làm cách nào replication có thể cấu hình để cung cấp một hot standby cho việc sao lƣu Data Store và cân bằng tải (load-balanced) một cách đồng đều. Trong chế độ cấu hình hot standby, một Master Data Store đơn lẻ sẽ đƣợc sao chép đến Subscriber Data Store với một cơ chế dự phòng thích hợp xây dựng bên trong bản thân ứng dụng.

Với cấu hình cân bằng tải, một khối lƣợng công việc (workload) có thể đƣợc phân chia giữa master và subscriber. Có 2 kiểu cơ bản:

 Split workload: Mỗi Data Store lƣu trữ một phần của nó trên Data Store khác

 Distributed workload: Nơi nào ngƣời dùng có thể truy cập đều trở thành nguồn dữ liệu. Các nguồn này ngang hàng nhau, không phân biệt Master và Subscriber.

59

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Hình 3.12. Replication trong Hot standby và load balancing Kích hoạt chế độ Active standby pair

Trong chế độ standby pair, 2 Data Store đƣợc định nghĩa nhƣ là Master. Một là Active Master Data Store, còn lại là Standby Master Data Store. Trong đó, Active Master Data Store có thể cập nhật trực tiếp đƣợc, còn Standby Master Data Store thì không. Standby Master Data Store nhận đƣợc sự thay đổi từ Active Master Data Store và có thể truyền sự thay đổi này đến 62 Subscriber Data Store (chỉ đƣợc đọc). Nếu Active Master Data Store lỗi, nó có thể đƣợc khôi phục từ Standby Master Data Store, các hoạt động chính tạm thời chuyển giao cho Standby Master Data Store. Tƣơng tự, nếu Standby Master Data Store bị lỗi.

60

Số hóa bởi Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn

Replication thiếu đồng bộ và dịch vụ “return”

TimesTen Replication mặc định một cơ chế thiếu đồng bộ, nghĩa là một ứng dụng thay đổi Master Data Store và tiếp tục làm việc mà không chờ thay đổi đó đƣợc các Subscriber nhận đƣợc. Giữa Master và Subscriber Data Store có một cơ chế nội bộ để xác nhận các bản cập nhật đã thành công, nhƣng nó lại vô hình với các ứng dụng. Kiểu làm việc giúp hệ thống có đƣợc hiệu suất tối đa, nhƣng ứng dụng lại bị tách rời hoàn toàn trong tiến trình tự sao chép (replication) trên Subscriber. TimesTen cung cấp dịch vụ “return” để cung cấp thêm thông tin cho các ƣng dụng cần mức độ tin tƣởng cao rằng dữ liệu đã đƣợc nhân bản và nhất quán ở Master and Subscriber Data Store.

3.2. Thử nghiệm và đánh giá 3.2.1. Môi trƣờng thử nghiệm 3.2.1. Môi trƣờng thử nghiệm

Chƣơng trình thử nghiệm đƣợc chạy trên máy tính tại phòng Nghiên cứu hệ thống và quản lý - Viện Công nghệ thông tin - Viện Khoa học và Công nghệ Việt Nam. Cấu hình máy chủ nhƣ sau:

CPU: Core I7 3.07 GHz RAM: 18GB

Một phần của tài liệu Nghiên cứu cơ sở dữ liệu trong bộ nhớ giải quyết bài toán đa giao dịch (Trang 55 - 78)

Tải bản đầy đủ (PDF)

(78 trang)