Ich habe eine Anwendung, die JDBC verwendet, um eine Verbindung zu Oracle 11g herzustellen. Leider läuft der Rechner, auf dem meine App läuft, und der Oracle-Rechner über eine Verbindung mit geringer Bandbreite. Ich habe die Verbindung nicht geschnüffelt, aber ich bin mir ziemlich sicher, dass die Daten, die über die Verbindung strömen, nicht komprimiert sind. Für meine Anwendung interessiert mich mehr die Bandbreite als die Latenz.
Gibt es eine Möglichkeit, dem JDBC-Treiber und Oracle mitzuteilen, die Daten zu komprimieren, die die Verbindung durchlaufen? Google hat viele Antworten auf die Komprimierung von Datendateien, aber ich konnte nichts über die Komprimierung des Netzwerkprotokolls herausfinden.
Ich verwende den dünnen Treiber von Oracle, aber wenn dieser nur vom OCI-Treiber unterstützt wird, könnte ich dazu wechseln. Danke für Anregungen!
Um die Frage direkt zu beantworten, haben die Treiber (Thin oder OCI) keinen solchen Mechanismus zur Komprimierung. Und da die Daten wahrscheinlich in einem funkigen Binärformat gesendet werden, bin ich mir nicht sicher, ob es sich über SSL gut komprimieren lässt. Einige andere Mechanismen zur Verbesserung der Netzwerkleistung müssen eingesetzt werden.
Ich kenne keine genauen Angaben zu Thin und OCI-Treibern von Oracle. Aber Sie können SSH Tunnel verwenden, um Komprimierung .
Richten Sie die Verbindung so ein:
%Vor%Verwenden Sie dann in Ihrer Anwendung localhost: 1521 als Oracle-Adresse.
Nach meiner Erfahrung beeinträchtigt eine hohe Latenz die Leistung der Oracle JDBC-Treiber weit mehr als eine geringe Bandbreite. (zumindest in der Anwendung, an der ich arbeite). Sie sagen, Sie machen sich keine Gedanken über die Latenz, aber könnten Sie eine Schätzung über die Latenz Ihrer Umgebung mit geringer Bandbreite geben?
Wie groß sind die Daten, die Sie senden? Gibt es BLOB-Säulen? Sind andere Technologien beteiligt, z. B. ein Verbindungspool oder Hibernate? Es gibt viele mögliche Faktoren, nicht nur, wenn Ihre Daten komprimiert werden.
Haben Sie WAN-Emulation durchgeführt, um zu versuchen, das zu isolieren, was Ihre Leistung am meisten beeinträchtigt? WANem ist ziemlich einfach einzurichten.
Ich habe Wochen mit diesem Problem verbracht und 100-200ms Latenz haben uns viel mehr geschadet als eine Bandbreitenbeschränkung von 1Mbit. Hoffentlich sind Sie in einem anderen Boot - Kompression ist ein einfacher zu lösendes Problem.
Nur ein Update.
Oracle JDBC-Verbindungen in 12.2 haben jetzt eine Komprimierungsfunktion, wie sie in diesem Post nicht genannt wird: Ссылка
Siehe JDBC-Entwicklerhandbuch zum Aktivieren der Netzwerkkomprimierung. Beachten Sie, dass dies eine 12.2.0.1-Funktion ist.
Tags und Links java oracle compression jdbc