I have update the cpf file with the following info (removed the cache.key file from my local cache instance)

[LicenseServers]
SERVER 4=7.7.7.4,4001


Getting "Licensed to:   License missing or unreadable. " in SMP.  Tried to run the following in Cache instance..

USER>Do $System.License.ShowServer()
 
Not connected to license server

 Next I shutdown Cache, put back the cache.key into my local instance and start. Then run the command again :

USER>d $SYSTEM.License.ShowServer()
 
Active license server at address = 7.7.7.4 port = 4001
USER>

 In the documentation it also mentioned quote " However, each Caché instance must have a local copy of the authorizing license key file installed " taken from https://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY...

Hi Brendan

 Thanks and sorry for the late reply.  After testing it out,  I'll create each table in a separate global and the smaller table (e.g.   Order Contact in Order table, one to many)  that link to each table as parent and child. 

  As for the bitmap, I will not be using it as the data distinct values is way over 10,000 and not sure is it worth the effort or not (will just use the normal Indexing without bitmap). As changing all the tables to running number IDKEY it involve quite a number of work later when I consolidate all the records from different servers with Order, OrderDetails and OrderDetails2. 

Thanks.
Regards
Jimmy

Hi Brendan

 Thank you for your reply. That solved my concern about problem might arise using the IDKey True with child table. 

  Speaking about performance, I am interested in fine tuning the table design to get the best of of Cache database performance. If I may have your advise on my table design. The following is the detail information.

 I have tables for monthly  data  (in Server A)

User.OrderYYYYMM [IDKey : OrderNo]

 > User.OrderDetailsYYYYMM [Child] [IDKey : {%%PARENT}("ITM")(Running Number)]

 > User.OrderDetails2YYYYMM[Child] [IDKey : {%%PARENT}("ITM2")(Running Number)]


 Then I have  a Yearly data (in Server B)

User.Order [IDKey : Year,Month,OrderNo]

 > User.OrderDetails [Child] [IDKey : {%%PARENT}("ITM")(Running Number)]

 > User.OrderDetails2[Child] [IDKey : {%%PARENT}("ITM2")(Running Number)]

   There is 2 server to serve 2 type of user group from different location. The monthly data (Server A) is where the user will manage the data. Then the monthly data (Server A) will push to Yearly data(Server B, user use the data).  I put all the table in the same global so that I will not have any problem pushing the data from Server A to Server B (through Shadowing with some scripting). Should there is any update in Server A, I could easily identify the record in Server B and update it.

  For my case I do use bitmap for indexing.  I have 2 set of tables (monthly and yearly) is due to bitmap as well. The user in Server A might flush out the entire month of data and reinsert it again (Is also the user wish as they do not want the risk of accidentally deleting the wrong data).  Hence to avoid re-index the whole table again, I break it to monthly table to reduce the indexing time. This will not occur in server B as I could make user the Shadow "Filter routine" option to pick up the deleted record and update the index in Server B (not tested it yet.)

  As mentioned in your reply "query the children without also referencing the Parent data ",  there are time where I would only access the parent/child (not both at the same time).

Thank you.
Regards
Jimmy