Cấu trúc khóa

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 51 - 78)

Các quan hệ giữ một lƣợng nhỏ thông tin khóa tĩnh. Khối kiểm kiểm soát khóa tĩnh quan hệ thƣờng trú trong một vị trí xác định trong phân vùng thứ nhất của một phân đoạn quan hệ, vì vậy nó dễ dàng tìm thấy bất kỳ địa chỉ bản ghi nào trong quan hệ đó. Khối thông tin kiểm soát khóa tĩnh của một quan hệ bao gồm trạng thái khóa hiện tại của nó (mức bản ghi hoặc mức quan hệ) và một con trỏ tới danh sách các khối kiểm soát khóa giao dịch (đƣợc cấp phát động) mà đƣợc giữ bởi mỗi giao dịch chứa một khóa trên quan hệ này. (Hình 2.11). Mỗi khối kiểm soát khóa giao dịch chứa một chế độ khóa (chia sẻ hoặc độc quyền), một danh sách các con trỏ bản ghi tƣơng ứng với thiết lập đọc của nó, một danh sách các con trỏ bản ghi tƣơng ứng với thiết lập ghi của nó, một danh sách các vị từ tƣơng ứng với thiết lập đọc, giao dịch id của nó và danh sách các giao dịch khác chặn trên bất kỳ các khối của

43

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

nó (Hình 2.12). Các giao dịch luôn luôn tạo ra các khối kiểm soát khóa cho mỗi quan hệ chúng tham chiếu bởi vì bất kỳ một giá trị trạng thái khóa của quan hệ nào, các giao dịch luôn luôn duy trì một thiết lập đọc, một thiết lập ghi và một danh sách các vị từ đặc biệt cho quan hệ đó.

Hình 2.11. Cấu trúc khối kiểm soát khóa quan hệ

Cờ trạng thái khóa cho một quan hệ đƣợc giữ trong khối kiểm soát khóa tĩnh của quan hệ. Vì một giao dịch chạy, nó kiểm tra cờ trạng thái khóa này trƣớc khi mỗi bản ghi tham chiếu. Một giao dịch thiết lập khóa thích hợp theo giá trị cờ trạng thái khóa. Vì cờ trạng thái khóa cho một quan hệ có thể thay đổi trong suốt quá trình của một giao dịch nên nó phải đƣợc kiểm tra trƣớc khi mỗi hoạt động khóa có khả năng. Một vài kiểu của các giao dịch, tuy chúng sẽ buộc sử dụng một khóa quan hệ nhƣng chúng có thể sẽ không cần kiểm tra cờ trạng thái khóa. Ví dụ là các giao dịch đƣợc sử dụng để tạo ra các chỉ mục, thực hiện quét quan hệ và các phân vùng checkpoint.

Danh sách khóa quan hệ Cờ trạng thái khóa quan

hệ R W P R W P R W P

Các khối kiểm soát khóa giao dịch

Danh sách đọc, ghi và vị từ Khối quan hệ tĩnh

44

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 2.12. Cấu trúc khối kiểm soát khóa giao dịch 2.5.2. Các khóa quan hệ

Một khóa đơn tại mức quan hệ khóa cả quan hệ và tất cả các chỉ mục liên kết của nó. Các chốt mức phân vùng và mức chỉ mục không cần thiết khi có một khóa quan hệ, vì không có xung đột giữa bộ đọc và bộ ghi hoặc bộ ghi và bộ ghi. Mỗi khóa quan hệ thiết lập bởi một giao dịch đƣợc đại diện bởi một khối kiểm soát khóa vật lý mà đƣợc đính kèm với khối kiểm soát khóa tĩnh của quan hệ.

2.5.3. Các khóa bản ghi

Các khóa bản ghi đƣợc quản lý khác so với các khóa quan hệ. Chúng có các bản ghi trong một bảng khóa mà chứa địa chỉ bản ghi của chúng, chế độ khóa của chúng và id giao dịch của giao dịch của chúng. Không cần giữ một danh sách của việc chặn các giao dịch cho mỗi khóa bản ghi của giao dịch vì tất cả chúng sẽ đƣợc phát hành tại cùng một thời điểm. Thay vào đó các giao dịch khóa có thể đƣợc kết hợp và giữ trong một khối kiểm soát khóa giao dịch. Có vài chi phí tiềm ẩn mà là một phần của khóa mức bản ghi: Khi các khóa bản ghi đƣợc sử dụng, các chốt để

Xác định giao dịch Chế độ khóa (R, X) Danh sách khối giao dịch

Danh sách vị từ Danh sách thiết lập ghi Danh sách thiết lập đọc

45

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

cho hoạt động đọc và cập nhật trên cấu trúc chỉ mục và các phân vùng đƣợc yêu cầu. Mỗi hoạt động đọc hoặc ghi bản ghi phải đƣợc thiết lập một chốt phân vùng và nếu một trƣờng chỉ mục đƣợc cập nhật hoặc chỉ mục đƣợc sử dụng trong hoạt động tìm kiếm, một chốt chỉ mục cũng phải đƣợc thiết lập. Các bộ ghi của bản ghi trong một quan hệ cũng phải đƣợc kiểm tra tất cả các vị từ đọc nổi bật cho quan hệ đó - một nhiệm vụ có khả năng tiêu tốn thời gian.

