Wieviele datenbanken auf einem Server?

hi, und zwar will ich möglichst viele Datenbanken (auf verschiendenen Ports) hosten. Was glaubt ihr bekomm ich auf einen normalen Intel Quadcore, 8GB Ram?
Bekomm ich probleme mit der Performance-Verteilung? Sollte eig. der Linux-Sheduler regeln…
Up & Download ist für jeden Port auf 100kb Up/Down Max geregelt.

Performance muss nicht perfekt sein. Ich dachte an 10-20 DB’s aufwärts.

Würd mich über ein paar ideen freuen.

Gruß centext

Was ist falsch daran, alle Datenbanken in eine Instanz zu packen?

Das erste, was dir ausgehen wird, ist Shared Memory. Das musst du nämlich pro Instanz fest zuteilen und bei 20 Datenbanken und 8 GB RAM bleibt da nicht viel übrig …

okay, d.h. mit 16 GB Ram und 512 MB pro Instanz sollte das kein problem sein?

Mir ist nicht bekannt, welches Problem Du damit erschlagen willst.

Andreas

CenText: warum willst du verschiedene Datenbank Instanzen laufen lassen? Welche Vorteile versprichst du dir davon, abgesehen von der ganzen Reihe Nachteile, die ich aufzählen kann.

Hi, und zwar will ich für jede Datenbank ein Bandbreiten Limit einführen. Wenn ich jetzt nur eine einzige Instanz einrichte mit einer beliebigen Datenbankmenge, soll es nicht für bestimmte Datenbanken Bandbreiten Probleme geben.

Mit mehreren Instanzen kann ich auf port-ebene ein transfer Upload/Download Limit schaffen.

Bei einer DB ist Bandbreite zum Client seltenst der begrenzende Faktor, von daher würde mich mal echt interessieren, welches Anwendungsszenario Du da konkret zu lösen hast, wo das zum Problem wird und Du selbst eine massive Verschwendung von Hauptspeicher, was meist eher als Flaschenhals wirkt, in Kauf zu nehmen bereit bist.

Uff, schöner Schachtelsatz…

PS.: mir fiele da noch ein anderer Ansatz ein, das zu lösen. Mit nur einer DB-Instanz und ohne Verschwendung von RAM.

Andreas

Ja, ich schliesse mich mal akretschmer an: welches Problem möchtest du erschlagen?

Dein Ansatz hört sich dafür irgendwie durch den Fuß geschossen an: du löst dein Bandbreitenproblem, handelst dir dafür aber eine Menge anderer Probleme ein …

Im Prinzip würd ich gerne zwei server aufsetzen, die gezielt so konfiguriert werden, dass einer eine gute der andere eine schlechtere Performance hat :slight_smile:

Das sind nach meiner Rechnung 2 Server. Du nanntest aber auch schon mal die Zahl “10-20” Server. Du wurdest auch schon mehrfach gefragt, welches Problem Du eigentlich lösen willst. Mir vergeht mit der Zeit allerdings Lust und Interesse…

Andreas

Sry, doppelpost

Kannst du mir bitte auch noch den Namen der Firma nennen, die hinter diesem Konzept steckt?

naja ganz einfach. Ich hab zwei Rechner (Server).

  1. Rechner
    Dort will ich 10x PostgreSQL Instanzen einrichten. 1Gbits Anbindung. Für jeden Port der pSQL Instanz setze ich 100 Mbits als maximale Auslastung. Dass für jede Instanz 100Mbits gewährleistet sind.

    \
  2. Rechner
    Dort will ich 20x PostgreSQL Instanzen einrichten. 1Gbits Anbindung. Für jeden Port der pSQL Instanz setze ich 50 Mbits als maximale Auslastung. Dass für jede Instanz 50Mbits gewährleistet sind.



    Ich könnte es durchaus nur über eine einzige Instanz erledigen, mit entsprechender anzahl von Datenbanken. Jedoch sehe ich keine Möglichkeit hier ein ordentlichen Load Balancing zu betreiben.

Im Prinzip eig. noch keine :slight_smile:

Ich glaube, du hast das Konzept von Datenbanken noch nicht wirklich verstanden.

Gib mir eine Datenbank mit 1 kBit/Sekunde und ich brenne deinen Server gnadenlos nieder …

Für mich ist die Diskussion hier beendet, ich sehe nicht, das dein Konzept sinnvoll oder durchdacht wäre. Auch sehe ich nicht, welches Problem du erschlagen möchtest.

Naja bei einem Konzept einer Datenbank gibt es nicht viel zu verstehen, sind eher fakten.

Es geht um folgendes. Ich will für 5-10 Leute DBMS aufsetzen, ohne dass die einzelnen Leute einfluss auf die Datenbank der anderen haben.

Klar kann man hier auch mit einzelnen DBMS arbeiten und einzelne Datenbank vergeben mit Usern. Nur wollte ich mir noch eine alternative überlegen die ggf. in betracht käme. :rolleyes:

Hallo,

das geht aber nicht über die Bandbreite. Das ist das, was die ads sagen wollte. Gib mir 1 kbit Bandbreite und ich mach dir den Server platt. Wie? Indem ich eine Anfrage erstelle die so komplex ist, dass sie den Server voll auslastet. Da hilft es dann nicht viel, dass ein anderer User 10 MBit zur Verfügung hat, wenn der Server einfach keine freie Rechenkapazität mehr hat.

Kurz gesagt: Du hast ein falsches Konzept und willst nicht auf ads hören :wink:

cu tb.

Ack.

Es geht um folgendes. Ich will für 5-10 Leute DBMS aufsetzen, ohne dass die einzelnen Leute einfluss auf die Datenbank der anderen haben.

Das macht man über Rechtevergabe. Dazu reicht es, jedem seine DB zu geben. Eine jeweils eigene Instanz des RDBMS ist Overkill

Klar kann man hier auch mit einzelnen DBMS arbeiten und einzelne Datenbank vergeben mit Usern. Nur wollte ich mir noch eine alternative überlegen die ggf. in betracht käme. > :rolleyes: >

Deine Alternative funktioniert aber nicht. Ich mache Dir als böser User auch über eine Modemverbindung innerhalb von Sekunden 2 Tabellen mit 100 Millionen Zeilen (via generate_series) und mache dann damit ein Cross-Join. Das, was dazu von mir über die Leitung geht, sind wenige Bytes, deutlich unterhalb eines Kilobytes. Aber ich sprenge Dir damit Deinen Server weg, so schnell kannst Du gar nicht guggen…


Andreas

Okay, alles klar. Dank für euere Geduld :slight_smile:

Hallo,

ich möchte an dieser Stelle doch nochmal nachhaken. Wie kann man denn verhindern, dass bei einem DBMS, auf der meinetwegen 50 Kunden sind (jeder hat seine eigene DB), nicht alle in Mitleidenschaft gezogen werden, nur weil das Skript eines einzelnen Kunden Amok läuft?

Regelt PostgreSQL das automatisch oder kann man die Rechenzeit (den Arbeitsspeicher etc.), die jedem einzelnen Kunden zusteht, über die User-/DB-Einstellungen begrenzen? Man kann ja in PostgreSQL für einen User (bzw. für eine Datenbank) Variablen individuell setzen (z.B. work_mem, cpu_operator_cost, max_stack_depth etc.). Wäre dies der richtige Weg oder gibt es andere Möglichkeiten?

Grüße
Dirk