Trong Oracle Multitenant, có các khái niệm quan trọng liên quan đến các container trong một cơ sở dữ liệu container (CDB):
Các khái niệm quan trọng nhất trong kiến trúc multitenant Container Database CDB
- Container Database
- Root Container
- Seed Container
- Pluggable Database
- Application Root Container
- Application PDB
Xem thêm: https://datalinks.vn/kien-truc-oracle-multitenant/
- CDB$ROOT (Root Container):
- Đây là container gốc trong một CDB (Container Database). Nó chứa các metadata chung cho toàn bộ CDB, bao gồm các cấu trúc dữ liệu của hệ thống và các đối tượng hệ thống. Các thành phần chung, như người dùng cơ sở dữ liệu và quyền, đều được quản lý trong CDB$ROOT.
- Các PDB (Pluggable Databases) chia sẻ dữ liệu từ CDB$ROOT, nhưng không thể thay đổi các đối tượng trong CDB$ROOT trực tiếp từ các PDB.
- PDB$SEED (Seed Container):
- Đây là một PDB đặc biệt, được sử dụng như một mẫu để tạo ra các PDB mới. PDB$SEED không được sử dụng cho mục đích vận hành hay lưu trữ dữ liệu người dùng mà chỉ để phục vụ cho việc tạo ra PDB khác.
- Nó có thể được sao chép để tạo các Pluggable Databases mới một cách nhanh chóng. Người dùng không thể thay đổi cấu trúc của PDB$SEED.
- PDB (Pluggable Database):
- Dữ liệu và các đối tượng thuộc về một ứng dụng hoặc một cơ sở dữ liệu người dùng cụ thể được lưu trữ và quản lý.
- Pluggable Databases mới được tạo ra từ PDB$SEED.
- APP_ROOT (Application Root Container):
- APP_ROOT là một loại container đặc biệt được giới thiệu trong Oracle 12.2 để hỗ trợ các ứng dụng và cơ sở dữ liệu theo kiến trúc đa tầng. APP_ROOT chứa các định nghĩa và dữ liệu dùng chung cho một tập hợp các APP_PDB.
- Trong APP_ROOT, các thành phần của ứng dụng có thể được quản lý chung, như các bảng hoặc mã PL/SQL mà các APP_PDB có thể sử dụng.
- APP_PDB (Application PDB):
- APP_PDB là một Pluggable Database kết nối với một APP_ROOT. Nó chia sẻ và kế thừa các thành phần chung từ APP_ROOT, nhưng vẫn có thể chứa các đối tượng dữ liệu riêng biệt mà chỉ APP_PDB đó sử dụng.
- Đây là cách để các ứng dụng đa người dùng có thể duy trì các bảng dùng chung và quản lý các thành phần chung của ứng dụng trong khi cho phép lưu trữ dữ liệu người dùng cụ thể trong các APP_PDB riêng lẻ.
Trong một PDB (Pluggable Database), dữ liệu và các đối tượng thuộc về một ứng dụng hoặc một cơ sở dữ liệu người dùng cụ thể được lưu trữ và quản lý. Dưới đây là các thành phần chính thường có trong một PDB:
1. Dữ liệu người dùng:
- Bảng (Tables): Chứa dữ liệu của ứng dụng hoặc dữ liệu nghiệp vụ. Mỗi bảng có thể chứa các bản ghi liên quan đến hoạt động của người dùng hoặc dữ liệu của tổ chức.
- Chỉ mục (Indexes): Các cấu trúc dữ liệu phục vụ việc truy vấn nhanh các bản ghi trong bảng.
- Các đối tượng khác (Views, Synonyms): Tập hợp các truy vấn hoặc định danh thay thế cho các đối tượng trong cơ sở dữ liệu, giúp người dùng dễ dàng truy cập và thao tác.
2. Lược đồ (Schemas):
- Mỗi PDB có thể chứa một hoặc nhiều lược đồ (schemas), mỗi lược đồ chứa các đối tượng của cơ sở dữ liệu như bảng, chỉ mục, views, và các thủ tục (procedures) được tạo bởi một người dùng cụ thể.
3. Người dùng (Users):
- Mỗi PDB có thể có nhiều người dùng được cấp quyền để truy cập và thao tác trên các đối tượng bên trong PDB.
- Mỗi người dùng có thể được phân quyền khác nhau dựa trên vai trò (roles) và quyền truy cập (privileges).
4. Các quyền và vai trò (Privileges and Roles):
- Các quyền truy cập vào dữ liệu hoặc thực hiện các thao tác cụ thể trên đối tượng được quản lý riêng biệt trong mỗi PDB.
- Các vai trò (roles) có thể được cấp cho người dùng hoặc nhóm người dùng để quản lý quyền một cách hiệu quả.
5. Thủ tục và hàm (Procedures and Functions):
- PL/SQL Procedures, Functions: Các đoạn mã được viết bằng PL/SQL hoặc các ngôn ngữ khác để thực hiện các chức năng hoặc quy trình nghiệp vụ phức tạp.
6. Triggers:
- Triggers là các đoạn mã được tự động thực thi khi có một sự kiện cụ thể xảy ra trong PDB (chẳng hạn như INSERT, UPDATE, DELETE trên bảng).
7. Các gói (Packages):
- Packages là các nhóm chức năng và thủ tục PL/SQL liên quan được gom lại với nhau, cung cấp khả năng tổ chức mã và tái sử dụng.
8. Sequences:
- Sequences là các đối tượng tạo số tự động để đảm bảo các giá trị duy nhất, thường được sử dụng trong các khóa chính của bảng.
9. Bộ nhớ riêng (Local Undo):
- Trong một số phiên bản Oracle, mỗi PDB có thể có local undo tablespace, cho phép lưu trữ thông tin về các giao dịch hủy (undo data) một cách độc lập với các PDB khác.
10. Các Tablespaces riêng (Local Tablespaces):
- Mỗi PDB có thể có các tablespaces riêng để lưu trữ dữ liệu và chỉ mục của nó. Các tablespaces này tách biệt với các tablespaces khác trong CDB.
11. Log Files:
- Mỗi PDB có thể có các log files riêng biệt cho các giao dịch của nó, mặc dù việc quản lý log files chủ yếu được thực hiện ở cấp CDB.
12. Các đối tượng và dữ liệu khác:
- Materialized Views: Dùng để lưu trữ dữ liệu đã được tính toán trước nhằm tối ưu hóa các truy vấn.
- Data types: Các kiểu dữ liệu định nghĩa trong PDB phục vụ cho việc lưu trữ thông tin trong các bảng.
Tóm lại, một PDB chứa toàn bộ dữ liệu và các đối tượng cần thiết để vận hành một cơ sở dữ liệu ứng dụng độc lập, từ các bảng dữ liệu, người dùng, thủ tục đến các bảng chỉ số, lược đồ, và các đối tượng khác liên quan đến cơ sở dữ liệu. Mỗi PDB có thể hoạt động như một cơ sở dữ liệu độc lập bên trong một môi trường multitenant.
Trong Application PDB (APP_PDB) trong Oracle Multitenant, dữ liệu và các đối tượng liên quan đến ứng dụng được lưu trữ tương tự như trong một PDB thông thường, nhưng có một số điểm khác biệt vì APP_PDB thường liên kết với Application Root (APP_ROOT). Dưới đây là những thông tin chính có trong Application PDB:
1. Dữ liệu người dùng riêng biệt:
- APP_PDB chứa dữ liệu người dùng và ứng dụng riêng của nó. Mỗi APP_PDB có thể chứa các bảng, chỉ mục, và các đối tượng khác liên quan đến dữ liệu ứng dụng cụ thể mà nó phục vụ.
- Dữ liệu trong APP_PDB không nhất thiết phải chia sẻ với các Application PDB khác, mặc dù có thể kế thừa các thành phần chung từ APP_ROOT.
2. Thành phần ứng dụng kế thừa từ APP_ROOT:
- APP_PDB có khả năng kế thừa các thành phần ứng dụng đã được định nghĩa trong APP_ROOT. Điều này bao gồm:
- Bảng ứng dụng: Bảng được định nghĩa trong APP_ROOT và có thể chia sẻ giữa các APP_PDB.
- Thủ tục (Procedures) và hàm (Functions): Thủ tục và hàm PL/SQL chung cho ứng dụng cũng có thể được chia sẻ từ APP_ROOT và sử dụng trong APP_PDB.
- Gói (Packages): Các gói PL/SQL có thể được chia sẻ từ APP_ROOT vào APP_PDB để sử dụng chung.
- Những thành phần được định nghĩa ở APP_ROOT thường là những phần chung của ứng dụng mà nhiều APP_PDB khác nhau có thể sử dụng.
3. Dữ liệu và đối tượng tùy chỉnh:
- Mặc dù APP_PDB có thể kế thừa các thành phần chung từ APP_ROOT, nhưng nó cũng có thể chứa các đối tượng dữ liệu riêng, phục vụ cho các yêu cầu cụ thể của ứng dụng tại từng phân vùng người dùng (client). Các đối tượng này bao gồm:
- Bảng riêng: Các bảng riêng biệt có dữ liệu độc lập không chia sẻ với các APP_PDB khác.
- Triggers, Views, Synonyms: Các đối tượng được thiết kế để tối ưu hóa quy trình xử lý dữ liệu riêng của APP_PDB.
4. Người dùng và quyền riêng biệt:
- APP_PDB có thể có người dùng và quyền quản lý riêng biệt. Mặc dù một số quyền có thể được kế thừa từ APP_ROOT, nhưng mỗi APP_PDB sẽ quản lý quyền truy cập vào các dữ liệu và đối tượng của mình một cách độc lập.
- Người dùng trong APP_PDB có thể chỉ có quyền truy cập vào APP_PDB đó mà không có quyền trong các APP_PDB khác.
5. Các tablespace và undo riêng:
- Mỗi APP_PDB có thể có tablespaces riêng để lưu trữ dữ liệu và chỉ mục, mặc dù chúng cũng có thể chia sẻ tablespaces với các APP_PDB khác hoặc với APP_ROOT.
- APP_PDB có thể có local undo nếu được cấu hình, cho phép quản lý dữ liệu undo riêng biệt với các APP_PDB khác.
6. Thành phần ứng dụng local (Local Application Components):
- APP_PDB có thể chứa các thành phần ứng dụng cụ thể được cài đặt riêng biệt mà không chia sẻ với các APP_PDB khác. Điều này bao gồm các logic, thủ tục, bảng, và đối tượng được cài đặt riêng cho mỗi APP_PDB để phục vụ các nhu cầu nghiệp vụ khác nhau.
7. Đối tượng liên kết với ứng dụng:
- APP_PDB có thể chứa các đối tượng và dữ liệu đặc thù của một phần ứng dụng, chẳng hạn như các bảng lưu trữ giao dịch người dùng, các bộ chỉ mục và các thủ tục xử lý giao dịch, cũng như các báo cáo đặc biệt.
8. Phiên bản ứng dụng (Application Versions):
- APP_PDB có thể sử dụng các phiên bản ứng dụng khác nhau được quản lý trong APP_ROOT. Điều này cho phép triển khai nhiều phiên bản của một ứng dụng mà không làm ảnh hưởng đến các phiên bản khác.
Chốt lại APP_PDB có gì:
- APP_PDB chứa dữ liệu và các thành phần ứng dụng riêng biệt phục vụ một phần ứng dụng hoặc một nhóm người dùng cụ thể.
- APP_PDB có thể kế thừa các thành phần chung từ APP_ROOT, bao gồm các bảng, thủ tục, và gói ứng dụng chung, nhưng nó vẫn duy trì khả năng lưu trữ và xử lý các dữ liệu và logic riêng.
- Quản lý trong APP_PDB linh hoạt cho phép mỗi ứng dụng trong APP_PDB hoạt động độc lập nhưng vẫn chia sẻ các thành phần ứng dụng chung từ APP_ROOT, giúp tối ưu hóa quản lý và triển khai ứng dụng đa tầng.