Überkreuzen Sie mehrere Schemas in MySQL. Privilegien und Leistung

8

Ich baue zwei Anwendungen, die einige Daten in einem gemeinsamen Schema teilen. Ich benutze MySQL als RDBMS. Hier ist mein erstes Schema ( test_schema_1 ):

Und zweitens ( test_schema_2 ):

Ich habe kürzlich gelernt, dass ich JOINs zwischen mehreren Schemas machen kann. Wenn ich mit einem root-Benutzer verbunden bin (unbegrenzter Zugriff auf alles), mache ich:

%Vor%

Und nimm was ich erwarte! Das sieht sehr cool für mich aus, da ich daran denke, mit diesem Design in die Produktion zu gehen.

Aber ich habe ein bisschen Angst vor den Auswirkungen auf die Leistung eines solchen Designs? Ist das eine gute Idee? Was ist, wenn ich in Zukunft beschließe, die Datenbank auf verschiedenen Rechnern zu zerlegen (in der MongoDB-Terminologie)?

Ich wundere mich auch über Sicherheitsprobleme. Derzeit habe ich einen separaten Benutzer für jedes Schema:

%Vor%

Ich erwarte also, dass der Benutzer t1 nicht von test_schema_2 lesen kann. Aber die obige Abfrage funktioniert. Er kann sogar in test_schema_2 einfügen:

%Vor%

Was vermisse ich?

    
madhead 14.11.2013, 19:33
quelle

2 Antworten

7

MySQL unterhält einen einzigen Satz von Puffern für alle Datenbanken. In Bezug auf Performances ist es egal, ob sich Tabellen in verschiedenen Datenbanken befinden.

Ihr Anwendungsfall ist Boderline, scheint aber ein vernünftiger Fall für die Aggregation von Daten aus separaten Datenbanken zu sein.

Ich würde jedoch mit dieser Architektur vorsichtig sein. Wenn Ihre Anwendungen beginnen, mehr als nur ein paar Tabellen zu teilen, fragen Sie sich, ob es sich bei diesen Anwendungen um wirklich unterschiedliche Anwendungen oder vielmehr Module derselben Anwendung handelt. Im letzteren Fall wäre es sinnvoll, alle Tabellen in einer einzigen Datenbank zu haben.

Wenn Sie Bedenken hinsichtlich der Sicherheit haben, beachten Sie bitte, dass die meisten Zugriffsrechte gewährt werden können auf einer pro-Tabelle (oder sogar pro Spalte) Basis .

    
RandomSeed 18.11.2013, 15:16
quelle
1

Zunächst sollten Sie die Sicherheitseinstellungen anpassen. Wahrscheinlich haben Ihre Benutzer Zugriff auf alle Schemas gewährt. Um die Dinge einfach zu halten, rufen Sie Folgendes auf:

%Vor%

Der zweite Teil handelt von Ihren Schemata. Grundsätzlich ist dies kein Problem, verschiedene Schemas abzufragen. Wenn Sie bezüglich Sicherheitsproblemen verwirrt sind, würde ich Ihnen empfehlen, Ihre Abfrage auf eine Prozedur umzustellen. Und was zu tun ist, ist es noch einfacher, verschiedene Schemata zu zerlegen.

    
Michael Cheremuhin 18.11.2013 08:18
quelle

Tags und Links