2008-11-12 6 views
9

Ich schaue mir eine bestehende Website an und sie verwenden separate Datenbanken. Die Datenbanken scheinen Setup auf die folgende Weise zu sein:Mehrere Datenbanken im Vergleich zu einer einzigen Datenbank

  • allgemeine Typen (user_type, Sprache, Alter, etc.)
  • Mitgliedsdaten (Registrierungsinformationen & Login)
  • Standortkonfiguration

Persönlich würde ich alles in 1 Datenbank setzen. Für mich wäre das einfacher als fast immer den Datenbanknamen vor jeden Tisch stellen zu müssen.

Ich kann aus einer Sicherheits-Perspektive sehen, dass Menschen nicht versehentlich auf die falschen Daten zugreifen können, aber auf dieser Website werden Administratoren (etwa 10% der Benutzer auf der Website), die auf alle zugreifen müssen Datenbanken, die Datenbanksuchen durchsuchen.

Was könnten die Gründe für getrennte Datenbanken sein? (Die Seite ist in PHP & MySQL.)

Edit: Die Namen der db sind:

  • sitename (der eigentliche Name der Seite) (allgemeine Typen)
  • member (Mitgliederdaten)
  • siteconfig (Site-Konfiguration)
+1

Ja, das ist Low-Level-verrückt. Mehr Arbeit für die Programmierer, aber die Auszahlung ist mehr Arbeit für die Programmierer. – MusiGenesis

+0

LOL @MusiGenesis –

Antwort

11

Rein Spekulation auf, was in dem mi war nds der Ersteller:

Vielleicht ein Unterschied in der Datenvolatilität, so dass es eine andere Backup/Replikationsstrategie für die verschiedenen physischen dbs geben könnte?

Vielleicht eine Idee, die sagt, "allgemeine Typen" könnten über mehrere Anwendungen verteilt werden, aber die "Site-Konfiguration" zum Beispiel wäre nur für eine Anwendung spezifisch?

Vielleicht eine Idee, dass die verschiedenen Datenbanken auf verschiedene Hardwareteile, die verschiedene Leistungsmerkmale haben, wie ihre RAID-Konfiguration gesetzt werden können. Daten, die häufig gelesen, aber nicht aktualisiert werden, im Vergleich zu Daten, die häufig aktualisiert werden.

Wieder reine Spekulation ...

@Darryl - meine Antwort ist mehr Archäologie als Technologie. Ich sage nicht, dass ich etwas davon kaufe. Ich versuche nur, in die Denkweise der Vorfahren einzutauchen ...

+5

99% der Archäologie durchforstet die Haufen von Mist, die Menschen hinterlassen, also ist Ihre Analogie ausgezeichnet. – MusiGenesis

+1

Hier! Was für ein guter Name/Titel für diejenigen, die Software pflegen müssen (besonders eine schlecht dokumentierte): Softwarearchäologe! Ich mag das! Und ich mag die Antwort natürlich! – Yarik

0

@Corey Trager: Gute Idee, aber Sie können natürlich sowohl angeben, welche Tabellen zu sichern und auch, wie viel Unterschied würde es nur aus wählen machen einige immer andere Tabellen aktualisieren?

1

Auch reine Spekulation: Vielleicht war es eine architektonische Entscheidung, die Trennung von Bedenken zu unterstützen.

+0

Nicht auf der Termonologie ... können Sie Bedenken erklären? –

+0

Korrigieren Sie mich, wenn ich hier falsch liege, aber im Allgemeinen bedeutet es, dass Sie das Design und die Arbeit trennen und an einen anderen Entwickler weitergeben, um die beste Lösung für dieses Problem anstelle einer generischen Lösung für alles zu finden. –

1

Ich kann mir keinen Grund vorstellen, mehrere Datenbanken für die aufgelisteten Informationen zu erstellen, insbesondere wenn diese Daten vernetzt werden müssen. Es hört sich eher so an, als ob jemand nicht weiß, wie man Berechtigungen verwendet. Anstatt den Zugriff auf Tabellen zu gewähren, haben sie einfach neue Datenbanken erstellt.Nur eine Meinung, aber es wäre wahrscheinlich eine Verbesserung, wenn man die Dinge auf nur eine Datenbank reduziert.

+1

Es ist erstaunlich, was Ignoranz produzieren kann. Ich arbeite mit einer Datenbank, die überhaupt keine Primärschlüssel hat, eine Situation, die dadurch entstand, dass die ursprünglichen Entwickler nicht wussten, wie sie Ansichten erstellen sollten. – MusiGenesis

+0

@MusiGenesis Ich habe das vermisst. :(Was ist der Zusammenhang zwischen dem Fehlen von Primärschlüsseln und dem Erstellen von Ansichten? – Kulingar

0

Wenn es einen guten Grund gäbe, eine Datenbank in eine Reihe kleinerer aufzuteilen, so hätten die Datenbanken wahrscheinlich Namen wie "hadronsupercolliderrawdata" und "googlebackup_2008". Namen wie "generaltypes" und "memberdata" deuten darauf hin, dass sie nur von Dummheit überwältigt wurden.

+1

Gibt es einen Grund, warum Sie die Intelligenz von jemandem aufgrund seines Anwendungsdesigns beleidigen müssen? Vielleicht waren sie (und wahrscheinlich) Anfänger-Programmierer beim Start eines Projekts/Unternehmens Jemand zu sagen ist "blöd", weil das schlechte Design dazu tendiert, dass du so aussiehst. – JM4

+1

@ JM4: zu sagen, dass ich dumm bin, weil ich jemand anderen blöd genannt habe, ist irgendwie, naja, dumm, wenn es dir nichts ausmacht Zu sagen, dass ich ein dicker bin, weil ich jemand anderen blöd genannt habe, wäre völlig korrekt und auch nicht dumm. Was das Fleisch deiner Bemerkung betrifft, waren sie natürlich Anfänger am Anfang eines Projekts - das ist wo Der schlechteste Code kommt aus: – MusiGenesis

+0

@MusiGenesis Ich habe tatsächlich viel von diesem Austausch gelernt, obwohl ich die Dummheit durch "Ignoranz" ersetzt hätte. – Kulingar

Verwandte Themen