5.1. Các định dạng đối tượng phổ biến:
- Tệp là danh sách dữ liệu điện tử đã được tối ưu hóa để thực hiện một giao dịch cụ thể.
- Cơ sở dữ liệu là một tập hợp các nhóm thơng tin, mỗi nhóm có liên quan đến nhóm khác theo một cách nào đó.
- Hệ quản trị cơ sở dữ liệu (DBMS) là phần mềm tạo và thao tác các cơ sở dữ liệu.
a. Tệp truy cập ngẫu nhiên và tuần tự:
- Hầu hết các ngơn ngữ lập trình đều hỗ trợ truy cập tuần tự và ngẫu nhiên với file.
- Truy cập tuần tự chỉ cho phép các hoạt động tuần tự được thực hiên (ví dụ đọc, ghi, tìm kiếm..). Hiệu quả khi thực hiện hoạt động 1 cách tuần tự, xử lý các đối tượng 1 cách liên tục. Tuy nhiên đối với các hoạt động ngẫu nhiên như update 1 đối tượng thì rất kém hiệu quả. Có 2 loại truy cập tuần tự là có thứ tự và khơng có thứ tự.
Khơng có thứ tự: Các file khơng có thứ tự được tổ chức nối tiếp tức là thứ tự của file là thứ tự đối tượng được lưu vào file.
Có thứ tự: Các file được đặt vào 1 thứ tự dược sắp xếp cụ thể (ví dụ theo thứ tự của mã khách hàng). Sử dụng linked list giữ cho file theo thứ tự sắp xếp bằng cách ln tạo 1 file mới mỗi lần xóa hoặc bổ sung xảy ra và thông qua 1 con trỏ đặt cuối môi bản ghi và trỏ tới bản ghi tiêp theo.
- Truy cập ngẫu nhiên: Chỉ cho phép thực hiện các hoạt động ngẫu nhiên hoặc trực tiếp (tìm kiếm, cập nhật...). Có tốc độ nhanh tuy nhiên khơng hỗ trợ truy cập tuần tự.
- Cách để thực hiện cả tuần tự và ngẫu nhiên là sử dụng tệp tuần tự có chứa danh sách các khóa và tệp truy cập ngẫu nhiên cho các đối tượng thực thể.
b. Cơ sở dữ liệu quan hệ:
- Là tập hợp các bảng với mỗi bảng có 1 khóa chính. Bảng có quan hệ tới 1 bảng khác băng cách đặt khóa chính từ 1 bảng thành khóa ngoại trong 1 bảng khác.
- Ngơn ngữ truy vấn có cấu trúc (SQL) là ngơn ngữ tiêu chuẩn để truy cập dữ liệu từ trong bảng.
c. Cơ sở dữ liệu quan hệ đối tượng:
- Hệ quản trị cơ sở dữ liệu quan hệ đối tượng (ORDBMS) là hệ quản trị cơ sở dữ liệu quan hệ có phần mở rộng để xử lý việc lưu trữ các đối tượng trong cấu trúc bảng quan hệ. Thường được thực hiện thông qua việc sử dụng các kiểu do người dùng xác định.
- ORDBMS là mở rộng của RDBMS. d. Cơ sở dữ liệu hướng đối tượng:
- Là hệ thống quản lý cơ sở dữ liệu quan hệ với các phần mở rộng để xử lý việc lưu trữ các đối tượng trong cấu trúc bảng quan hệ.
- ORDBMS hỗ trợ rất tốt cho các hoạt động quản lý dữ liệu điển hình bao gồm ngơn ngữ truy vấn dễ sử dụng (SQL),ủy quyền, kiểm soát đồng thời, các phương tiện phục hồi và xử lý dữ liệu đối tượng phức tạp. - Cung cấp hỗ trợ cho 1 số hình thức kế thừa.
- Chủ yếu hỗ trợ các dữ liệu đa phương tiện, hoặc các hệ thống liên quan dữ liệu phức tạp (video, âm thanh,..)
- Có 2 cách tiếp cận:
Thêm các phần mở rộng về tính bền vững vào ngơn ngữ lập trình hướng đối tượng.
Tạo một hệ thống quản lý cơ sở dữ liệu hoàn toàn riêng biệt. e. Kho dữ liệu NoSQL:
- NoSQL là viết tắt của No SQL hoặc Not Only SQL.
- Các kho dữ liệu NoSQL là kiểu duy trì đối tượng mới nhất hiện có. - Các kho dữ liệu được mô tả là NoSQL thường không hỗ trợ SQL. - Các kho dữ liệu NoSQL có xu hướng hỗ trợ các truy vấn rất nhanh.
Tuy nhiên, khi cập nhật, các kho dữ liệu NoSQL thường khơng hỗ trợ cơ chế khóa, do đó tất cả các bản sao của một phần dữ liệu không bắt buộc phải nhất quán mọi lúc. Thay vào đó, chúng có xu hướng ủng hộ một mơ hình dựa trên nhất quán cuối cùng.
- Một số kho dữ liệu NoSQL được biết đến nhiều hơn bao gồm Google’s Big Table, Amazon’s Dynamo, Apache’s Hbase.
- Hầu hết các kho lưu trữ dữ liệu NoSQL được tạo ra để giải quyết các vấn đề liên quan đến việc lưu trữ lượng lớn dữ liệu phân tán trong RDBMS. - Các kho lưu trữ dữ liệu NoSQL, bao gồm kho dữ liệu khóa-giá trị, kho lưu trữ tài liệu, kho hướng cột và cơ sở dữ liệu đối tượng.
- Kho dữ liệu khóa-giá trị về cơ bản cung cấp một chỉ mục phân tán (khóa chính) cho nơi lưu trữ BLOB (đối tượng lớn nhị phân). BLOB coi một tập hợp các thuộc tính là một đối tượng lớn.Các ứng dụng thường sử dụng kho dữ liệu khóa-giá trị là giỏ hàng, danh mục sản phẩm và danh sách bán chạy nhất trên Web.
- Các kho dữ liệu tài liệu được xây dựng dựa trên ý tưởng về các tài liệu. Các kho dữ liệu này được coi là khơng có giản đồ. Điều đó có nghĩa là chúng ta khơng có thiết kế chi tiết của cơ sở dữ liệu. Điểm khác biệt chính giữa kho dữ liệu khóa-giá trị và kho dữ liệu tài liệu là “tài liệu” có cấu trúc và có thể dễ dàng tìm kiếm dựa trên các thuộc tính khơng phải khóa có trong
- Các kho dữ liệu dạng cột sắp xếp dữ liệu thành các cột thay vì các hàng: các hàng đại diện cho các thuộc tính và các cột đại diện cho các đối tượng. Loại lưu trữ dữ liệu dạng cột rất hiệu quả trong các ứng dụng thông minh kinh doanh, khai thác dữ liệu và lưu trữ dữ liệu, nơi dữ liệu khá tĩnh và nhiều phép tính được thực hiện trên một hoặc một tập con nhỏ của các thuộc tính có sẵn.
f. Chọn định dạng lưu trữ đối lượng:
- Dựa vào điểm mạnh vào điểm yếu: Mỗi định dạng lưu trữ có điểm mạnh điểm yếu khác nhau. Khơng có định dạng nào tơt hơn định dạng khác.
- Dựa vào các loại dữ liệu được hỗ trợ:
Lựa chọn tốt nhất để lưu trữ dữ liệu đơn giản thường là RDBMS vì cơng nghệ này đã phát triển theo thời gian và liên tục cải tiến để xử lý dữ liệu đơn giản rất hiệu quả.
Càng ngày, các ứng dụng càng tích hợp nhiều dữ liệu phức tạp, ví dụ: video, hình ảnh hoặc âm thanh. Các kho lưu trữ dữ liệu ORDBMS, OODBMS hoặc NoSQL có khả năng xử lý loại dữ liệu này tốt nhất. Dữ liệu phức tạp được lưu trữ dưới dạng đối tượng có thể được xử lý nhanh hơn so với các định dạng lưu trữ khác
- Dựa vào loại hệ thống:
Các hệ thống hỗ trợ ra quyết định thường chỉ đọc dữ liệu. Lựa chọn tốt nhất cho các hệ thống này thường là RDBMS vì các định dạng này có thể được thiết kế đặc biệt cho các nhu cầu có thể khơng rõ ràng và ít thích hợp để thay đổi dữ liệu.
- Các định dạng lưu trữ hiện có: Định dạng lưu trữ nên được chọn chủ yếu trên cơ sở về loại dữ liệu và hệ thống ứng dụng đang được phát triển
- Nhu cầu tương lai: Khơng chỉ nhóm dự án nên xem xét cơng nghệ lưu trữ trong cơng ty mà cịn phải nhận thức được các xu hướng và công nghệ hiện tại đang được các tổ chức khác sử dụng.
- Các tiêu chí khác cần được xem xét bao gồm chi phí, vấn đề cấp phép, kiểm soát đồng thời, dễ sử dụng, kiểm soát bảo mật và truy cập, phiên bản quản lý, quản lý lưu trữ, quản lý khóa, quản lý truy vấn, ngơn ngữ, ràng buộc và API.
5.2. Tối lưu hóa lưu trữ đối tượng vào RDBMS (Hệ quản trị cơ sở dữ liệu quan hệ)
- Có 2 khía cạnh tối ưu hóa: lưu trữ hiệu quả và tốc độ truy cập. - Tuy nhiên không thể đạt được 2 mục tiêu này cùng lúc vì:
Thiết kế tốt nhất cho việc tăng tốc độ truy cập có thể chiến nhiều dung lượng lưu trữ.
Thiết kế lưu trữ hiệu quả thì có tốc độ truy cập thấp hơn. a. Tối ưu hóa hiệu quả lưu trữ:
- Lưu trữ hiệu quả là khi các bảng trong CSDL khơng có hoặc có rất ít giá trị null ở các cột.
- Giá trị null cho thấy khơng gian đang bị lãng phí.
- Ngồi việc gây phí khơng gian lưu trữ các giá trị null còn gây ra lỗi và tăng khả năng xảy ra vấn đề với tính tồn vẹn của dữ liệu. Nulls đe dọa tính tồn vẹn của dữ liệu vì chúng khó diễn giải. Khơng thể chắc chắn về ý nghĩa thực sự của các giá trị null.
- Vì lý do trên cần loại bỏ các giá trị null khỏi bảng.
- Nên bắt đầu với mơ hình được thiết kế tệ trước. Nhóm dự án nên thực hiện theo các bước để kiểm tra hiệu quả lưu trữ của mơ hình. Các bước này tạo nên một q trình gọi là chuẩn hóa.
Các dạng chuẩn hóa:
- Dạng chuẩn 0: là một mơ hình chưa chuẩn hóa trước khi các quy tắc chuẩn hóa được áp dụng.
- Dạng chuẩn 1 (1NF): Nếu nó khơng dẫn đến các trường nhiều giá trị, các trường cho phép lưu trữ một bộ giá trị hoặc trường lặp lại, là các trường lặp lại trong một bảng để nhận nhiều giá trị.
- Dạng chuẩn 2 (2NF): u cầu đầu tiên là mơ hình dữ liệu ở dạng 1NF và thứ hai là mơ hình dữ liệu dẫn đến các bảng chứa các trường phụ thuộc vào tồn bộ khóa chính. Điều này có nghĩa là giá trị khóa chính cho mỗi bản ghi có thể xác định giá trị cho tất cả các trường khác trong bản ghi. Đôi khi các trường chỉ phụ thuộc vào một phần của khóa chính (tức là phụ thuộc một phần) và các trường này thuộc về một bảng khác.
- Dạng chuẩn 3 (3NF): xảy ra khi một mơ hình ở cả 1NF và 2NF và, trong các bảng kết quả, khơng có trường fi nào phụ thuộc vào các trường khóa khơng chính (nghĩa là phụ thuộc bắc cầu).
b. Tối ưu hóa tốc độ:
- Sau khi đã tối ưu hóa thiết kế lưu trữ đối tượng, kết quả cuối cùng là dữ liệu được trải rộng trên một số bảng. Khi dữ liệu từ nhiều bảng cần được truy cập hoặc truy vấn, các bảng phải được nối trước với nhau.
- Nhóm dự án có thể sử dụng một số kỹ thuật để cố gắng tăng tốc độ truy cập vào dữ liệu, bao gồm bất chuẩn hóa, phân cụm và lập chỉ mục. - Bất chuẩn hóa:
Bất chuẩn hóa làm giảm số lượng phép nối cần được thực hiện trong một truy vấn => tăng tốc độ truy cập.
Tuy nhiên, do yêu cầu bộ nhớ bổ sung và bản cập nhật tiềm năng dị thường, bất chuẩn hóa nên được áp dụng một cách tiết kiệm
Ba trường hợp có thể dựa vào sự khơng chuẩn hóa để giảm các liên kết và cải thiện hiệu suất:
Có thể áp dụng bất chuẩn hóa trong trường hợp bảng tra cứu, là bảng chứa mô tả giá trị
Các mối quan hệ 1-1.
Đôi khi việc đưa các thuộc tính của thực thể cha vào thực thể con trên mơ hình dữ liệu vật lý sẽ hiệu quả hơn.
- Phân cụm:
Tốc độ truy cập cũng bị ảnh hưởng bởi cách dữ liệu được truy xuất. Một cách để cải thiện tốc độ truy cập là giảm số lần phương tiện lưu trữ cần được truy cập trong một giao dịch.
Phương pháp là tập hợp các bản ghi với nhau về mặt vật lý để các bản ghi tương tự được lưu trữ gần nhau.
Với phân cụm tệp tin nội bộ, giống như các bản ghi trong bảng được lưu trữ cùng nhau theo một cách nào đó.
- Lập chỉ mục:
Là một tập hợp chứa các giá trị từ một hoặc nhiều cột trong bảng và vị trí của các giá trị trong bảng.
Chỉ mục là một trong những cách quan trọng nhất để cải thiện hiệu suất cơ sở dữ liệu. Bất cứ khi nào có vấn đề về hiệu suất, nơi đầu tiên cần xem xét là một chỉ mục..
Tất nhiên, các chỉ mục yêu cầu chi phí cao trong đó chúng chiếm dung lượng trên phương tiện lưu trữ. Ngoài ra, chúng cần được cập nhật khi các bản ghi trong bảng được chèn, xóa hoặc thay đổi
Nên áp dụng các chỉ mục một cách rộng rãi khi thiết kế hệ thống hỗ trợ quyết định:
Sử dụng chỉ mục một cách tiết kiệm cho các hệ thống giao dịch. Sử dụng nhiều chỉ mục để tăng thời gian phản hồi trong hệ thống hỗ trợ quyết định.
Đối với mỗi bảng, hãy tạo một chỉ mục duy nhất dựa trên khóa chính. Đối với mỗi bảng, hãy tạo một chỉ mục dựa trên khóa ngoại để cải thiện hiệu suất của các phép nối.
Tạo chỉ mục cho các trường được sử dụng thường xuyên để nhóm, sắp xếp hoặc tiêu chí
c. Ước tính kích thước lưu trữ dữ liệu:
- Kết hợp các ước tính của mình vào thơng số kỹ thuật phần cứng của máy chủ cơ sở dữ liệu để đảm bảo rằng phần cứng cơ sở dữ liệu đủ cho nhu cầu của dự án.
- Kích thước của cơ sở dữ liệu được dựa trên số lượng dữ liệu thô trong các bảng và các yêu cầu tổng quát của DBMS.
cơ sở dữ liệu của bạn cũng như tốc độ tăng trưởng dự kiến của nó theo thời gian.
5.3. Thiết kế các lớp truy cập và quản lý dữ liệu:
- Tùy thuộc vào ứng dụng, một quy tắc đơn giản cần tuân theo là phải có một lớp truy cập và thao tác cho từng lớp cụ thể.
- Một phương pháp tiếp cận cụ thể đã được đề xuất để hỗ trợ việc triển khai các lớp thao tác và truy cập dữ liệu là sử dụng một thư viện ánh xạ quan hệ đối tượng dưới dạng Hibernate.
- Cho phép ánh xạ các đối tượng được viết bằng Java để được lưu trữ trong một RDBMS.
- Thay vì sử dụng ngơn ngữ lập trình hướng đối tượng để triển khai các lớp thao tác và truy cập dữ liệu, với Hibernate, chúng được triển khai trong các tệp XML có chứa ánh xạ.
- Mơ hình hóa ánh xạ trong tệp XML ngăn các chi tiết về truy cập và thao tác dữ liệu lọt vào biểu diễn miền vấn đề.
5.4. Các yêu cầu phi chức năng và thiết kế lớp quản lý dữ liệu:
- Các yêu cầu hoạt động đối với lớp quản lý dữ liệu bao gồm các vấn đề xử lý công nghệ đang được sử dụng để hỗ trợ tính duy trì của đối tượng. Tuy nhiên, sự lựa chọn phần cứng và hệ điều hành giới hạn sự lựa chọn công nghệ và định dạng của đối tượng.
- Yêu cầu về hiệu suất chính đối với lớp quản lý dữ liệu là tốc độ và cơng suất. Tùy thuộc vào dự đốn và sau đó là thực tế các kiểu sử dụng của các đối tượng đang được lưu trữ, các cách tiếp cận lập chỉ mục và bộ nhớ đệm khác nhau có thể cần thiết. Khi xem xét phân phối các đối tượng qua mạng, cân nhắc về tốc độ có thể khiến các đối tượng được sao chép trên các nút khác nhau trong mạng.
- Yêu cầu bảo mật:
Đảm bảo rằng các đối tượng được sao chép và lưu trữ thường xuyên trong trường hợp kho lưu trữ đối tượng bị hỏng hoặc khơng sử dụng được.
Các đối tượng được mã hóa an tồn hơn các đối tượng khơng được mã hóa nhưng q trình mã hóa và giải mã các đối tượng sẽ làm chậm hệ thống.
Các kiểu truy nhập khác nhau có thể được đặt chỉ cấp quyền truy cập cho những người được uỷ quyền.
- u cầu văn hóa, chính trị: Có thể ảnh hưởng đến định dạng dữ liệu. Ví dụ: Ngày tháng nên được lưu trữ ở định dạng nào hoặc dữ liệu sẽ được