/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
[MSSQL] Mest effektive CMS løsning
Fra : Mark S. Rasmussen


Dato : 09-10-02 18:01

Hej alle.

Jeg har et problem med at finde ud af hvad der vil være den mest effektive
løsning på en database til en CMS løsning.

Mulighed nummer 1 er at oprette en selvstændig database til hver kunde, det
er den jeg bruger i øjeblikket. Det besværliggører dog opdateringer da man
skal sørge for at alle databaser opdateres tilsvarende med systemet.
Mulighed nummer 2 er at have een database til alle kunder, og refererere alt
kundespecifikt med et kundeid. Det besværliggører dog alle queries til
databasen, da man så skal huske et kundeid hele tiden. Dog vil det gøre
opdateringer meget lettere.

Rent performancemæssigt, hvad er så mest effektivt?

Mvh Mark



 
 
Peter Lykkegaard (09-10-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 09-10-02 20:19

Som svar på skriblerier forfattet af Mark S. Rasmussen

> Jeg har et problem med at finde ud af hvad der vil være den mest
> effektive løsning på en database til en CMS løsning.
>
> Mulighed nummer 1 er at oprette en selvstændig database til hver
> kunde, det er den jeg bruger i øjeblikket. Det besværliggører dog
> opdateringer da man skal sørge for at alle databaser opdateres
> tilsvarende med systemet.

Vil ikke anderledes end når databasen ligger hos kunden?
Du kan evt referere til en table på formen <db>.<usr>.<table>

> Mulighed nummer 2 er at have een database
> til alle kunder, og refererere alt kundespecifikt med et kundeid. Det
> besværliggører dog alle queries til databasen, da man så skal huske
> et kundeid hele tiden. Dog vil det gøre opdateringer meget lettere.
>
Jeg er lige klar hvordan systemer som Axapta, SAP, Baan klarer den side af
det internt
Men jeg ved at fx SAP har du ClientID (MANDT) sammen med resten af dataene i
de fleste tabeller
MANDT = Regnskab/Firma

Axapta og Baan arbejder også med skift med regnskaber/firmaer ved at ændre
lign ClientID
En (alm) Axapta installation har én DB til alle regnskaber

> Rent performancemæssigt, hvad er så mest effektivt?
>
Tjahh, splitter du data op i mange databaser så kan man påstå at den er
fragmenteret
Med clustered indexes på din KundeID burde du komme et skridt på vejen
Der er vel ikke tale om flere mill records?

Query Analyzer og Profiler er ganske udmærkede værktøjer til at finde
bottlenecks

Just my two cents

mvh/Peter Lykkegaard



Mark S. Rasmussen (09-10-2002)
Kommentar
Fra : Mark S. Rasmussen


Dato : 09-10-02 21:32

> > Mulighed nummer 1 er at oprette en selvstændig database til hver
> > kunde, det er den jeg bruger i øjeblikket. Det besværliggører dog
> > opdateringer da man skal sørge for at alle databaser opdateres
> > tilsvarende med systemet.
>
> Vil ikke anderledes end når databasen ligger hos kunden?
> Du kan evt referere til en table på formen <db>.<usr>.<table>

Jeg forstår ikke lige hvad du mener her? Mit problem er, f.eks, hvis jeg
ændrer en felttype i min template database, så skal jeg ud og rette denne
ændring i mine x antal kundedatabaser.


> > Mulighed nummer 2 er at have een database
> > til alle kunder, og refererere alt kundespecifikt med et kundeid. Det
> > besværliggører dog alle queries til databasen, da man så skal huske
> > et kundeid hele tiden. Dog vil det gøre opdateringer meget lettere.
> >
> Jeg er lige klar hvordan systemer som Axapta, SAP, Baan klarer den side af
> det internt
> Men jeg ved at fx SAP har du ClientID (MANDT) sammen med resten af dataene
i
> de fleste tabeller
> MANDT = Regnskab/Firma
>
> Axapta og Baan arbejder også med skift med regnskaber/firmaer ved at ændre
> lign ClientID
> En (alm) Axapta installation har én DB til alle regnskaber

Såvidt jeg forstår ud fra din forklaring bruger de altså også løsningen med
at sende et "CustomerID" med rundt, og således have en enkelt database til
alle sites.


> > Rent performancemæssigt, hvad er så mest effektivt?
> >
> Tjahh, splitter du data op i mange databaser så kan man påstå at den er
> fragmenteret
> Med clustered indexes på din KundeID burde du komme et skridt på vejen
> Der er vel ikke tale om flere mill records?

Næh, hvis jeg skal være realistisk kommer der nu nok heller ikke lige
foreløbig bare en promille af det antal :).


