MSSQL und Schemata

Vermutlich, gibt's ja glaub ich so bei Postgres nicht. Unsicher: das spielt sich per default im jeweiligen DB Directory ab. Kann evtl. auch angegeben werden. Macht wahrscheinlich Sinn, wenn man dafür besonders schnelle Hardware vorgesehen hat.
RAM / Shared Memory finde ich dabei etwas spannender, aber ist wahrscheinlich von Fall zu Fall anders.
 
Werbung:
Aber ich wüsste auch nicht wirklich warum man nicht mehrere DBs auf einem DBMS betreiben sollte, wenn es sich um weitestgehend getrennte Applikationen handelt. Was haltet ihr für sinnvoll?
Das ist gängige Praxis und dafür sind ja Datenbankserver auch gedacht. Außerdem mußt Du natürlich den Sicherheitsaspekt betrachten.
Bei mehreren Instanzen habe ich vermutliche auch mehrere Temp-DBs und bei mehreren Schemata nicht oder?
Ja. mehrere Instanzen (unabhängige SQL Server Installationen mit eigenem Namen). Schemata sind ein Sicherheitsfeature vom SQL Server innerhalb einer SQL Server Datenbank. Schema != Datenbank. Einige verwechseln das.
Ja, technisch ist das so, aber in meinem Sinne egal. Ich wollte darauf hinaus, dass es nicht nur eine Frage der Fähigkeiten der DB ist, ob sie Schemata anbietet.
Letztlich "entscheidet" die Anwendung über den Zugriff. Wenn sie nur mit einer Connection oder einem Pool arbeitet, dann habe ich keine Granularität und keine Mikroservices. Diese Problematik müsste ich mit modellieren und durch die Nutzung einzeln zuständiger Connections umsetzten (die halt durchaus alle identisch sein können).

Ein Server, eine Instanz, ... hat m.E. auch Auswirkungen auf den Bedarf an RAM (Shared Memory > identische Daten stehen einmalig für alle zur Verfügung und werden auch nur 1x gepflegt) und den administrativen Aufwand. Mit 10000 Nutzer Schemata habe ich nur 1x den Aufwand eines Upgrades oder Patches, statt 10000 DB Installationen. Das gilt für DB Binaries, aber am Ende auch für das Datenmodell. Mit Multi Tenancy wie bei Oracle bspw. habe ich am Ende auch weniger Aufwand bei Wartung und Support von 10000 Mandanten Schemata.
Du setzt Datenbank und Schemata gleich. Im SQL Server Kontext ist dies grundlegend falsch. Schemata bei SQL Server Datenbanken sind ein Sicherheitsfeature um den Zugriff auf Tabellen, SPs, Views, usw. zu beschränken. Und in einer Datenbank 10000 Benutzer Schemata zu verwalten macht wirklich niemand. Es wären ja auch 10000 Logins von nöten.
 
Werbung:
Du setzt Datenbank und Schemata gleich

Ich setze es nicht gleich, das wäre tatsächlich falsch, ich gebe eine gängige Sichtweise wieder und möchte auf etwas anderes hinaus. Nebenbei, Schemata in DB sind keine Erfindung von MS und weit mehr als ein Sicherheitsfeature.
Ich sprach u.a. im Kontext von Micro Services.
10 T Logins sehe ich auch nicht als so ungewöhnlich an, wäre auch die Frage, was mit „Login“ genau gemeint ist. Und was auch immer, ein „Login“ wird nicht mit Spitzhacke und Schaufel angelegt. Genauso wenig sind 10 T Kunden oder ein Vielfaches ein Problem, alles nur DV, also klassisches DB Server Terrain, teilweise auch OS.

Ich versuche es noch einmal, habe mich offenbar wieder missverständlich ausgedrückt.
Die Diskussion scheint mir einfach etwas schräg. In der Realität arbeiten viele Entwickler (oder auch Architekten) traditionell mit recht monolithischen Konzepten. Eine DB, ein Schema, alles rein, fertig, Anwendung läuft. Nur ist sie halt auf diese Art recht unflexibel. Denn an dieser Stelle spielt es in der Praxis eben oft keine Rolle, dass Schema, Instanz, .. besondere Funktionsmerkmale sind, die man nutzen könnte. Ich kann mit einem 32t LKW Briefe ausliefern und sogar Gründe finden, warum das in bestimmten Situationen dann doch effizient und sinnvoll ist.
Wenn ich mir also auf der einen Seite Gedanken mache, was man alles Tolles mit DB, Schema, Instanz, .. machen kann (sofern das System es bietet), hilft mir das alles wenig, wenn ich auf der anderen Seite meine Applikationen nicht entsprechend konzipiere. Zur praktischen Veranschaulichung: Eine(1) Anwendung, die mit einer(1) einzigen Connection arbeitet (ich rede nicht von Pooling), zeigt schon dieses Denkmuster. Bei kommerziellen Anbietern ist es ja bspw. so, dass bestimmte Konstellationen der Produktnutzung gar keine logischen/fachlichen Gründe haben, sondern lediglich mit der Nutzung der verfügbaren/erlaubten/gekauften Lizenzierung einen „Sinn“ ergeben (juristisch bzw. wirtschaftlich).
M.E. ist das tw. ein historisches bedingtes Problem, einerseits durch die früher verfügbare Hardware, andererseits durch Lizenzbestimmungen kommerzieller Anbieter. Hat man sich also die a..teure Hardware mal hingestellt (soll ja ein paar Jahr(zehnt)e reichen) und die a..teure Softwarelizenz (Vollversion) gekauft, kommt schnell der Punkt, wo man aus Wirtschaftlichkeitsgründen oder anderen Sachzwängen (Datenschutz, (Ausfall-)Sicherheit, ..) nach weiteren Nutzungsmöglichkeiten sucht. Dann nehmen wir eine neue Instanz, ein anderes Schema, eine neue Softwareversion etc. pp her und freuen uns, was alles geht.
Heute hat sich aus ähnlichen Gründen die Virtualisierung recht weit entwickelt und man könnte viele alte Zöpfe abschneiden. Sprich ein MS SQL Server oder Postgres könnte in der Hinsicht DB, Schema, Instanz weniger können, man würde die Funktionen mittlerweile anders realisieren.
Wie gesagt, was die (DB) Serverwelt da bietet, ist die eine Seite, was ich über die Anwendungsarchitektur des Client daraus mache, ist eine andere Sache. Beides getrennt zu betrachten, macht relativ wenig Sinn.
In großen Systemen sieht das Ganze sicher noch etwas anders aus, aber das ist auf der Ebene, die hier in den Foren meist diskutiert wird, sicher nicht das Hauptthema.
 
Zurück
Oben