PDA

Vollständige Version anzeigen : Kapazitätsengpass Access, auch bei SQL-Server?


Marc Enzler
11.08.2001, 10:31
Hallo!

Hab versucht, in einer mdb 14'300 tables zu eröffnen.. hat geklappt. als ich dann aber begann daten reinzuschaufeln ist die grösse der datei förmlich explodiert. anscheinend liegt das an den vielen tables. hab sie dann wieder komprimiert und gereinigt und dann war die grösse wieder von 2gb auf 120 mb gesunken. dieses aufblähen darf aber nicht sein, denn ich habe noch viel mehr daten.

kann ich auf einen sql-server 2000 umsteigen (oder eher 7.0)? gibts da dieses prob nicht? (hab total 10gb daten in txt-form). oder genuegt auch eine MSDE?

DANKE fuer JEDEN TIP!!!

Marc

erwin
11.08.2001, 10:35
Huch - was ist das denn: 14300 Tabs. Ich würde mir zuerst mal Gedanken über das DB-Design machen, oder klär' mich bitte auf wozu diese Anzahl nötig sein sollte !

so long erwin...

Marc Enzler
11.08.2001, 10:36
ach ja, noch was.. die tabellen sind ueberhaupt nicht verknüpft. es handelt sich um eine reine datenablage und das wird sich auch nicht aendern. ich habe 14'300 tables mit je zwei fields (date/single).

any help appreciated!

Marc Enzler
11.08.2001, 10:41
mach ich gerne erwin!

also.. ich habe für 14'300 amerikanische aktien kursinformationen seit 1981 auf taeglicher basis zu hosten. pro aktie haben wir ca 8 fields. alles auf taeglicher basis. d.h. ich muss ja wohl fast pro aktie eine eigene tab machen und dann darin (wenn moeglich) alle fields ueber die ganze zeit ablegen. schlussendlich rechnen wir ein quantitatives model darüber. ich greife per vba zu. ich muss gestehen, dass ich nicht verstehen kann, wie access es schafft, die db auf 2 gb hochzupumpen, obwohl ich erst 2 mb daten reingeschrieben habe ;).. wenn ichs dann repariere kommts zwar wieder runter, aber das kanns ja dann wohl echt nicht sein. also muss vermutlich ein sql-server oder eine MSDE her. soviel ich weiss hat die MSDE aber wieder eine limite von 2gb pro db. ich könnte jedoch relativ problemlos pro field eine eigene db machen, das wären dann so ca 10 db's. was meinst du? und wüsstest du vielleicht sogar die ADO befehlssätze um eine connection zu einer SQL bzw. MSDE-db zu erstellen?

(etwas viele fragen, sorry)

A.S.
11.08.2001, 11:40
Hallo Marc,

so wie ich Dich verstehe, sollten 2 Tabellen eigentliche reichen.

Erstens ein Verzeichnis der Aktien und zweitens das Verzeichnis der Täglichen Werte.

Tab1
1. Feld ID (Autowert)
2. Feld BoersenKürzel (Text)
3. Feld Aktienbezeichnung (Text)

Tab2
01. Feld AktienID (Long Int; Verknüpft mit Tab1.ID
02. Feld Kursdatum
03. Feld KursWert1
04. Feld KursWert2
05. Feld KursWert3
06. Feld KursWert4
07. Feld KursWert5
08. Feld KursWert6
09. Feld KursWert7
10. Feld KursWert8

Die ltztendlich Feldbezeichnungen und Typen obliegen natürlich Dir ;) Aber so sollten die Tabellen IMHO organisiert sein. Du kannst natürlich auch noch weitere Merkmal (etwa an welchem Markt die Aktie wann notiert war) hinterlegen.

