2009-12-23 7 views
8

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. Bei meiner Anwendung interessiert mich mehr Bandbreite als Latenz.Oracle Verbindungskompression?

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 Netzwerkprotokollkomprimierung herausfinden.

Ich verwende den dünnen Treiber von Oracle, aber wenn dies nur vom OCI-Treiber unterstützt wird, könnte ich dazu wechseln. Danke für Anregungen!

Antwort

3

Um die Frage direkt zu beantworten, haben die Treiber (Thin oder OCI) keinen solchen Mechanismus für die 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. Ein anderer Mechanismus zur Verbesserung der Netzwerkleistung muss eingesetzt werden.

+0

Die Komprimierung mit SSH-Tunneln mit JDBC kann die Latenz verringern –

9

Ich kenne keine genauen Angaben über die Thin und OCI-Treiber von Oracle. Aber Sie könnten SSH Tunnel verwenden, um compression zu erreichen.

  1. In Ihrem Oracle-Rechner richten Sie also einen SSH-Daemon ein. Wenn Ihr Oracle-Server unter RedHat Linux ausgeführt wird, sind Sie fertig
  2. Auf Ihrem Client-Rechner (der Ihre Anwendung hostet, die über JDBC eine Verbindung herstellt) richten Sie eine SSH-Verbindung ein und aktivieren einen komprimierten Tunnel. Sie können die Befehlszeile SSH oder Putty verwenden (wenn Sie unter Windows sind), um das zu tun.

-Setup die Verbindung zu etwas wie folgt aus:

$ ssh -L1521:localhost:1521 [email protected]_ip 

Dann in Ihrer Anwendung verwenden localhost: 1521 als Oracle-Adresse.

+0

Nein, eine VPN-Verbindung wird sicherlich ** nicht ** funktionieren. Es gibt eine begrenzte Menge an Bandbreite - zusätzlicher VPN-Overhead wird sicherstellen, dass * weniger * tatsächliche Daten pro Paket gespeichert werden. –

+0

Während das eine Möglichkeit ist, hoffe ich zu sehen, ob der Oracle-Treiber dies eingebaut hat, um es einfach zu halten. – joev

+2

Dies ist kein VPN. Es ist nur ein Tunnel. Und es ** wird ** funktionieren. Wenn Sie einen komprimierten Tunnel verwenden und das, was Sie übertragen möchten, komprimiert werden kann (wie große Mengen an Text oder XML), wird es komprimiert. –

5

Meiner Erfahrung nach beeinträchtigt die hohe Latenz die Leistung der Oracle JDBC-Treiber weit mehr als die niedrige Bandbreite. (zumindest in der Anwendung, an der ich arbeite). Sie sagen, dass Sie sich keine Gedanken über die Latenz machen, aber könnten Sie die Latenz Ihrer Umgebung mit niedriger Bandbreite einschätzen?

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 eine WAN-Emulation ausgeführt, um zu versuchen, 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 als eine 1Mbit Bandbreitenbeschränkung geschadet. Hoffentlich sind Sie in einem anderen Boot - Kompression ist ein einfacher zu lösendes Problem.

+0

64-Byte-Pings brauchen nur 4ms, das ist also nicht so schlimm. Keine BLOBs, aber viele INSERT-Aktivitäten. Kein Verbindungspooling, es ist eine einzelne Verbindung. Staffing ist ein wenig Licht für die Ferien, so dass ich im Moment nicht tief in die WAN-Diagnose einsteigen kann. Das schien die nächste naheliegende Sache zu sein. Aber danke für den Zeiger auf WANem, ich werde mich darum kümmern! – joev

+1

Wenn es nur 4ms ist, werde ich sagen, dass Sie recht haben, sollte diese Latenz eine sehr minimale Rolle spielen. –