Cumartesi, Aralık 30, 2006

HSQLDB

Her programcının uygulama geliştirirken muhakkak ihtiyaç duyduğu yazılımlardan bir tanesi de veritabanıdır. Eğer işyerinde yazılım yapıyorsanız, muhtemelen bir sunucuda yüklü Oracle'ı kullanıyorsunuzdur. Evde yazılım geliştirenler ise daha çok local'lerine yükledikleri MySql veya Postgre veritabanlarını kullanıyorlardır.

Bu yazımda sizlere local'linizde uygulama geliştirirken kullanabileceğiniz veya geliştirdiğiniz uygulamayı kullanıcılara demo amaçlı dağıtırken kullanabileceğiniz basit, hafif, hızlı, yetenekli ve java tabanlı bir veritabanından bahsetmek istiyorum.

HSQLDB; Thomas Mueller'in Hypersonic SQL veritabanı olarak başlattığı, daha sonra 2001 yılında bir topluluk tarafından devam ettirilen ve şu an 380.000 download rakamıyla SourceForge'un Top 50 listesinde bulunan open-source bir veritabanıdır.

HSQLDB'nin en önemli özelliği, java tabanlı olması nedeniyle özel bir kuruluma gerek kalmadan her işletim sisteminde kolayca çalıştırılabilir hale gelmesi. Bu nedenle internet dünyasında veritabanına ihtiyaç duyan çoğu uygulama demo versiyonları içine HSQLDB gömerler ki kullanıcılar hemen uygulamalarını kullanabilsinler. Bu yüzden Tomcat + HSQLDB ikilisi çok yaygın kullanılır:

Connecting JIRA to a database
JIRA Standalone: As part of its installation process, JIRA Standalone automatically installs, configures and connects itself to an HSQLDB database. This is fine for evaluation purposes, but for production installations, you should connect JIRA to an enterprise database. This also lets you take advantage of existing database backup and recovery procedures.