2.5.4. Các khóa vị từ

Khi khóa tại mức bản ghi, vấn đề của các bản ghi ảo có thể xuất hiện. Các khóa chính xác, một dạng của các khóa vị từ, đã đƣợc đề xuất nhƣ là một phƣơng thức để giải quyết vấn đề ảo này. Các khóa chính xác không cố phát hiện sự giao nhau của các vị từ đọc hoặc ghi vì vấn đề này là vấn đề nan giải cho các vị từ nói chung. Thay vì các bộ ghi của các bản ghi chỉ đơn gian so sánh mỗi giá trị mới để đƣợc ghi dựa vào tất cả các các vị từ đọc nổi bật, và các bộ đọc so sánh các vị từ đọc của chúng trở lại một danh sách tất cả các bản ghi cập nhật nổi bật.

Phƣơng pháp này sử dụng các khóa chia sẻ và độc quyền thông thƣờng cho việc đồng bộ ghi/ghi và ghi/đọc, chúng yêu cầu các bộ đọc gửi các vị từ của chúng để giữ các bộ ghi ở ngoài của các vấn đề ảo (đồng bộ đọc/ghi). Nói cách khác, phƣơng pháp này sử dụng các khóa bản ghi để trình bày các bộ đọc và các bộ ghi từ việc nhìn thấy hoặc chỉnh sửa dữ liệu không ràng buộc của các bộ ghi khác và nó gửi các vị từ đọc để cho phép các bộ đọc giữ các bộ ghi ở ngoài các bản ghi ảo. Điều này tƣơng tự cơ chế khóa chính xác trong nghĩa là nó kiểm tra các giá trị của một bộ ghi dựa vào một danh sách các vị từ đọc. Sự khác nhau giữa các phƣơng pháp là thuật toán các khóa chính xác đó kiểm tra một yêu cầu vị từ của bộ đọc dựa vào một danh sách cập nhật nổi bật cho việc đồng bộ ghi/đọc, trong khi đó phƣơng pháp này sử dụng chỉ đơn giản là các khóa chia sẻ và độc quyền.

Các vị từ đọc đƣợc tạo ra khi các giao dịch đƣợc biên dịch. Các vị từ cho một giao dịch đƣợc đính kèm với khối kiểm soát khóa của nó (Hình 2.11). Mỗi nút trong danh sách vị từ chứa một phần nhỏ của code biên dịch mà các kiểm tra ghi các giá trị dựa vào vị từ chứa trong code biên dịch. Nếu các khối một bộ ghi trên một vị từ

46

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

đọc khóa thì nó đƣợc nhận vào khối kiểm soát khóa giao dịch của giao dịch chứa khóa vị từ.

2.5.5. Các khóa thành phần chỉ mục

Khi trạng thái khóa của một quan hệ tại mức bản ghi, các chỉ mục đƣợc chốt tại mức chỉ mục hơn là mức phân vùng vì một chốt mức phân vùng sẽ đƣợc kiểm tra cho mỗi nút chỉ mục đƣợc chạm trong một hoạt động tìm kiếm, làm chậm nó xuống một cách đáng kể. Do đó, vì các lý do hiệu suất, toàn bộ chỉ mục đƣợc chốt trong quá trình cập nhật. Các khóa nút chỉ mục đƣợc sử dụng để đảm bảo rằng trật tự của cập nhật áp dụng với các nút chỉ mục tƣơng ứng với giao dịch cam kết thứ tự. Chỉ các hoạt động ghi cần tuân theo các khóa nút chỉ mục vì đồng bộ đọc/ghi cho các bản ghi đƣợc thực hiện trong bản thân quan hệ của nó. Ngoại trừ trong quá trình các hoạt động cập nhật, một chỉ mục chắc chắn nằm trong một trạng thái phù hợp, vì vậy một tìm kiếm chỉ mục có thể vẫn đƣợc xử lý, việc sử dụng các con trỏ bản ghi trong chỉ mục duy nhất nhƣ là tìm kiếm thông tin đƣờng dẫn. Khi khóa đƣợc thực hiện tại mức quan hệ, các nút chỉ mục đƣợc cập nhật có địa chỉ của chúng nhập vào một nút chỉ mục ghi danh sách cũng nhƣ các bản ghi đƣợc sẽ có địa chỉ của chúng nhập vào bản ghi ghi danh sách.

Đối với T Tree, các con trỏ tới các khối kiểm soát khóa đƣợc giữ trong các nút thực tế, và đối với Modified Linear Hashing, các con trỏ khối kiểm soát khóa đƣợc giữa trong một mảng con trỏ khóa riêng biệt. Một khóa tƣơng ứng với một số của các phần tử hàm băm; số đƣợc tạo bởi lũy thừa của 2, vì vậy kiểm tra khóa sẽ dễ dàng vì chúng chỉ yêu cầu một mặt nạ hoạt động trên địa chỉ của phần tử hàm băm. Bất kỳ nút nào tham gia trong một hoạt động xoay T Tree hoặc một sự phân chia bảng băm cũng phải đƣợc khóa. Khóa tất cả các nút T Tree tham gia trong một phép quay cây có thể là tốn kém nhƣng các phép quay hiếm khi xảy ra.

2.6. Kết luận chƣơng 2

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ừ

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 51 - 78)

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

(78 trang)