Connection Pool mit unterschiedlichen Verbindungen

Status
Nicht offen für weitere Antworten.

foobar

Top Contributor
Hi,

ich hätte da gerne mal ein Problem. In unserer Altanwendung aus dem Optikerbereich gibt es für jeden Monat eine Datenbank mit den Bewegungsdaten wie Rechnungen oder Gutschriften. D.h. es wird für jeden Monat eine neue Datenbak anhand des vorgegeben Schemas erstellt.
Jetzt sollen Daten aus den vergangenen Jahren/Monaten gelesen werden. Dafür gibt es eine Tabelle mit einer Historie aus der hervorgeht in welcher DB sich der Datensatz befindet. Wenn ich jetzt einen Datensatz lesen will, muß ich also zuerst mal in der Tabelle nachgucken in welcher DB der Datensatz sich überhaupt befindet, dann muß ich eine Connection aufbauen etc. Das ist natürlich aus Sicht des Connectionpools katastrophal, denn hier wird für jede Abfrage eine Verbindung geöffnet. Macht es Sinn diese Connections auch irgendwie zu poolen und wenn ja wie macht man das m besten mit Spring?
Meine zweite Frage ist: Wie wird in anderen Anwendungen mit großen Datenmengen umgegangen? Habt ihr auch soetwas wie Monatsdatenbanken? Ich finde das ganze irgendwie krude, hab aber auch keine Idee wie man das besser machen kann.

Viele Grüße,
foobar
 

tfa

Top Contributor
Monatsdatenbanken? Klingt ja katastrophal. Meinst du wirklich unterschiedliche Datenbanken oder nur verschiedene Schemata innerhalb einer Maschine?
Du kannst dir natürlich soviele DataSources anlegen wie du willst, aber schön wird das sicherlich nicht.
 

foobar

Top Contributor
Monatsdatenbanken? Klingt ja katastrophal.
Ist auch gruselig *g*

Meinst du wirklich unterschiedliche Datenbanken oder nur verschiedene Schemata innerhalb einer Maschine?
Alles läuft auf der selben Maschine, aber für jeden Monat gibt ne eigene Datenbank also hat jede Monatsdatenbank auch ne andere Url. Der Name der Datenbank wird nach einem bestimmten Schema vergeben z.b. so prefixMMYY.

Ich bräuchte also einen Connectionpool, der Connections zu einer Url oder sowas zuordnet wie eine HashMap. Gibt es sowas?
 

tfa

Top Contributor
Also wahrscheinlich doch DB-Schemata. Versuch mal, ohne den DB-Namen in der URL eine Verbindung herzustellen und greif auf die Tabellen dann so zu:

select * from prefixM1Y1.Tabelle
select * from prefixM2Y1.Tabelle
select * from prefixM3Y2.Tabelle

Wenn die Berechtigungen das zu lassen, könnte es so funktionieren. Zum Ausprobieren bietet sich ein Tool wie DBVisualizer an.
 

foobar

Top Contributor
Wie wird denn in anderen Anwendungen mit großen Datenmengen umgegangen? Gibt es eine Alternative zu Monatsdatenbanken?
 

tfa

Top Contributor
Ja, eine große Datenbank. Wenn man viele Daten hat, muss man die DB eben entsprechend dimensionieren, clustern, verteilen. Aber das sollte das DB-Produkt können und man nicht zu Fuß programmieren müssen.
Davon abgesehen kann man alte Daten archivieren und aus der Produktivdatenbank löschen, wenn man sich nicht mehr täglich braucht.
Wieviele Daten fallen bei dir denn so an? Das muss ja ein riesen Optiker-Konzern sein, dass da jeden Monat eine DB verschlissen wird.
 

foobar

Top Contributor
select * from prefixM1Y1.Tabelle
Achja, in esqlc konnte man bei der Informix online sowas machen:
select * from prefixM1Y1:Tabelle
Nur bei der Informix SE ist das nicht möglich und man muß eine neue Verbindung aufbauen. Scheiß Informixkram *g*
 

foobar

Top Contributor
tfa hat gesagt.:
Ja, eine große Datenbank. Wenn man viele Daten hat, muss man die DB eben entsprechend dimensionieren, clustern, verteilen. Aber das sollte das DB-Produkt können und man nicht zu Fuß programmieren müssen.
Verstehe
tfa hat gesagt.:
Davon abgesehen kann man alte Daten archivieren und aus der Produktivdatenbank löschen, wenn man sich nicht mehr täglich braucht.
Wieviele Daten fallen bei dir denn so an? Das muss ja ein riesen Optiker-Konzern sein, dass da jeden Monat eine DB verschlissen wird.
Ja, das ist die gesamte Abrechnung aller Fielmannfilialen.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben