Announcement

Collapse
No announcement yet.

Datenbank design

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Datenbank design

    Hi,

    Ich habe ein Projekt, bei dem ich eine vielzahl an oop objekten in eine db speichern will. Jedes objekt besitzt eine Liste von einem zweiten objekt2.

    Gibt es eine möglichkeit ein Table im Table zu erzielen?


    Mein Gedanke war die unterobjekte alle in ein table mit verweis auf die Mutter zu packen.
    Allerdings habe ich 30.000 hauptobjekte mit jeweils 30 oder mehr unterobjekten.
    Das table hätte also über 1Mio Einträge. Bei ca. 100 Zugriffen pro Sekunde geht der Server sicher in die Knie, oder?

    Ein anderer Gedanke war die Unterobjekte2 per php serialize() in die db zu schreiben. Funktioniert auch ganz gut (da nur noch 30.000 Einträge in der db). Aber es ist nicht wirklich das, was ich mir unter schönem style vorstelle. Zudem kann man nun per sql keine schönen selects ausführen.

    Da es sicher viel mit oop und sql gibt, und das Problem ja sicher häufiger auftritt, mal die Frage wie oder mit was man das machen könnte.

    Danke
    PL

  • #2
    Hi,

    Du kannst einerseits einen Mapper wie Hibernat verwenden,d er die Objekte auf eine Relationale Struktur mappt.
    Eine weitere Möglichkeit wäre, wenn Du (falls vorhanden) objektrelationale Erweiterungen deiner DB verwendest. Allerdings würd ich davon abraten, da Du dir damit deutlich mehr Komplexität einhandelst und die daten mit normalem SQL nicht mehr so einfach anzuzeugen sind.

    Das table hätte also über 1Mio Einträge. Bei ca. 100 Zugriffen pro Sekunde geht der Server sicher in die Knie, oder?
    Wieso? Ist dein Server so schwach konfiguriert? Des weiteren ist es egal ob die Tabelle 1, 5 oder 100 Millionen Einträge hat, wichtig ist es richtiges SQL und die korrekte Indizierung zu verwenden.

    Dim
    Zitat Tom Kyte:
    I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

    Comment


    • #3
      Originally posted by dimitri View Post
      Wieso? Ist dein Server so schwach konfiguriert? Des weiteren ist es egal ob die Tabelle 1, 5 oder 100 Millionen Einträge hat, wichtig ist es richtiges SQL und die korrekte Indizierung zu verwenden.

      Dim
      Erst mal danke für die Antwort.

      Ich weiß vielleicht nicht, wie sql arbeitet. Aber ich dachte wenn ich eine Anfrage wie "SELECT * FROM objekte WHERE whatever=4" mache, dass sql dann die kompletten Einträge der tablelle objekte durchgeht und sich die passenden rauspickt.

      Und ob ich nur 30.000 Einträge habe oder 1Mio macht das IMMO nen Faktor 30 aus. Ich habe bisher halt nur mit tablen mit max 5000 Einträgen gearbeitet, und kann nicht beurteilen was ein server so verträgt.
      Wenn die Länge eines tables nichts ausmacht, dann hätte ich ja kein Problem, und wäre glücklich

      Comment


      • #4
        Dafür gibt es Indiezes, die einen schnellen Zugruff auf prozentuale kleine Ergebnismengen bietet. Ein normaler Zugriff wie Du ihn beschrieben hast mit einer Ergebnismenge von sagen wir 1000 Zeilen dauert über einen Index nur einige hunderstel Sekunden.

        Dim
        Zitat Tom Kyte:
        I have a simple philosophy when it comes to the Oracle Database: you can treat it as a black box and just stick data into it, or you can understand how it works and exploit it as a powerful computing environment.

        Comment


        • #5
          ah. coole Sache.

          Vielen Dank

          Comment

          Working...
          X