2010-11-21 28 views
7

Yaklaşan bir Java servlet uygulamasında gömülü bir veritabanı için karar veriyorum. Ben iki final yarışmacısına aşağı yaşıyorum: SQLiteJDBC "saf Java" sürücüleri ile SQLite, Java DB (aka Derby).Saf Java SQLiteJDBC sürücüleri gerçekten saf mı?

İşte benim katil kriterleri geçerli: Uygulama, özellikle Elimizdeki, Java destekleyen herhangi bir işletim sistemi üzerinde çalışmalıdır Solaris, CentOS, Windows x86 ve tüm uygulamayı çalıştırmak gerekir, Windows x64 hosts. Yükleme işlemi, savaş dosyasını hedef sunucunun dağıtım klasörüne kopyalamaktan ve sunucunun kalanını yapmasına izin vermekten başka bir şey içermemelidir (bu yalnızca bir hedef sunucusuna bir zip kopyalamaktan başka bir şey değildir ve sunucunun açılmasını ve uygulamayı çalıştırmasına izin vermez). Yüklemenin bir parçası olarak yerel ikili dosyalar ile uğraşılmaması ve ek kurulum mantığının olmaması gerekir. (Bu aslında benim gereksinimim değil, tüm sunucu tabanlı uygulamalar için şirketin, ama ben bunu seviyorum).

Ben Derby (Java DB) yukarıdaki kriterleri karşıladığını biliyorum. Bir ya da iki kez yaptım. Ama gerçekten SQLite'nin tek dosya mimarisini ve SQLite topluluğunun Derby'den 20 kat daha büyük olmasını gerçekten seviyorum. Ayrıca Oracle'ın bir gün Derby'i öldüreceği korkusu var, çünkü şimdi şemsiyesi altında beş rakip veritabanı ürünü gibi bir şeyleri var ve sonsuza kadar devam edemez. Derby, temizlik işleri başladığında muhtemelen ilk yaralı olacak.

Yani, SQLite için "saf Java" JDBC sürücülerini olduğunu iddia SQLiteJDBC, bakıyordu. Şimdi, "saf Java" ifadesini, işletim sistemi bağımlılığı veya ek kütüphane olmadığı, herhangi bir işletim sisteminde herhangi bir JVM'de sürücüyü çalıştırabileceği anlamına gelir. Bu yüzden saf Java sürücüleri ile jar dosyasını alıyorum. Ve meraklı bir şekilde, ona bakıyorum.

linux-amd64.lib
linux-x86.lib
mac-universal.lib
kazan-x86.lib şu şekildedir: O zaman, bu ".Lib" uzantılı kök 4 dosyalarını içeren fark

Ok, bu nedenle, bunda ne var ne yok? Bunlar adlandırılmış işletim sistemi için yerel kütüphaneler gibi mi? Öyleyse, bu saf Java sürücüsünün yalnızca jarte uygun bir lib dosyasıyla bir platformda çalışacağını varsayabilir miyim? Eğer durum böyleyse, SQLite'i rakiplerin listesinden çıkarmalıyım çünkü winX64 ve Solaris bizim iki önemli işletim sistemimiz.

Veya belki de yanlış yorumlanabilir ettik ve saf Java sürücü gerçekten saf Java ve herhangi bir JVM üzerinde çalışacak?

Tüm yanıtlar hoş geldiniz! peşin

sayesinde John

cevap

2

Eğer doğru anlamak, SQLiteJDBC kendisi Tip 4 JDBC sürücüsü ama SQLite hala bir C-tabanlı bir çözümdür ve yapar çünkü hala ev sahibi işletim platformuna bazı yerli ikili entegrasyon gerektirir bildiğim kadarıyla, Oracle için SQL * Net gibi bir ağ entegrasyonu/protokol katmanına sahip değilsiniz. SQLiteJDBC ana sayfası, GCC tarafından desteklenen herhangi bir dil için bir "NestedVM" uygulamasından bahseder, bu nedenle GCC çalışma zamanı ortamı olduğunda çapraz platformun dağıtımı mümkün görünmektedir. Bununla birlikte Solaris'den söz edilmiyordu.

+0

Cevabınız için teşekkür ederiz. NestedVM veya GCC Runtime hakkında bilgi sahibi olmadığımı itiraf ediyorum. Bunları hızlı bir şekilde okudum ve bunun tüm hedef sunucularda kesinlikle geçerli olacak bir gereksinim olup olmadığını (özellikle GCC Çalışma Zamanı gerekliliği) anlayamadım.Solaris kutularımızın çoğunun mümkün olduğunca az "ekstra gizem" dahil olmak üzere kurulduğunu biliyorum. Ve bu uygulama düzinelerce sunucuya dağıtılmış olabilir ve ben hepsini ilk veteriner yolu yoktur. İçgüdülerim Derby ile yapışmamı söylüyor. –

+0

Oh ve kafamın içine Windows x64 kutularını attı! Bir GCC Çalıştırıcısı'nın kurulması çok olası değil mi? Yani, kavanozdaki lib dosyaları listesinde bulunmayan SQLLiteJDBC, fazladan konfigürasyon olmadan üzerinde çalışmayacaktı, düşünürdüm. –

+1

Doğru. Win64 zaten kendi hıçkırı payıyla geliyor :) Cygwin muhtemelen en popüler Linux/GNUish runtime ortamlarından biridir, ancak genellikle açık kurulum gerektirir: Userland'da popüler bir görev değil. FYI: Bu sayfa, OSS Java DB Motorları hakkında genel bir özet bilgiye sahiptir: http://java-source.net/open-source/database-engines. – JTP

3

http://www.xerial.org/trac/Xerial/wiki/SQLiteJDBC - onlar daha hızlı olarak mümkün .Lib sağlanan dosyaları kullanıyor olsa, saf Java uygulaması sağlar.

+0

Bu bilgi için teşekkürler. Yani, yukarıda belirtilen SQLiteJDBC kullanmak için sağlanan herhangi bir .lib dosyası olmayan bir platformda, hala çalışır? –

İlgili konular