/
Multi-tenant Table Administration Multi-tenant Table Administration

Multi-tenant Table Administration - PowerPoint Presentation

conchita-marotz
conchita-marotz . @conchita-marotz
Follow
395 views
Uploaded On 2017-10-10

Multi-tenant Table Administration - PPT Presentation

Flexibility without the complications Richard Banville Software Fellow OpenEdge Matthew Baker Principal Software Engineer OpenEdge Agenda 1 Administration Architecture Multitenant Administration How to ID: 594589

data tenant domain table tenant data table domain customers area service items orders group lowes index multi state tenants

Share:

Link:

Embed:

Download Presentation from below link

Download Presentation The PPT/PDF document "Multi-tenant Table Administration" is the property of its rightful owner. Permission is granted to download and print the materials on this web site for personal, non-commercial use only, and to display it on your personal computer provided you do not modify the materials and that you retain all copyright notices contained in the materials. By downloading content from our website, you accept the terms of this agreement.


Presentation Transcript

Slide1

Multi-tenant Table Administration

Flexibility without the complications

Richard Banville

Software Fellow, OpenEdge

Matthew Baker

Principal Software Engineer, OpenEdgeSlide2

Agenda

1

Administration Architecture

Multi-tenant Administration: How to

Utility usage examples

Database Admin Console Demo

2

3

4Slide3

Multi-tenant Identity Definitions

Tenant“Named” group of users

Share same application and data

Multi-tenancy

Deployment supporting multiple tenantsDefault tenant

Users who do not assert tenant identitySuper tenantTenant with ability to access/manage data of any tenantMulti-tenant groupMultiple tenants sharing data for a specific multi-tenant table Slide4

Multi-tenant Allocation Definitions

Table instanceDefined by a single table definition (schema)

Each

table

instance containsA

data segment for the record dataA separate data segment for each index/lob of the tableEach tenant/group has a different table instance A tenant need not instantiate every multi-tenant tableData segmentTenant/group specific chain of data for each table/index/lob (DB object)

Stored/encapsulated in its own physical data partitionPhysical data partitionManaged storage for each DB object of a multi-tenant table instance Do not span storage areas

Name index

Record Data

Record Data

Name index

Customer

Record Data

Blob Data

Name Index

Cust

-num IndexSlide5

Multi-tenant Administration

Tenant Administration

Tenants

Groups

Domains

UsersSecurity/Data AccessPerformanceMonitoringConfigurationData AdministrationTable definition

AllocationLocationMaintenanceWhat needs administration?Slide6

Physical Model

ExamplesSlide7

Physical Model By Tenant By Data And Datatype

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

A7

A8

A9

A10

HD_CustOrder_Data

HD_CustOrderIdxs

HD_ItemData

HD_ItemIdxs

A11

A12

A13

A14

Lowes_CustOrder_Data

Lowes_CustOrderIdxs

Lowes_ItemData

Lowes_ItemIdxs

A15

A16

Default_Data_Area

A17

A18

Shared_Data

Shared_Indexes

Default_Index_Area

*Type II Storage Areas Slide8

Physical Model By Data and

Datatype

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

Data segregation eases maintenance

Area7

Area8

CustOrder

Data

CustOrderIdxs

ItemData

ItemIdxs

A11

A12

Shared Data

Shared Indexes

Area9

Area10Slide9

Example: Adding A New Tenant “AceHardware

Data

Tenancy Layer

AceHardware

Shared

Customers

Orders

Items

A23

A24

A25

A26

Ace_CustOrder

Data

Ace_CustOrderIdxs

Ace_ItemData

Ace_ItemIdxs

Assign partition locations next

Type II Storage Areas

Tenant Access: Allowed, disallowed

Determine physical layout 1st

Create tenant w/delayed allocationSlide10

New Inventory Table With Existing Tenants

Data

Tenancy Layer

HomeDepot

Lowes

Customers

Orders

Items

Type II Storage Areas

A7

A8

A9

A10

HD_CustOrder_Data