Ayrıca dünyada bir milyondan fazla kullanıcısı bulunan OpenOffice (Microsoft Office'in open-source rakibi), veritabanı olarak 8GB'da kadar veri saklayabilen HSQLDB kullanır.

The product is currently being used as a database and persistence engine in many Open Source Software projects and even in commercial projects and products. In it's current version it is extremely stable and reliable. It is best known for its small size, ability to execute completely in memory, its flexibility and speed.

Bu yazının sonunda ayrıca HSQLDB'nin temel özelliklerini bulabilirsiniz. Daha fazla bilgi için http://hsqldb.org/ adresine göz atmanız gerekecek. Bu arada Thomas Mueller Hypersonic SQL'i devretmiş ama boş durmamış yine java tabanlı bence çok daha süper veritabanı geliştirmiş. Bir sonraki yazımda ondan bahsedeceğim.

Features Summary
# 100% Java
# A full RDBMS (Relational Database Management System), with the Object capabilities of Java
# Switchable source code to support JDK 1.1.x, 1.2.x, 1.3.x, 1.4.x and above
# Super fast startup and SELECT, INSERT, DELETE and UPDATE operations
# Standard SQL (Structured Query Language) syntax
# Inner and outer joins, SELECT queries as correlations in joins
# Scalar (single value) SELECTS, correlated subqueries including IN, EXISTS, ANY, ALL
# Views, Temp tables and sequences
# Primary key, unique and check constraints on single or multiple columns
# Indexes on single or multiple columns
# ORDER BY, GROUP BY and HAVING
# COUNT, SUM, MIN, MAX, AVG and statistical aggregate functions (also in expressions and function arguments)
# Full support for SQL expressions such as CASE .. WHEN .. ELSE .. , NULLIF etc.
# SQL standard autoincrement column support plus sequences
# Transaction COMMIT, ROLLBACK and SAVEPOINT support
# Referential Integrity (foreign keys) with full cascading options (delete, update, set null, set default)
# Multiple schemata per database
# Java stored procedures and functions
# Triggers
# Database security with passwords, user rights and roles with GRANT and REVOKE
# Extensive set of ALTER TABLE commands allowing change of column type
# In-memory tables for fastest operation
# Disk based tables for large data sets
# Text tables with external file data sources such as CSV files
# In-memory (like applets), embedded (into Java applications) and Client-Server operating modes
# Three client server protocols: HSQL, HTTP and HSQL-BER - can run as an HTTP web server - all with SSL option
# Can be used in applets, read-only media (CD), inside jars, webstart and embedded applications
# Multiple databases per JVM
# Disk tables (CACHED TABLE) up to 8GB and text tables up to 2GB each
# Size of each string and binary data item only limited by memory
# Full support for PreparedStatement objects to speed up query processing
# 95% JDBC interface support with batch statement and scrollable ResultSet functionality
# All JDBC 1 data types supported, plus 'Object' , Boolean, Blob and Clob
# Full JDBC 2 DatabaseMetaData and ResultSetMetaData support
# Database dump as SQL script with or without data
# Powerful and compact java command line and GUI tools for database management

3 Yorum:

Blogger Tonguç dedi ki...

Mustafa selam,

Oracle Express Edition(XE) ile evde ve çeşitli başlangıç iş uygulamaları için tüm özellikleri ile Linux ve Windows üzerinde tamamiyle ücrestiz indirip, kolayca kurup, kullanmaya başlayabilirsin.

Oracle Application Express(ApEx) XE içinde ekstra konfigurasyon yapmaya gerek olmadan hazır gelir. Dolayısı ile özellikle yeni başlayanlar için tamamiyle ücretsiz geliştirme ve yayma yapılabilicek bir ortam bu.

Bazı özellik kısıtları dışındaki tüm denemelerimi XE üzerinde senelerdir rahatlıkla yapıyorum, daha önemlisi sanki bir virtual machine gibi evde geliştirdiğim SQL, PL/SQL ve ApEx uygulamalarını şirketteki Hp veya Solaris makinalar üzerindeki Oracle veritabanlarına kolaylıkla aktarıyorum. Kısıtların listesi için;

Oracle® Database Express Edition Licensing Information 10g Release 2 (10.2)
http://download-uk.oracle.com/docs/cd/B25329_01/doc/license.102/b25456/toc.htm#BABJBGGA

Oracle Database XE üzerinde Release 2 kodu mevcut, işletimdeki son sürümdür. Daha detaylı bilgi ve indirmek için;

Oracle Database 10g Express Edition
http://www.oracle.com/technology/xe/index.html

Kısa bir özet;

"Fast to download; and simple to administer. Oracle Database XE is a great starter database for:

* Developers working on PHP, Java, .NET, XML, and Open Source applications
* DBAs who need a free, starter database for training and deployment
* Independent Software Vendors (ISVs) and hardware vendors who want a starter database to distribute free of charge
* Educational institutions and students who need a free database for their curriculum

Oracle Database XE can be installed on any size host machine with any number of CPUs (one database per machine), but XE will store up to 4GB of user data, use up to 1GB of memory, and use one CPU on the host machine.

After installation, be sure to register for an exclusive Oracle Database 10g Express Edition Discussion Forum hosted by Oracle expert Tom Kyte"

Umarım faydalı olur yazdiklarim,
Bu fırsatla senin ve ağ kütüğünün okuyucularının yeni yılını ve bayramını kutluyorum.
Tonguç


--
http://tonguc.wordpress.com

12:02 ÖS  
Blogger Suat ATAN dedi ki...

Mustafa Bey Merhabalar;
Ben de bir dönem HSQLDB'nin bahsettiğiniz özelliklerinden faydalanmak amacı ile kullanmış bir de küçük bir uygulama yazmıştım:
Adresi:
http://suatatan.com/component/option,com_docman/task,cat_view/Itemid,39/gid,30/orderby,dmdatecounter/ascdesc,DESC/

Yanlız HSQLDB'den aciz olma nedenim şudur:
Netbeans altında MySQL veya hangi veritabanını kullanırsanız kullanın
Services adlı liste alıtndan driverini yükleyip yazılım projenize dahil ediyorsunuz(malum olduğu üzere) ancak HSQLDB'in driverini yükleyip projeye dahil edebilsem de HSQLDB'in açılıp kapatılırken kullanılan tuhaf açma kapama fonksiyonlarından dolayı netbeans altında kullanamadım.
Bunun yerine yaptığım alternatif araştırmasında:
SmallSQL'i buldum. SmallSQL taşınabilirlik boyutu ile HSQLDB'e benziyor tek farkı webde kullanılabilirliğinin olmaması (gerçi denemedim ama smallsql'in webde kullanıldığına da rastlamadım) bir de çoklu bağlantıya (network) izin vermemesi. Ancak yine de işi gördüğü söylenebilir.
HSQLDB'i halen kullanmak istiyorum çünkü bedava JSP hosting hizmeti veren;
hostingjava ve myjavaserver adlı sitelerin mysql desteği yok HSQLDB destekleri var.
Ama yukarıda bahsettğim sorunlardan dolayı HSQLDB'e küstüm.
Yardımınız olursa sevinirim.
www.suatatan.com

7:56 ÖS  
Blogger Mustafa Tan dedi ki...

Selamlar Suat Bey,

Ben şahsen Eclipse kullanıcısıyım bu yüzden NetBeans'de çok tecrübem yok.

Lakin Hypersoniq çok yaygın kullanılan bir veritabanı ve NetBeans'de sorunlu çalışma ihtimali düşük.

Zaten http://www.netbeans.org/features/all.html linkinde de bahsedildiği gibi NetBeans'in Hypersoniq desteği mevcut.

Belki de sizin uygulamaya has veya kullandığınız web sunucusuna has bir sorun olabilir. Hangi web sunucusunu (Tomcat, Resin, JBoss, vs.) kullanıyorsunuz?

Bu arada Hypersoniq'e de network seviyesinde bağlantı açamazsınız. Bu tip veritabanları gömülü uygulamalar için tasarlanmıştır. Bağlantı sağlayacak uygulamalar aynı JVM içerisinde olmalı.

9:25 ÖS  

Yorum Gönder

Kaydol: Kayıt Yorumları [Atom]

<< Ana Sayfa