Aber Grundsätzliche überlegungen über den Einsatz von SQL-Server (MSDE ist nichts anderes als SQL-Server nur ohne Verwaltungsfrontend) solltest Du bei den Datenmengen aber schon anstellen. Hochgerechnet hast Du ja immerhin über 104 MILLIONEN Datensätze zu verwalten. Ich schätze bei der Datenmenge dürfte Access a) zusammenbrechen und b) ist Access 2000/2002 sowieso nur auf DB-Größen bis 2 GigaByte ausgelegt. Du müßtest die DB bzw. die Tabellen sowieso auf mehrere Tabellen in unterschiedlichen Backends aufteilen um die 10 Gigabyte Textdaten verwalten zu können. Vom Verwaltungsoverhead einmal ganz zu schweigen.

------------------
HTH

Arno

Marc Enzler
11.08.2001, 12:03
hallo arno!

danke fuer deine antwort! ja, ich sehe das mit den zwei tabellen. aber ich denke es wird problematisch, die zweite tabelle zu verwalten.. erstens haette sie ca 14300*365*22 datensaetze und zweitens muesste ich jeden tag in die tab neue daten 'einfügen' anstatt sie einfach am ende mit 'move last' anzuhängen.. hmm.. aber denkst du, dass das problem des aufblähens bei einem sql-server oder MSDE nicht mehr passieren sollte? ich denke, dass so ne db (von mir aus aufgeteilt nach fields, d.h. pro field eine db) total nicht mehr als sagen wir 15 gb sein sollte (wenn sie total 10gb rohdaten beinhaltet).. aber bei access ist die dateigrösse förmlich EXPLODIERT.. passiert das bei sql-server/msde auch?

A.S.
11.08.2001, 13:18
Hallo Marc,

ob sich eine SQL-Server-DB auch so verhält, sorry dunknow...

Frag da doch mal den Achim (Mod SQL-Forum), der dürfte so etwas eher wissen als ich ;)

Gruß

Arno

Axel37
11.08.2001, 15:51
endlich mal eine anwendung, die anscheinend die kapazitätsgrenzen von access erreicht. vorallem, wie verhält sich access im grenzbereich. @marc: gib mal bei gelegenheit details von auftretenden fehlern bekannt

erwin
12.08.2001, 10:08
@ Marc

Nein der SQL-Server verhält sich a priori nicht so, da die grundsätzliche Org. eine andere ist als bei MDB's; aber es können mannigfache Einstellungen vorgenommen werden ((Redo-)Log-Files, Tab.Spaces etc...) welche das Verhalten beeinflussen. Bei dieser Datenmenge würde ich dir raten: dich a) entweder selber eingehender über SQL-Server zu informieren - oder b) entspr. Expertenrat einzuholen.

Wesentlich für die Org. dieser Datenmengen ist IMHO auch das "vermutliche" Abfrageverhalten, dh. wie wird idR. auf die Daten zugegriffen + was davon sollte möglichst performant passieren. Da sich die Daten von ihrer Struktur her nachträglich nicht ändern (dh. es kommen nur neue hinzu) wäre ev. auch mySQL eine performante + kostengünstige Alternative (Infos: zB. http://www2.little-idiot.de/mysql/ )

so long erwin...

Marc Enzler
12.08.2001, 12:00
erstmals danke fuer alle eure antworten!

ich denke, wir werden wohl oder uebel die lizenzgebühr fuer nen sql-server kaufen müssen.. die limite von 2gb fuer MSDE hat sich bestätigt.

wegen der anordnung der daten denke ich, dass die struktur wie ich sie beschrieben habe (pro valor eine tab) wohl am besten ist, denn das ermöglicht mir eine schnelle und einfache zugriffsweise auf die daten (fuer das quant-model)..

ich frag mal noch im sql-forum nach, wie sich die eine sql-server db bei diesen datenmengen verhaelt und ob das aufblaehen der db-grösse auch vorkommt.

zu der frage nach fehler: ich bin gar nicht dazugekommen zu testen, ob access fehlerhaft wird, da ich gar nicht alle daten die ich speichern wolle (10 mal 1 gb) speichern konnte. also das ist insofern klar ein bug, denn wenn ich die db wieder 'korrigiere und komprimiere' dann sinkt sie wieder von 2gb auf 125 mb :) .. bin recht enttäuscht über access.. also.. sql-server muss her..

danke nochmals!
marc