HD_CustOrderIdxs

HD_ItemData

HD_ItemIdxs

A11

A12

A13

A14

Lowes_CustOrder_Data

Lowes_CustOrderIdxs

Lowes_ItemData

Lowes_ItemIdxs

Customers

Orders

Items

Example: Adding an Inventory tableSlide11

New Inventory Table With Existing Tenants

Data

Tenancy Layer

HomeDepot

Lowes

Customers

Orders

Items

…Type II Storage Areas

A7

A8

A9

A10

HD_CustOrder_Data

HD_CustOrderIdxs

HD_ItemData

HD_ItemIdxs

A11

A12

A13

A14

Lowes_CustOrder_Data

Lowes_CustOrderIdxs

Lowes_ItemData

Lowes_ItemIdxs

Customers

Orders

Items

A19

A20

HD_Inventory_Data

HD_InventoryIdxs

A21

A22

Lowes_Inventory_Data

Lowes_InvIdxs

Physical layout firstSlide12

New Inventory Table With Existing Tenants

Data

Tenancy Layer

HomeDepot

Lowes

Customers

Orders

Items

…Type II Storage Areas

A7

A8

A9

A10

HD_CustOrder_Data

HD_CustOrderIdxs

HD_ItemData

HD_ItemIdxs

A11

A12

A13

A14

Lowes_CustOrder_Data

Lowes_CustOrderIdxs

Lowes_ItemData

Lowes_ItemIdxs

Customers

Orders

Items

Inventory

Inventory

A19

A20

HD_Inventory_Data

HD_InventoryIdxs

A21

A22

Lowes_Inventory_Data

Lowes_InvIdxs

Define multi-tenant tableSlide13

New Inventory Table With Existing Tenants

Data

Tenancy Layer

HomeDepot

Lowes

Customers

Orders

Items

…Type II Storage Areas

A7

A8

A9

A10

HD_CustOrder_Data

HD_CustOrderIdxs

HD_ItemData

HD_ItemIdxs

A11

A12

A13

A14

Lowes_CustOrder_Data

Lowes_CustOrderIdxs

Lowes_ItemData

Lowes_ItemIdxs

Customers

Orders

Items

Inventory

Inventory

A19

A20

HD_Inventory_Data

HD_InventoryIdxs

A21

A22

Lowes_Inventory_Data

Lowes_InvIdxs

Tenant specific space allocation immediate or delayedSlide14

Groups

Tenants have

their own table instance

if:

Not part of a

group

Data Tenancy Layer

HomeDepot TaxCode

StateCustomers

Lowes TaxCode

State

Customers

…Slide15

Tenants

have their own table instance if:Not

part of a

group

Group dataShared amongst tenants in the group

Can exists with no tenants assignedFollow allocation rules already definedGroup associated with only one table instance

TaxCode_DataState_DataGroups

Data

Tenancy Layer HomeDepot

TaxCode

State

Customers

A30

TaxCode_Indexes

State_Indexes

TaxCodeGroup

TaxCodes

Lowes

TaxCode

State

Customers

StateGroup

States

A31Slide16

Tenants

have their own table instance if:Not

part of a

group

Group dataShared amongst tenants in the group

Can exists with no tenants assignedFollow allocation rules already definedGroup associated with only one table instance

TaxCode_DataState_DataGroups

Data

Tenancy Layer HomeDepot

TaxCodeGroup

StateGroup

Customers

A30

TaxCode_Indexes

State_Indexes

TaxCodeGroup

TaxCodes

Lowes

TaxCodeGroup

StateGroup

Customers

StateGroup

States

A31Slide17

I think I get it but,

what do I do to do it?Slide18

Administration mechanisms

Multi-tenant Administration

Appearance of database isolation where possible

Data Dictionary

SQL DDL Database Admin Console

Command line tools ABL administrative APIsSlide19

Multi-tenant Administration

Administration mechanisms

Database enablement (new or existing database):

proutil describe: 14 Multi-tenancy Yes Create storage areasNo new syntax to database structure files (.st)Coordinate with database designers/developersHave a plan based on physical model

Naming conventions can ease your painAppearance of database isolation where possible

Data Dictionary SQL DDL Database Admin Console

Command line tools

ABL administrative APIs

proutil <db> -C enableMultitenancy

dbutil

prostrct

add[online]

<db> <

addmt

>

.

stSlide20

Identify Multi-tenant Tables

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_Domain Rich@HD_Domain

Rich@Lowes1 John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

Tenant

HD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4Slide21

Object Creation Considerations w/out Tenants

Convert existing table to multi-tenant table

All

objects of table instance MUST reside in TII storage area

One way conversion

Existing data considered “Default” partitionCreate new multi-tenant tablesNo need for default partition (optional)New multi-tenant “default index” goes in same area as tableAdding new indexes with new tablesActivation state at index level, NOT tenant levelCan be changed after the fact

Schema manipulation tools such as data dictionary, SQL DDL, etcSlide22

Sequence Creation Considerations

SequencesShared or

tenant specific

Definition database wide (max/min/cycle values)

Current value tenant specific

Not group specificAvoid multi-tenant sequences for group dataGroup data is shared amongst specific tenantsSlide23

Tenant Creation

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_Domain Rich@HD_Domain

Rich@Lowes1 John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

Tenant

HD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4Slide24

Tenant Creation Using ABL Multi-tenant APIs

using

OpenEdge.DataAdmin

.*.

define variable service as

DataAdminService no-undo. service = new DataAdminService("demo").

define variable tenant as ITenant no-undo.define variable partition as IPartition no-undo.tenant = new Tenant("HomeDepot").assign

tenant:Type = "Regular" /* or super */ tenant:IsOnline = yes tenant:Description = "Describe HomeDepot"

tenant:DefaultDataArea = service:GetArea("Data Area") tenant:DefaultIndexArea = service:GetArea("Index Area")

tenant:DefaultLobArea = service:GetArea("Lob Area") tenant:DefaultAllocation = "Delayed". /* Immediate or None */ /* Create the tenant */

service:CreateTenant(tenant).… /* continued on next page */

Code?

Why are you showing me code?Slide25

Tenant Creation Using ABL Multi-tenant APIs

using

OpenEdge.DataAdmin

.*.

define variable service as

DataAdminService no-undo. service = new DataAdminService("demo").

define variable tenant as ITenant no-undo.define variable partition as IPartition no-undo.tenant = new Tenant("HomeDepot").assign

tenant:Type = "Regular" /* or super */ tenant:IsDataEnabled = yes tenant:Description = "Describe HomeDepot"

tenant:DefaultDataArea = service:GetArea("Data Area") tenant:DefaultIndexArea = service:GetArea("Index Area")

tenant:DefaultLobArea = service:GetArea("Lob Area") tenant:DefaultAllocation = "Delayed". /* Immediate or None */ /* Create the tenant */

service:CreateTenant(tenant).… /* continued on next page */

Set Area

Defaults

Reference

Interfaces,

ServicesSlide26

Partition Assignment

/* continued from previous page */

assign

partition =

tenant:Partitions:Get(service:GetTable("Customer")) partition:Area