> Query Analyzer og Profiler er ganske udmærkede værktøjer til at finde
> bottlenecks

Yep, det er bare dejligt med nogle andre brugeres erfaringer oveni :).


Tak for dine kommentarer.

Mvh Mark



Peter Lykkegaard (10-10-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 10-10-02 08:15

Som svar på skriblerier nedfældet af Mark S. Rasmussen :

> Jeg forstår ikke lige hvad du mener her?

Jeg tænkte mere på hvis du skulle lave nogle systemopdateringer
Fra én DB kan du få fat i alle databaser på MSSQL

> Mit problem er, f.eks, hvis
> jeg ændrer en felttype i min template database, så skal jeg ud og
> rette denne ændring i mine x antal kundedatabaser.
>
That's correct, men kan scriptes

>> Axapta og Baan arbejder også med skift med regnskaber/firmaer ved at
>> ændre lign ClientID
>> En (alm) Axapta installation har én DB til alle regnskaber
>
> Såvidt jeg forstår ud fra din forklaring bruger de altså også
> løsningen med at sende et "CustomerID" med rundt, og således have en
> enkelt database til alle sites.
>
That's correct
>
>> Med clustered indexes på din KundeID burde du komme et skridt på
>> vejen Der er vel ikke tale om flere mill records?
>
> Næh, hvis jeg skal være realistisk kommer der nu nok heller ikke lige
> foreløbig bare en promille af det antal :).
>
Der taler for den "enkle" løsning, men rent datamæssigt er den noget mere
kompliceret

mvh/Peter Lykkegard



Rune Baess (09-10-2002)
Kommentar
Fra : Rune Baess


Dato : 09-10-02 23:43


"Mark S. Rasmussen" <mark@tv.dk> wrote :
....
> Mulighed nummer 1 er at oprette en selvstændig database til hver kunde, det
> er den jeg bruger i øjeblikket. Det besværliggører dog opdateringer da man
> skal sørge for at alle databaser opdateres tilsvarende med systemet.
> Mulighed nummer 2 er at have een database til alle kunder, og refererere alt
> kundespecifikt med et kundeid. Det besværliggører dog alle queries til
> databasen, da man så skal huske et kundeid hele tiden. Dog vil det gøre
> opdateringer meget lettere.
>
> Rent performancemæssigt, hvad er så mest effektivt?

1 DB pr. kunde, hvis man kan forudse kunder med større mængde indhold (eller
sites hvis det er til web), kørende på en sådan løsning.
- af hensyn til indexes, SP's osv.

SQLserver har desuden gode synkroniseringsfaciliteter mht. opdatering af
tabel-strukturer m.m. vha. scripting.

Rune







Peter Lykkegaard (10-10-2002)
Kommentar
Fra : Peter Lykkegaard


Dato : 10-10-02 08:20

Som svar på skriblerier nedfældet af Rune Baess :

> SQLserver har desuden gode synkroniseringsfaciliteter mht. opdatering
> af tabel-strukturer m.m. vha. scripting.
>
MSSQL scripting muligheder er ganske gode hvis man skal overføre ting og
sager til en jomfruelig DB, men ellers noget skod
Tingene kommer simpelthen ikke i den rigtige rækkefølge
Det er umuligt at droppe index/constraints for efterfølgende at oprette dem
igen vha et automatisk MSSQL script - my experience
DEt kan muligvis lade sig gøre vha en eller anden speciel navngivning af
tabeller/constraints/index men har nu ikke set lyset endnu mht dette

Det er bedre at vedligeholde scripts delvis i hånden fra starten af, så er
der styr på rækkefølgen

mvh/Peter Lykkegaard








Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408938
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste