Kay: Ist M$-Access nicht zu langsam?

Hallo Forianer

Ich will eine Access-Datenbank via mySQL und PHP im Web bedienen.

Mit Schrecken stelle ich fest: Habe gerade mal 10 Records und das File ist schon fast 300KB gross!!!!

Ein Wechsel auf eine andere DB kommt leider nicht in Frage!

  • muss ich sie in einem anderen Format als .mdb abspeichern?
  • gibt es Tricks?

Ich danke schon mal für Eure Hilfe ;O)

Kay

  1. Seid gegruesst!

    Ich will eine Access-Datenbank via mySQL und PHP im Web bedienen.

    Interessant...

    Mit Schrecken stelle ich fest: Habe gerade mal 10 Records und das File ist schon fast 300KB gross!!!!

    Ist das nicht bei Office-Dokumenten normal, quasi "ein Feature", dass die so gross sind?

    Ein Wechsel auf eine andere DB kommt leider nicht in Frage!

    Aua... das ist wirklich nicht gut!

    • muss ich sie in einem anderen Format als .mdb abspeichern?
    • gibt es Tricks?

    Hmm... Kuendigen?

    Es wird erzaehlt, dass MS-Access im Dauereinsatz solche Memory-Leaks verursacht, dass man ca. alle Stunde 128 MB mehr RAM braucht - wenn das stimmt, bist Du sowieso gearscht.

    Lord Helmchen

    1. Seid gegruesst!

      Ich will eine Access-Datenbank via mySQL und PHP im Web bedienen.
      Interessant...

      Mit Schrecken stelle ich fest: Habe gerade mal 10 Records und das File ist schon fast 300KB gross!!!!
      Ist das nicht bei Office-Dokumenten normal, quasi "ein Feature", dass die so gross sind?

      Ein Wechsel auf eine andere DB kommt leider nicht in Frage!
      Aua... das ist wirklich nicht gut!

      • muss ich sie in einem anderen Format als .mdb abspeichern?
      • gibt es Tricks?

      Hmm... Kuendigen?

      Es wird erzaehlt, dass MS-Access im Dauereinsatz solche Memory-Leaks verursacht, dass man ca. alle Stunde 128 MB mehr RAM braucht - wenn das stimmt, bist Du sowieso gearscht.

      Lord Helmchen

      Hallo,

      hier ist doch wohl die File-Grösse und nicht ein memory-lack das Thema. Die ist bei MS-Access anfänglich natürlich gross, aber das ist doch bei Severdatendanken (z.B. SQL-Server 7 oder Oracle auch nicht anders). Das Wachstum der Datensatzzahl hat dann aber kaum noch einen Effekt. Wir haben eine Access2K-Datenbank mit 600.000 Datensätzen (unterste Tabellenhierarchie), 35 Tabellen, davon 20 mit Index, die hat 50 MB. Über IIS4/ASP und OLE DB hat sie auf NT-Server ca. 20 Leseimpacts/s zu verkraften. Das läuft wie geschmiert. Schliesst man alle Verbindungs- und Recordsetobjekte in den ASP-Skripten sauber ab, treten auch keine Memorylacks auf. Unsere DB läuft so schon 30 Wochen problemfrei. Die gleiche DB als SQL-Server 7 (nicht im Einsatz, sonder nur als Vorbereitung) verbraucht 130 MB.

      Um mal eine Lanze für Access (obwohl von MS) zu brechen.

      Gruss

      Uwe

      1. Hallo Uwe

        Herzlichen Dank für Deinen Input !!!

        Gruss

        Kay

  2. Hallo Kay !

    So ganz werde ich aus deinen Fragen zwar nicht schlau, aber ich versuch trotzdem mal zu antworten :

    Ich will eine Access-Datenbank via mySQL und PHP im Web bedienen.

    Ich verstehe das jetzt mal so :
    Datenpflege offline : MS Access
    Datenbank online : MySQL
    Datenbankzugriff online : PHP

    GEHT !

    Mit Schrecken stelle ich fest: Habe gerade mal 10 Records und das File ist schon fast 300KB gross!!!!

    Das liegt daran, dass bei Access alles in eine Datei gepackt, also die Tabellen, Formulare (eventuell mit Bildern) etc. Da kann es dann passieren, dass man schon mehrere MB 'verbraten' hat, ohne überhaupt einen Datensatz angelegt zu haben.
    Die Datensätze selber nehmen dann aber nur relativ wenig mehr Platz in Anspruch.

    Ein Wechsel auf eine andere DB kommt leider nicht in Frage!

    • muss ich sie in einem anderen Format als .mdb abspeichern?

    Wenn du die Daten jetzt von Access nach MySQL bekommen willst, kannst du sie z.B. per CSV aus Access exportieren und dann online z.b. über phpMyAdmin in MySQL importieren.

    Für Fortgeschrittene gibt es dann auch die Möglichkeit via ODBC direkt mit Access als Frontend auf die MySQL-Datenbank zuzugreifen. Diesen Zugriff erlauben aber viele Provider nicht.

    • gibt es Tricks?

    Deren viele !

    Das wars jetzt mal ganz im Groben. Für Einzelheiten frag einfach noch mal nach.

    Gruß,
    Kerki

    1. Hallo Kerki

      Ich verstehe, dass Du aus meiner Frage nicht ganz schlau wirst. Ich bin mit der ganzen Materie selbst noch nicht ganz vertraut ;O) !

      Offline kann ich via PHP auf eine Access-Datenbank zugreifen. (Software auf meinem PC: M$-Office, Apache, mySQL und PHP, Win98)

      Mein Host bietet momentan noch keine DB-Anbindung. Er hat einen Unix-Server mit Apache und PHP. Wie ich aus dem Befehl '<? phpinfo() ?>, den ich an meinen Server (Domain) gesendet habe weiss, sollte er mySQL eigendlich anbieten (nicht offiziell).

      Eine M$ Access-Datenbank wäre halt für mich schon das bequemste, weil ich diese Software einigermassen beherrsche. So könnte ich die fertige Datei einfach hochladen?

      Drum meine Frage: ist denn diese Lösung nicht zu langsam im Web? Und: Ist es richtig, dass der Host in diesem Fall nur noch einen ODBC-Treiber braucht?

      Danke für Deine Hilfe!

      Kay

      1. Hallo Kay,

        Offline kann ich via PHP auf eine Access-Datenbank zugreifen. (Software auf meinem PC: M$-Office, Apache, mySQL und PHP, Win98)

        Guter Anfang !

        Mein Host bietet momentan noch keine DB-Anbindung. Er hat einen Unix-Server mit Apache und PHP. Wie ich aus dem Befehl '<? phpinfo() ?>, den ich an meinen Server (Domain) gesendet habe weiss, sollte er mySQL eigendlich anbieten (nicht offiziell).

        Wenn dem dann wirklich so ist: auch gut !

        Eine M$ Access-Datenbank wäre halt für mich schon das bequemste, weil ich diese Software einigermassen beherrsche. So könnte ich die fertige Datei einfach hochladen?

        Ab hier wird's falsch.
        Du kannst nicht einfach die .mdb hochladen. Denn dafür muss (natürlich) auch das entsprechende Programm, also Access, auf dem Server laufen. Das dürfte aber auf deinem UNIX-Server etwas schwierig werden. ;-)

        Drum meine Frage: ist denn diese Lösung nicht zu langsam im Web?

        ... und wäre wahrscheinlich auch zu langsam.

        Und: Ist es richtig, dass der Host in diesem Fall nur noch einen ODBC-Treiber braucht?

        Nein, s.o. !

        Mein Vorschlag nachmal : Tabellen als .CSV aus Access exportieren und dann in MySQL importieren. Hierfür gibt es gute Tools, z.B. MySQLAdmin (PHP) oder (für Perl) auch MySQLMan von Gossamer Threads.

        Gruß,
        Kerki

        1. Eine M$ Access-Datenbank wäre halt für mich schon das bequemste, weil ich diese Software einigermassen beherrsche. So könnte ich die fertige Datei einfach hochladen?

          Ab hier wird's falsch.
          Du kannst nicht einfach die .mdb hochladen. Denn dafür muss (natürlich) auch das entsprechende Programm, also Access, auf dem Server laufen. Das dürfte aber auf deinem UNIX-Server etwas schwierig werden. ;-)

          Hallo Kerki,

          diese Aussage ist ebenfalls nicht korrekt. Um eine Access-DB (zumindest unter Windows) anzusprechen benötigst Du _nicht_ die Datenbankanwendung. Dafür ist alleine der ODBC-Treiber zuständig.
          Bei einem Datenbankserver sieht das ganze anders aus. Dieser basiert
          auf der Software und nutzt diese als Grundlage, aber Access und Co. erstellen einfache Dateien, die sich auch ohne die entsprechende Anwendung per ODBC ansprechen lassen.

          Drum meine Frage: ist denn diese Lösung nicht zu langsam im Web?

          ... und wäre wahrscheinlich auch zu langsam.

          Das kommt eigentlich nur auf den Server und die Programmierung an. Wir haben ein Projekt (lediglich ca. 2000 DS und nur lesend) mit ca. 1.000.000 Impressions, und bei fast allen wird auf die Access-DB zugegriffen. Performance-Probleme haben wir nur auf gesharten Servern, die ebenfalls viele DB-Operationen durchführen.

          Und: Ist es richtig, dass der Host in diesem Fall nur noch einen ODBC-Treiber braucht?

          Nein, s.o. !

          Doch, s.o.!

          Zu guter letzt bleibt noch zu sagen, daß ein "richtiger" Datenbankserver natürlich schneller ist als eine Desktopdatenbank, aber für die meisten Projekte reicht eine solche völlig aus.

          Tschau, Stefan

          1. Hallo !

            Sorry, wenn ich hier Mist erzählt habe. Da war ich mir wohl zu sicher.

            Man kann also wirklich einfach eine .mdb auf einen UNIX-Server hochladen und dann mit PHP per ODBC ansprechen ?

            Gruß,
            kerki

            1. Hallo !

              Sorry, wenn ich hier Mist erzählt habe. Da war ich mir wohl zu sicher.

              Man kann also wirklich einfach eine .mdb auf einen UNIX-Server hochladen und dann mit PHP per ODBC ansprechen ?

              Gruß,
              kerki

              Hallo Kerki,

              ob das auf Unix jetzt genauso funzt, kann ich Dir nicht sagen. Auf jedem Windows System (mít oder ohne Access) kann man mit den entsprechenden ODBC-Treibern eine Datenbank ansprechen.
              Sonst würde DB-Server gar keinen Sinn machen, wenn der ganze Kram immer auch auf dem Webserver installiert sein muesste, oder?
              Ich denke, daß es bei Unix eine ähnliche Vorgehensweis gibt. Ansprechen der DB über ODBC (oder wie das jetzt auf einem Ucis-System heisst) ohne die entsprechende Anwendung.

              Tschau, Stefan

              1. Hallo Stefan,

                Irgendwie schwant mir, wir reden hier aneinander vorbei.

                Sonst würde DB-Server gar keinen Sinn machen, wenn der ganze Kram immer auch auf dem Webserver installiert sein muesste, oder?

                Was verstehst du in diesem Zusammenhanh unter 'DB-Server' ?

                Gruß,
                Kerki

  3. Mit Schrecken stelle ich fest: Habe gerade mal 10 Records und das File ist schon fast 300KB gross!!!!

    man kann die groesse der datei etwas verkleinern indem man (in access 2000 zumindest) auf Extras -> Datenbankdienstprogramme -> Datenbank konvertieren -> In verhergehende Acces Datenbank...  klickt

    aus meiner 956KB grossen Access 2000 Datei ist dann eine nur 272 KB grosse Datei geworden.