2009-12-23 23 views
8

Oracle 11g'ye bağlanmak için JDBC kullanan bir uygulamam var. Maalesef uyguladığım makine çalışıyor ve Oracle makinesi biraz düşük bant genişliği bağlantısıyla bağlanıyor. Bağlantıyı koklamadım, ancak bağlantı boyunca veri akışı sıkıştırılmamış olduğundan eminim. Uygulamam için, bant genişliği hakkında gecikmeden daha çok endişeliyim.Oracle bağlantı sıkıştırması?

JDBC sürücüsüne ve Oracle'a bağlantıdan geçen verileri sıkıştırması için bir yol var mı? Google, veri dosyası sıkıştırması için birçok yanıt buluyor, ancak ağ protokolü sıkıştırmasıyla ilgili hiçbir şey bulamadım.

Oracle'ın ince sürücüsünü kullanıyorum, ancak bu yalnızca OCI sürücüsü tarafından destekleniyorsa, buna geçebilirdim. Önerileriniz için teşekkürler!

cevap

3

Soruyu doğrudan yanıtlamak için, sürücülerin (ince veya OCI) sıkıştırma için böyle bir mekanizması yoktur. Ve gönderilen veriler biraz korkak ikili formatta olduğundan, SSL üzerinden iyi sıkıştırılacağından emin değilim. Ağ performansını iyileştirmek için başka mekanizmaların kullanılması gerekecektir.

+0

JDBC ile SSH tünelleriyle sıkıştırmayı kullanmak, gecikmeyi azaltabilir –

9

Oracle'ın ince ve OCI sürücüleri hakkında ayrıntılı bilgiler bilmiyorum. Ancak compression elde etmek için SSH tünellerini kullanabilirsiniz.

  1. Bu nedenle, Oracle makinenizde bir SSH arka planı oluşturuyorsunuz. Oracle sunucunuz RedHat Linux altında çalışıyorsa, işiniz bittiğinde
  2. İstemcinizdeki makinede (JDBC'ye bağlanan uygulamanızı barındıran) bir SSH bağlantısı kurun ve sıkıştırılmış bir tünel etkinleştirin. Bunu yapmak için SSH veya Putty komut satırlarını (eğer pencerelerin altındaysanız) kullanabilirsiniz.

Kur böyle bir şey için bağlantısı:

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

Ardından, uygulamada, localhost kullanın: 1521 Oracle'ın adresi olarak.

+0

Hayır, bir VPN bağlantısı kesinlikle ** çalışmaz. Sınırlı miktarda bant genişliği var - VPN ek yükünün eklenmesi, * daha az * gerçek verinin paket başına saklandığından emin olacak. –

+0

Bu bir olasılık olsa da, Oracle sürücüsünün bu yerleşik olup olmadığını görmeyi umuyorum, basit tutmak için. – joev

+2

Bu bir VPN değil. Bu sadece bir tünel. Ve ** işe yarayacak. Sıkıştırılmış bir tünel kullanıyorsanız ve iletmeye çalıştığınız şey sıkıştırılmış olabilir (büyük miktarda metin veya XML gibi) ve sıkıştırılacak. –

5

Deneyimlerime göre, yüksek gecikme süresi, Oracle JDBC sürücüleri kullanılarak düşük bant genişliğinden çok daha fazla performansa zarar veriyor. (en azından üzerinde çalıştığım uygulamada). Gecikme hakkında endişe etmediğinizi söylüyorsunuz, ancak düşük bant genişliği ortamınızın gecikme süresi hakkında bir tahminde bulunabilir misiniz?

Gönderdiğiniz veriler ne kadar büyük? BLOB sütunları var mı? Bağlantı havuzu veya Hazırda Bekletme gibi başka teknolojiler var mı? Verileriniz sıkıştırılıyorsa, pek çok potansiyel faktör vardır.

En çok neyin performansınızı düşürdüğünü ayırmak için herhangi bir WAN emülasyonu yaptınız mı? WANem, kurulumu oldukça kolaydır.

Bu soruna haftalar harcadım ve 100-200 ms gecikme süresi 1Mbit bant genişliği sınırlamalarından çok daha fazla zarar verdi. Umarım farklı bir teknedesiniz - sıkıştırma sorunu çözmek için daha kolay bir problem.

+0

64 bytes ping ack-ed olmak için sadece 4ms alıyor, bu yüzden o kadar da kötü değil. BLOB yok, ancak bir çok INSERT etkinliği. Bağlantı havuzu yok, tek bir bağlantı. İşe alım tatil için biraz ışık, bu yüzden şu an için derin WAN teşhislerine giremiyorum. Bakmak için bir sonraki açık şey gibi görünüyordu. Ama WANEM'e gösterdiğiniz için teşekkürler, ona bakacağım! – joev

+1

Sadece 4ms ise, bu gecikmede haklı olduğunuzu söyleyeceğim çok düşük bir rol oynamalıdır. –