= service:GetArea("HD CustomerArea“) partition = tenant:Partitions:Get(service:GetTable("Order")) partition:Area

= service:GetArea("HD OrderArea") partition = tenant:Partitions:Get(service:GetTable("Item")) partition:Area

= service:GetArea("HD ItemArea") partition:AllocationState = “None”.

/* Allocate Space */tenant:Allocate(). /* indicate allocation of everything in delayed state */Service:UpdateTenant(tenant).delete object service.

Allocate

Reassign partition location information

prior

to allocation.

Allocation State: Delayed or NoneSlide27

Partition Location Re-assignment

Reassign partition location

after

allocation

Table/index move

OR Dump, de-allocate, reassign via APIs/tools, reloadUsing table/index move utilitiesNew de-allocate utility (bye-bye data)Binary Dump: data is tenant indifferentDump file: <table>_<

ID>{T|G}_<tenant | group>.bd[n]Example: customer_2T_HomeDepot.bd1

proutil <db>

-C deallocate <table> tenant

<tenant>

proutil <db> -C tablemove

<table> <area>

tenant

<tenant>

proutil

<db>

-

C

dump

<table>

tenant

<tenant>

* Utilities also support “group” based operationsSlide28

Partition Location Re-assignment

Reassign partition location

after

allocation

Table/index move

OR Dump, de-allocate, reassign via APIs/tools, reloadUsing table/index move utilitiesNew de-allocate utility (bye-bye data)Binary Dump: data is tenant indifferentDump file: <table>_<

ID>{T|G}_<tenant | group>.bd[n]Example: customer_2T_HomeDepot.bd1

proutil <db>

-C deallocate <table> tenant

<tenant>

proutil <db> -C tablemove

<table> <area>

tenant

<tenant>

proutil

<db>

-

C

dump

<table>

tenant

<tenant>

* Utilities also support “group” based operationsSlide29

Partition Location Re-assignment

Reassign partition location

after

allocation

Table/index move

OR Dump, de-allocate, reassign via APIs/tools, reloadUsing table/index move utilitiesNew de-allocate utility (bye-bye data)Binary Dump: data is tenant indifferent

proutil <db> -C

deallocate <table> tenant <tenant>

proutil

<db> -C tablemove <table> <area> tenant

<tenant>

proutil

<db>

-

C

dump

<table>

tenant

<tenant>

* Utilities also support “group” based operationsSlide30

Using Domains

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_Domain Rich@HD_Domain

Rich@Lowes1 John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

Tenant

HD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4Slide31

Domain Creation

Domain

Tenant:

Domains ALWAYS associated w/tenants

(default, regular named tenant, super tenant)NOTE:Renaming a tenant “cascades” the rename to the domains

Renaming a domain “cascades” the rename to the users

define variable domain as IDomain no-undo.define variable cAccessCode as character init “secret-code" no-undo.domain = new Domain

("HD_Domain")assign domain:DomainType = service:GetDomainType("_oeusertable

") domain:AccessCode = cAccessCode domain:Tenant =

service:GetTenant("HomeDepot") domain:IsEnabled = yes domain:Description

= "

HomeDepot

security domain".

service:CreateDomain

(domain). Slide32

Adding Users

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_Domain Rich@HD_Domain

Rich@Lowes1 John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

Tenant

HD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4Slide33

User Creation

Users

D

omain  Tenant

(Adding users is optional)Setting user establishes tenant identity determining data access

define variable domain as IDomain no-undo.define variable auser as IUser no-undo.

auser = new User(“fblake").assign auser:GivenName = “Frank“ auser:SurName = “Blake"

auser:Password = “HD_CEO".domain = service:GetDomain("HD_Domain").domain:Users:Add

(auser). service:UpdateDomain(domain).

User Id:Password:fblake

HD_CEO

***

Userid

/Password is incorrect.

Nothing

new hereSlide34

User Creation

Users

D

omain

 Tenant (Adding users is optional)Setting user establishes tenant identity determining data access

NOTE: “Can” permissions extended to tenant qualified userid

define variable domain as IDomain no-undo.define variable auser as IUser no-undo.

auser = new User(“fblake").assign auser:GivenName = “Frank“

auser:SurName = “Blake" auser:Password = “HD_CEO".domain = service:GetDomain("

HD_Domain").domain:Users:Add(auser). service:UpdateDomain(domain).

User Id:

Password:

fblake@HD_Domain

HD_CEO

Nothing

new hereSlide35

All Done

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_Domain Rich@HD_Domain

Rich@Lowes1 John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

Tenant

HD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4Slide36

Group Creation

Data

Tenancy Layer

HomeDepot_NH1

Customers

CreditCheckGroup

Credit

HomeDepot_NH2

Customers

Credit Data

A300

Credit Indexes

A301

HD #2 Data Area

A200

HD #2 index Area

A201

HD #1 Data Area

A100

HD #1 index Area

A101

Type II Storage Areas Slide37

Group Creation

Data

Tenancy Layer

HomeDepot_NH1

CreditCheckGroup

Customers…

CreditCheckGroup

CreditHomeDepot_NH2

CreditCheckGroup

Customers

Credit Data

A300

Credit Indexes

A301

HD #2 Data Area

A200

HD #2 index Area

A201

HD #1 Data Area

A100

HD #1 index Area

A101

Type II Storage Areas Slide38

Group Creation

Data

Tenancy Layer

HomeDepot_NH1

CreditCheckGroup

HD_ItemsGroup

Customers…

CreditCheckGroup

Credit

HomeDepot_NH2

CreditCheckGroup

HD_ItemsGroup

Customers

HD_ItemsGroup

Items

Credit Data

HD Item Data

A300

Credit Indexes

HD Item Indexes

A301

HD #2 Data Area

A200

HD #2 index Area

A201

HD #1 Data Area

A100

HD #1 index Area

A101

Type II Storage Areas

Multiple Home Depot tenants sharing

same item list, same credit check data.Slide39

Adding Tenants To Groups

Tenant’s table instance allocated?It’s a bit more difficult.

Move or remove data from tenant’s table instance

Dump/load, buffer copy/delete via super tenant, etc

De-allocate tenant’s table instance (bye-bye data)

Add tenant as member of the group for that tableSee previous slide

proutil <db> -C deallocate <table>

[ tenant <name> |

group <name> ]Slide40

Adding More Multi-tenant Tables

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_Domain Rich@HD_Domain

Rich@Lowes1 John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

Tenant

HD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4Slide41

Adding A New Multi-tenant Table

Use favorite tool

DB admin tool, navigator, load .

df

Default allocation state (per tenant/group): Immediate

Creates new storage partition for each object of the table instanceAllocation performed for each tenant/groupDelayed or NoneWill not allocate any storageAllows non-default area assignment

Once tenants exist…Slide42

Adding indexes to existing tables

Activate at creationIndex wide, not tenant specific

Can

be slow to activate immediately (off-line)

Index activate online

Concurrent for different tables of same tenantConcurrent for same or different table between tenantsR-code dependenciesExisting static queries maintain but don’t use newly activated indexTenant “mixed” activation with updated r-codeIndex name is inactive and cannot be referenced. (995)

proutil

<db> -C idxactivate <index-name> [

tenant <name> | group <name>

]Slide43

Maintenance & Monitoring

ExamplesSlide44

Various Data Definition Files

Data dump

files (.d)

Output directory change only: <

tenant>/<

table>.dBinary dump files (.bd)File name format change only - <table>.bd[

n] becomes:<table>_<#>T_<tenant>.bd

[n] OR <table>_<#>G_<group>.bd[n

]customer_5T_HomeDepot.bd1 OR state_2G_itemGroup.bd1 Bulkload file definition (.fd)No change

Data definition files (.df)

ADD TABLE “Customer” MULTITENANT yes

AREA "Customer/Order Area”

Flexibility with compatibilitySlide45

Maintenance Utilities

Area and object utilities now support tenant/group keyword

Database wide utilities remain unchanged

Roll forward

Truncate bi

Backup/restore

Auditing*

Increase startup parameters to

Move

schema

Set/display create/toss limits

Index move/table move

Binary dump/load

Index check

Index rebuild

Index fix

Index compact

Index

activate

proutil

<db>

-C

dbanalys

[ area

<area>

]

[

shared

|

tenant

<name> |

group

<name>

]Slide46

Analysis Tools Report By Tenant/Group

RECORD BLOCK SUMMARY FOR SHARED OBJECTS:

-Record Size (B)-

Table Records Size Min Max Mean

PUB.state

51 1.8K 31 42 36

  ----------------------------------

Subtotals: 51 1.8K 31 42 36 RECORD BLOCK SUMMARY FOR GROUP HD_ItemGroup: -14

-Record Size (B)- Table Records Size Min Max Mean

PUB.item 51 2.2K 37 49 44

-----------------------------------Subtotals: 51 2.2K 37 49 44 RECORD BLOCK SUMMARY FOR TENANT HomeDepot_NH1

: 1

-Record Size (B)-

Table Records Size Min Max Mean

PUB.customer

4 280.0B 64 73 70

PUB.order

9 312.0B 34 35 34

PUB.order

-line 31 1.0K 33 34 33

---------------------------------

Subtotals: 44 593.0K 33 73 46

dbutil

<db>

-C

dbanalys

area

<area>

[

tenant

<name> |

group <name> ]Slide47

Promon: Tenant Identity, Sorting And Filtering

M. Modify DefaultsS. Sort user lists : by user Id

OR

tenant Id

T. Tenant filter for user lists : one

OR rangeUser Control:

by user number Usr:Ten Name Type

0:0 richb BROK 5:2 u2@t2 SELF/ABL 6:1 u1@t1 SELF/ABL 7:0 richb SELF/ABL

Currently Connected Tenants

Tenant Id Name User Count 0 Default 3

1 t1 1 2 t2 1

User Control:

by tenant Id

Usr:Ten

Name

Type

0:0 richb BROK

7:0 richb SELF/ABL

6:1 u1@t1 SELF/ABL

5:2 u2@t2 SELF/ABLSlide48

And now for the

Database Administration Consol

demoSlide49

Summary

Administration ArchitectureCreate tenant related stuffSelf provisioning API

Various utility usage

Multi-tenant Configuration

Tool demoSlide50

Questions

?Slide51
Slide52

Physical Model By Tenant

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

Type II Storage Areas

Area 7

HD

CustOrder

Data

HD

CustOrderIdxs

HD

ItemData

HD

ItemIdxs

Area

8

Lowes

CustOrder

Data

Lowes

CustOrderIdxs

Lowes

ItemData

Lowes

ItemIdxs

Area 9

Default Data Area

Default Index

A10

A11

Shared Data

Shared IndexesSlide53

Group Creation

Create the group

define variable

partitiongroup

as

IPartitionGroup no-undo.partitiongroup = new

PartitionGroup("HD_ItemsGroup“).assign partitiongroup:Table = service:GetTable("Item") partitiongroup:DefaultDataArea

= service:GetArea(“A300") partitiongroup:DefaultIndexArea = service:GetArea(“A301") partitiongroup:DefaultLobArea =

service:GetArea(“A300") partitiongroup:DefaultAllocation = "Immediate“ /* or delayed */ partitiongroup:Description = "Home Depot Items".

service:CreatePartitionGroup(partitiongroup).

Set Area

DefaultsSlide54

Adding Tenants To Groups

Table allocation state: NoneSimply add tenant as member of the group for that table

NOTE: Tenant allocation state must be “None” to join a group

define variable

partitiongroup

as

IPartitionGroup no-undo. assign partitiongroup = service:GetPartitionGroup

("HD_ItemGroup"). partitiongroup:Tenants:Add(service:GetTenant("HomeDepot_NH1")). partitiongroup:Tenants:Add(service:GetTenant

("HomeDepot_NH2")).service:UpdatePartitionGroup(partitiongroup).Slide55

Multi-tenant Model

Users

Suzi@HD_Domain

Allen@HD_Domain

Cat@HD_DomainRich@HD_Domain Rich@Lowes1

John@Lowes1Claudio@Lowes2 Louie@Lowes2Edward

Domains/Tenants

Name

TenantHD_Domain

HomeDepot

Name

Tenant

Lowes1

Lowes

Lowes2

Lowes

Name

Tenant

blank

Default

Data

Tenancy Layer

HomeDepot

Lowes

Default

de-allocated or migrated data

Shared

Customers

Orders

Items

_file

_field

_tenant

state

Customers

Orders

Items

1

2

3

0 thru 4