Data Warehouse, Getrennte Datenbanken, oder eine große Datenbank?

hacioglu

Neuer Benutzer
Beiträge
1
Hallo,

ich arbeite für eine gemeinnützige Organisation und bin gerade dabei eine Software für andere gemeinnützige Organisationen(Bildungseinrichtungen) zu implementieren. Die Datenbank der Sofware soll folgendes leisten.

#Jeder Verein soll seine eigene Datenbank offline benutzen können
#Jeder Verein hat das gleiche Datenbankschema
#Jeder Verein soll seine Datenbank über das Internet in einer gemeinsam benuzten Datenbank archivieren können.
#Die Zentrale soll über die gesammelten Informationen aus der gemeinsam benutzten Datenbank Berichte erstellen können.
z.B 1234 Schüler haben im Fach Mathematik Nachhilfe erhalten


Ich habe mir überlegt, dass ich in jedem Verein SQL Express 2008 (weil kostenlos) installiere, und die Daten dort abgelegt werden.

*Wie soll aber die Datenbank in der Zentrale aussehen?
Soll ich in einem SQL Server 2008 R2 eine Datenbank für jeden Verein machen? Wie Effizient sind dann die Abfragen, oder kann ich überhaupt über mehrere Datenbanken abfragen? Und wenn ich an der Datenbank Änderungen vornehme, muss ich auch alle Datenbanken ändern?
oder
soll ich eine große Datenbank generieren, bei der ich alle Einträge über eine zusätzliche VereinID kenntlich mache?

Ich habe auch einiges über Data Warehouse gelesen? Ist es vielleicht das was ich brauche?
In einigen Foren wird von linked Servern gesprochen aber ich habe nichts konkretes dazu gefunden.
Ist vielleicht Microsoft Sync Framework die Lösung um die Datenbanken zu synchronisieren?

Ich würde mich freuen, wenn ihr mir einen Ratschlag geben könntet.

PS: Weil wir gemeinnützig ==> kein Geld für Datenbanken oder Software
Wir haben nur einen SQL-Server 2008 R2 in der Zentrale über stifter-helfen.de gespendet bekommen.

Vielen Dank im Voraus
 
Werbung:
Klingt nach einem spannenden Projekt, leider bin ich selbst noch nicht bei sowas dabei gewesen. Ich kann also keine Erfahrungswerte bei steuern, aber in manchen Punkten vieleicht helfen. Der Reihe nach:

Soll ich in einem SQL Server 2008 R2 eine Datenbank für jeden Verein machen?
- schwer zu sagen, ich würde allein aus einem wichtigen Grund zu einer Instanz pro Verein (auf dem zentralen Server) raten: SQL Express hat begrenzten RAM und DB Größe pro Instanz (bitte auch nochmal nachlesen). Ich kann nicht sagen wie umfangreich deine Daten sind, eventuell passt auch alles in eine DB. Aber es könnte auch übersichtlicher zu managen sein. Sicher gibt Argumente dafür und auch einige dagegen, siehe folge Anworten.

Wie Effizient sind dann die Abfragen, oder kann ich überhaupt über mehrere Datenbanken abfragen?
- Du kannst mehrere DBs in einem Query ansprechen. Die Abfragegewschwindigkeit wird darunter leiden (ich kann nicht einschätzen wie stark) aber die Auswirkungen werden sich nicht wirklich bemerkbar machen denke ich. Zumal du in nur wenigen Fällen Daten aller Vereine abrufen wirst oder sehe ich das falsch?

Und wenn ich an der Datenbank Änderungen vornehme, muss ich auch alle Datenbanken ändern?
- Definitiv ja. Aber du kannst den selben Code verwenden und bei Produktivsystemen stelle ich lieber Stück für Stück als alles auf einmal um...

soll ich eine große Datenbank generieren, bei der ich alle Einträge über eine zusätzliche VereinID kenntlich mache?
- Die Möglichkeit besteht auch. Aber: Du musst mit einem aufwendigeren Rechtemanagement verhindern, das ein Verein mit seinem Account auf die Daten der anderen zugreifen kann. Das geht, ist aber überschaubarer wenn du einem DB User nur Rechte auf eine Instanz geben musst als auf einzelne Datensätze.

Ich habe auch einiges über Data Warehouse gelesen? Ist es vielleicht das was ich brauche?
- Ich habe noch kein Data Warehouse genutzt, aber für mich steht hier die Datenanalyse im Vordergrund (Beispiel Banken, wo sowas die ganze Nacht läuft). Deine Analyse (x Schüler haben y Fächer) klingt für mich eher simpel.

In einigen Foren wird von linked Servern gesprochen aber ich habe nichts konkretes dazu gefunden.
- Linked Server sind eine nette Sache. Stell es dir wie einen Link im Dateisystem auf eine andere Festplatte vor. Du kannst Server so miteinander "verbinden", erleichtert etwas den Zugriff.

Ist vielleicht Microsoft Sync Framework die Lösung um die Datenbanken zu synchronisieren?
- Du solltest auf jedenfall ein Verfahren wählen, das nicht durchgehend mit dem Hauptserver verbunden sein muss. Synchronisierst du über Linked Server per Script geht das, könnte aber auch Probleme machen bei Verbindungsabruch. Die komplette Kontrolle der Daten auf Vollständigkeit obliegt also deinem Code. Das Sync Framework habe ich noch nicht genutzt, aber läuft das überhaupt auf MS SQL Express? Serverreplikation gibt es bei SQL Express nämlich nicht.
 
Zurück
Oben