Multi-tenant Container Database Architecture (KIến trúc cơ sở dữ liệu - Multitenant trong Oracle)
Multi-tenant Container Database Architecture (KIến trúc cơ sở dữ liệu - Multitenant trong Oracle)

Multi-tenant Container Database Architecture (KIến trúc cơ sở dữ liệu - Multitenant trong Oracle)

Giới thiệu về cơ sở dữ liệu Container Oracle

Khuyến nghị dùng Database Container với database nhỏ (vì nhiều database to thì điều này không hiệu quả), database dạng service hoặc dưới 1 TB thì okay (nhưng với 20 database thì backup là vấn đề khó).

-Cơ sở dữ liệu Multitenant container: Có 1 instance cơ sở dữ liệu và các file cơ sở dữ liệu ở dạng vật lý (database mẹ - CDB)

Database này là database khởi thủy, bắt buộc phải có trong kiến trúc. Nó có nhiệm vụ lưu trữ, quản lý các thông tin điều khiển chung. Nó cũng sẽ có các background process để xử lý các công việc chung.

-Cơ sở dữ liệu Pluggable (database con - PDB, chúng gắn vào database mẹ): là tập các schema dạng logic, để user và ứng dụng, là các cơ sở dữ liệu độc lập, đây chính là nơi lưu trữ các dữ liệu thực sự của người dùng


Ghi chú: Thực ra, CDB cũng có thể lưu trữ dữ liệu thực sự, nhưng Oracle khuyến nghị không nên lưu dữ liệu trong CDB để tối ưu cũng như tránh các xung đột ảnh hưởng đến hiệu năng.

Đối với người dùng, PDB hoàn toàn giống với các database bình thường, từ cách kết nối đến các đối tượng bên trong như user, bảng, view, procedure.

Còn xét sâu hơn ở kiến trúc phía dưới, các PDB sống dựa vào CDB. CDB cung cấp các process, memory để giữ cho PDB hoạt động (kiểu như mẹ nuôi con, con không có mẹ, con không lớn được :v)


Có một PDB đặc biệt được sinh ra khi mới tạo CDB, nó gọi là PDB hạt giống (PDB$SEED). Nó giống như 1 mẫu (hay template) để mỗi khi cần tạo ra một PDB mới, Oracle sẽ sử dụng PDB$SEED này để làm mẫu.

Hình ảnh bên trên là danh sách các PDB đang có trong CDB, trong đó PDB$SEED là PDB hạt giống, nó chỉ có thể đọc, chứ không thể sửa đổi.


-Mọi cơ sở dữ liệu pluggable databases chia sẻ:

+) Tiến trình Background

+) Bộ nhớ chia sẻ (SGA)

+) Oracle metadata


Nhìn vào tấm ảnh trên ta có thể thấy

Sẽ có một Instance chung vùng nhớ SGA, chứa các PDB. Trong ảnh có tầm 6,7 cái PDB

Trong thực tế, có thể liên đến 100 cái PDB :v

Có background process chung ở đây

Tương tự ở trong root container, ở trong mấy cái PDB (như trong hình là sales, hr, …), cũng có mấy file là System và Sysaux. Bản chất chúng như kiểu là template, để lúc tạo cái mới được nhanh chóng hơn


Chú ý: Mọi PDB chia sẻ

+) Tiến trình background

+) Vùng nhớ

+) Oracle metadata

+) Redo log files

+) Control files

+) Undo tablespace



Lợi tích khi sử dụng mô hình Multitenant

1.Khả năng tận dụng tối đa tài nguyên

Như đề cập ở trên, 1 backgroup process có thể phục vụ cho nhiều PDB


2.Quản lý tập trung

Ví dụ: khi nâng cấp phiên bản, thì chúng ta chỉ cần thực thi ở mức CDB (ở databse mẹ) thì tất cả PDB (database con) cũng sẽ được áp dụng theo


3.Tính linh động

Xét trong 1 bài toán: Di chuyển 1 database từ nơi này sang nơi khác

Thì chúng ta chỉ cần:

Rút phích (unplug) từ PDB ra khỏi CDB cũ -> di chuyển datafile của PDB sang chỗ mới -> Cắm phích (plug) PDB vào CDB mới

Hình dung đơn giản: như chúng ta rút phích cắm điện từ ổ cắm này -> sang ổ cắm khác và cắm nó vào :v (vì bản chất là máy cái PDB con, chúng gắn vào CDB mẹ, CDB mẹ chứa chúng nó :v)


Xét theo bài toán khác:

Theo nghiệp vụ, cần tạo một database mới. Thay vì, như ở bản 11G, cần dùng dbca tạo database, chọn nơi lưu trữ data file, thiết lập tham số, cấp phát memory, blah blah + đợi 30-40 phút, thì bây giờ chỉ cần một câu lệnh + 1-3 phút -> có ngay 1 database sẵn sàng để sử dụng.






To view or add a comment, sign in

More articles by Lê Hồng Hải

Explore topics