Nehmen wir an, ich habe die Hauptdatenbank namens db1. Es gibt auch eine andere Datenbank namens db2. Manchmal muss ich Daten von db2 erhalten. Ist es besser, direkt Daten von db2 zu erhalten oder in db1 anzuzeigen?Lesen von Daten aus einer anderen db
Antwort
Wenn Sie Daten von db2 erhalten, sollten Sie für jede Abfrage Ansichten in db2 erstellen. Warum? Um Schnittstellen zu erstellen. Wenn jemand in db2 Änderungen vornimmt, kennt er Ihre Abfragen nicht, die von db1 ausgeführt werden. Ihre Abfragen können nicht mehr funktionieren. Wenn Sie Ansichten für Ihre Abfragen in db2 und in der db1-Abfrageansicht @ db2 erstellen, wird für jeden, der die Struktur in db2 ändert, eine ungültige Ansicht angezeigt, falls seine Änderungen Ihre Abfragen beschädigt haben.
Natürlich meine ich Situation, wenn Ihre Abfragen in Pakete oder Ansichten eingebettet sind. Wenn Sie nur für analytische Zwecke abfragen, macht es keinen Unterschied, wenn Sie es direkt tun, mit Sicht auf db1 oder Sicht auf db2 tun Sie einfach so, wie es für Sie geeignet ist. Aber gute Praxis ist, Schnittstellen zu setzen, also würde ich empfehlen, Sicht auf db2 für Datasets zu erstellen, die später von db1 abfragen. Es kann auch sinnvoll sein, eine zusätzliche Sicht oder ein Synonym auf der Seite db1 zu erstellen, um beide Seiten zu haben.
Großartig. Danke für die Beantwortung meiner Frage. – Kristjan
Sie müssen zuerst einen Treiber für die Verbindung mit DB2, einen TNS-Verbindungseintrag für Oracle und eine Datenbankverbindung in Oracle einrichten, um auf die Verbindung zu verweisen.
Wichtig ist, dass Sie so weit wie möglich versuchen, Änderungen in der einen DB von der anderen zu isolieren.
Ich habe dies verschiedene Wege gemacht, aber das hat für mich gearbeitet;
- Erstellen Sie für jede Tabelle, die Sie in DB2 abfragen, eine DB2-Sicht von JUST auf die gewünschten Spalten aus dieser Tabelle.
- Erstellen Sie in Oracle eine Ansicht, die DB2_VIEW @ DB2_database abfragt. Obwohl es nicht unbedingt notwendig ist, fragen Sie einfach die gewünschten Spalten ab - es ist eine gute Übung.
- Erstellen Sie ein Synonym für die Ansicht und führen Sie eine Abfrage durch. Wenn sich die Quelle der Daten ändert und die Ansicht durch eine andere ersetzt wird, können Sie das Synonym so ändern, dass es auf die neue Ansicht zeigt, anstatt den Code zu ändern.
Zusammenfassung: Wenn ich nicht falsch verstanden haben Sie scheinen zu fragen zu sein, sollte ich die Tabelle direkt in DB2 abzufragen oder sollte ich gehen durch Ansichten? Ich schlage vor, dass das Durchgehen von Ansichten dich von Änderungen an jedem Ende bis zu einem gewissen Grad isoliert, also benutze die Ansichten.
toll, danke! Beantwortete alle Fragen, die ich hatte. – Kristjan
- 1. Daten aus einer Datenbank lesen?
- 2. Kopieren von Daten von einem DB in einen anderen DB
- 3. Daten von anderen Aktivitäten lesen
- 4. Lesen von Daten aus einer PLIST-Datei
- 5. Lesen von CSV-Daten aus einer Datei
- 6. Lesen von Daten aus einer Datei
- 7. Abfrage von einer anderen DB nicht möglich
- 8. Abrufen von Daten aus DB
- 9. Fehler beim Lesen der Daten aus `Sqlite` DB
- 10. Einfügen von Daten aus einer anderen Tabelle
- 11. C Lesen von Daten aus einer Datei und Speichern von Berechnungen in einer anderen Datei
- 12. Lesen von Daten aus Texttabelle
- 13. Ein Cookie aus einer anderen Domäne lesen
- 14. Lesen von Daten aus Dateinamen
- 15. Lesen von Daten aus Excel
- 16. Tabelle aus einer anderen Datenbank lesen
- 17. Lesen Sie sqlite3 db Daten in uint64_t
- 18. Bash Daten aus einer Variablen lesen
- 19. Wie Geschwindigkeit Daten lesen in Mongo DB
- 20. Funken Lesen von Daten aus MySQL parallel
- 21. Lesen von Daten aus einer Datei in eine Struktur (C)
- 22. Lesen von Zeilen aus einer anderen Shell mit Pipeline
- 23. Lesen von Cookies aus einer anderen Domäne lavel mittels AngularJS
- 24. Express.js Speichern von Daten aus Antwort-DB
- 25. Laden von Daten aus db mit Inhaltsanbieter
- 26. Lesen Daten senden von einem anderen Server
- 27. SQL Server DB direkt von einer anderen DB wiederherstellen
- 28. können keine Daten aus einer Textdatei lesen
- 29. csv - nehmen Sie Daten von einer Spalte aus einer anderen
- 30. Daten von Array aus einem anderen Thread
Viele Faktoren zu beachten. Gibt es eine schnelle Verbindung zwischen Datenbanken? Sind es viele Daten? Ist es wahrscheinlich, dass sich eine Datenbank bewegt? Was meinst du mit "make in db1 anzeigen", müsste dies noch auf db2 zugreifen? – JohnHC
Danke für Ihre Antwort! Ich bin nicht wirklich so gut über Datenbanken, aber es gibt 2 Möglichkeiten für mich, dieses Ding zu implementieren. Erstens referenziere ich db2, wenn ich eine Abfrage in db1 mache. SELECT * FROM db2.table1 oder ich den ersten Blick (Ansicht erstellen v_db1 SELECT * FROM db2.table1) erstellen und dann, wenn ich die Tabelle in db2 brauche ich SELECT nur * von v_db1 Ich würde gerne wissen, Wann man den 1. oder 2. Weg benutzt. Und was ist der Unterschied zwischen diesen 2. Ich hoffe, ich habe es deutlicher gemacht, was ich denke – Kristjan