Alla ricerca di consigli per il seguente schema MS SQL

1

Al momento abbiamo lo schema SQL seguente:

Projects
   Budgets
       BudgetTabs
            BudgetSections
                BudgetTasks
                   BudgetTaskDetails
                   BudgetUnits

I dati contenuti in queste tabelle vengono utilizzati per specificare quanto costerà un progetto completare.

Il problema che prevedo è che ogni volta che abbiamo bisogno di ottenere il valore totale di un progetto, abbiamo una query con un minimo di 6 join (c'è forse di più se si includono alcune altre informazioni sul progetto). Poiché il nostro db è un multi-tenant, è probabile che queste tabelle contengano centinaia di migliaia di righe.

Ci siamo chiesti se questa informazione sarebbe stata meglio memorizzata in un documento db come MongoDB, il che ci consentirà anche di spostare alcuni calcoli da SQL e nel nostro codice.

    
posta Gaz 12.11.2014 - 15:50
fonte

1 risposta

6

Sei join non mi sembra molto, e lavoro con database multi-tenant tutto il giorno. Il mio consiglio è di unirmi al tuo ID tenant ad ogni passaggio e di costruire le chiavi primarie con l'ID tenant al loro interno. Questo dovrebbe portarti il 90% del tempo. Se hai ancora bisogno di più prestazioni, guarda i piani di esecuzione e determina se è necessario riordinare alcuni join o aggiungere indici.

Invece di pensare a problemi di prestazioni ipotetici, misura quelli reali che hai. SQL Server è più che felice di elaborare miliardi di righe ... alcune centinaia di migliaia non le daranno una pausa finché fornirai un po 'di aiuto a SQL Server.

    
risposta data 12.11.2014 - 16:07
fonte