Pages

May 14, 2007

Java ျဖင့္ ေရးသားထားေသာ အေသးငယ္ဆံုး Database

Java 6 မွာ Build in ပါလာတဲ့ Derby Database အေၾကာင္း နည္းနည္း စမ္းၾကည့္ ျဖစ္တယ္။ Database နဲ ့ ပတ္သတ္ၿပီး ဗဟုသုတ သိပ္မရွိဘူးပဲ ေျပာရမလား Derby Database ဆိုတဲ့ နာမည္ကို Java 6 နဲ ့ တြဲၿပီးမွပဲ စၿပီး ၾကားဖူးတာ။ ကၽြန္မ ၾကားဖူးတဲ့ Derby ဆိုတာ England မွာ Derbyshire county မွာရွိတဲ့ Derby ဆိုတဲ့ ျမိဳ ့နဲ ့ Kentucy Derby ဆိုတဲ့ ျမင္းၿပိဳင္ပြဲပဲရွိတယ္။ ေနာက္ၿပီး ကၽြန္မက Database ဆို Oracle , Microsoft SQL Server, MySQL ေတြနဲ ့ပဲ ရင္းႏွီးၿပီး အဲ့ဒီ Database ေတြေလာက္ပဲ ေကာင္းေကာင္း သံုးဖူးတာပါ။

ဖတ္ၾကည့္မွပဲ Java 6 မွာ ပါတဲ့ Derby ဆိုတာ Apache က ထုတ္တဲ့ Opensource Porject တစ္ခု ျဖစ္မွန္းသိလိုက္ရတယ္။ ဖတ္မိသေလာက္ အဓိက သတိထားလိုက္မိတာကေတာ့
Derby ဟာ
- a lightweight database
- a transactional, relational database and provides a small footprint on disk.
ဒီထက္ အေသးစိတ္ သိခ်င္ရင္ေတာ့ Apache Website မွာသြားဖတ္ၾကည့္လို ့ ရပါတယ္။
ကၽြန္မကေတာ့ Java 6 မွာ Derby Database ကို ဘယ္လို သံုးႏိုင္တယ္ ဆိုတာေလာက္ကိုပဲ သိေအာင္ စမ္းၾကည့္ ျဖစ္တယ္။ စာေတြမွာ ေျပာထားတဲ့ အတိုင္း Java 6 မွာ ပါတဲ့ Derby ကို Connect လုပ္ရတာ အေတာ္ေလး လြယ္ကူပါတယ္။ Java 6 ကို Install လုပ္ၿပီး JAVA_HOME နဲ ့ PATH ေတြ ေပးျဖစ္တယ္။ တကယ္ဆိုရင္ Derby ကို သံုးလို ့ရေအာင္အတြက္ derby.jar နဲ ့ derbytools.jar file ေတြကို PATH မွာ Point လုပ္ေပးဖို ့လိုပါတယ္။ ဒါေပမယ့္ ကၽြန္မကေတာ့ အလြယ္လမ္းလိုက္ၿပီး Java folder ေအာက္က db\frameworks\embedded\bin ေအာက္ကိုပဲ Point ေပးထားလိုက္ပါတယ္။ ဘာလို ့လဲ ဆိုေတာ့ အဲ့ဒီေအာက္က ij.bat မွာ အဲ့ဒီ jar files ႏွစ္ခုကို Path ေပးၿပီးသားျဖစ္ေနလို ့ပါ။ ဒီမွာ ij.bat file ပါ။


1. Install JDK 6 update 1
2. set JAVA_HOME=C:\Program Files\Java\jdk1.6.0_01
3. set PATH=%PATH%;%JAVA_HOME%\bin; JAVA_HOME%\db\frameworks\embedded\bin
Derby မွာ ij ဆိုတဲ့ Command-line tool တစ္ခုပါတယ္။ အဲ့ဒီ ij ကို အသံုးျပဳၿပီး Derby database ကို Connect လုပ္ႏိုင္ပါတယ္။ Database တစ္ခု ေဆာက္ရတာ အေတာ္လြယ္ပါတယ္။
connect 'jdbc:derby:DatabaseName;create=true'; ဆိုၿပီး ေပးလိုက္ရင္ Database တစ္ခု Create လုပ္ၿပီးသားျဖစ္သြားတယ္။
4. C:\>ij
5. ij> connect 'jdbc:derby:MyDbTest;create=true';
6. ij>exit;
ကၽြန္မ အေနနဲ ့ ပထမဆံုး MyDBTest ဆိုတဲ့ Database ကို creat လုပ္ၾကည့္လိုက္တယ္။ Database ေဆာက္မေဆာက္ သိခ်င္လို ့ exit နဲ ့ ျပန္ထြက္ၿပီး ျပန္ Connect လုပ္ၾကည့္လိုက္ေတာ့ Database ေဆာင္ၿပီးသားျဖစ္တာကို ေတြ ့ရတယ္။
7. C:\>ij
8. ij> connect 'jdbc:derby:MyDbTest'; //command to connect Database
9. ij> create table mytable (id int
not null
generated always as identity,
name long varchar);
10. ij> show tables;
11. ij> insert into mytable values (default, 'Nay Nay Naing');
12. ij> insert into mytable values (default, 'Su Su');
13. ij> select * from mytable;
ၿပီးေတာ့ Table တစ္ခုေဆာက္ၾကည့္ၿပီး နည္းနည္း စမ္းၾကည့္ျဖစ္တယ္။ ေနာက္ဆို Demonistration ေတြဘာေတြ ျပရင္ ဒီ Database ေလးနဲ ့ ခ်ိတ္ၿပီး ျပလို ့ရမယ္ထင္တယ္။

ကၽြန္မ Java Folder ေအာက္က DB folder size ကို သြားၾကည့္လိုက္တာ 6.7 MB ပဲရွိပါတယ္။ ဒါ Demo, Release Notes, Tools နဲ ့ Documentation အခ်ိဳ ့ပါၿပီးသားပါ။ Apache Site မွာ ဖတ္ရတာကေတာ့ Derby ရဲ့ base engine နဲ ့ embedded JDBC driver size ႏွစ္ခု ေပါင္းမွ 2 MB ပဲရွိတယ္သိရတယ္။ Derby Database က Size သာေသးတာ Client/Server mode Support လုပ္တယ္လို ့လည္း သိရတယ္။ ေနာက္အခ်ိန္ရမွာပဲ အဲ့ဒီ အေၾကာင္း ထပ္စမ္းၾကည့္ေတာ့မယ္။

Derby ရဲ့ Command ေတြကို သိခ်င္တယ္ဆုိရင္ Help ( ij> help ; ) ဆိုၿပီး ေခၚၾကည့္လို ့ရပါတယ္။

Source :
Apache Derby
Sun Developer (JavaDB)

2 comments:

Andy Myint said...

Derby ကို Java 6 ထဲ မထည့္ခင္တုန္းက စမ္းၾကည့္ဖူးပါတယ္။ Java Application တစ္ခုအတြက္ Database ေ႐ြးတုန္းကပါ။ ဒါေပမယ့္ သူ႔ Data file ေတြက Segmented (ဖိုင္ ေသးေသး ေသးေသး ေလးေတြ အမ်ားႀကီး) ျဖစ္ေနတာနဲ႔ မေရြးျဖစ္လိုက္ပါဘူး။ Light Weight ထဲမွာေတာ့ Company က ပိုက္ဆံတတ္ႏုိင္မယ္ဆို Oracle Timesten က ေကာင္းပါတယ္။ ေနာက္ဆံုးေတာ့ Copyright and License ေတာ္ေတာ္ ေခ်ာင္တဲ့ HSQL ကို ေ႐ြးလုိက္ရပါတယ္။ သူ႕ကိုသံုးတဲ့ Application က Open Source ထပ္ျဖစ္စရာ မလိုဘူးေလ။ ေတာ္ေတာ္ျမန္ၿပီး သံုးရတာလဲ လြယ္ပါတယ္။ ေရ႐ွည္မွာေတာ့ IBM တို႔ Sun တုိ႔က Contribute လုပ္တဲ့ Derby က ပိုေကာင္းဖို႔ ႐ွိပါတယ္။ သံုးရင္းနဲ႔ ေကာင္းတဲ့ အခ်က္ေလးေတြ ႐ွိရင္လည္း ေရးပါဦး။

Nay Nay Naing said...

Derby ကို အရင္က ၾကားဖူးရံုေလာက္ပဲရွိတာ ခုလို ့Java 6 မွာပါလာေတာ့မွပဲ စမ္းၾကည့္ျဖစ္တာပါ။ HSQL က JavaDeveloper ေတြ အသံုးမ်ားၾကလုိ ့နည္းနည္းေတာ့ စမ္းၾကည့္ဖူးတယ္။ BSD license ဆိုေတာ့ license ကိစၥလည္း စိတ္ပူစရာမရွိဘူးေပါ့။ အခုအလုပ္မွာက Oracle ပဲသံုးပါတယ္။ Oracle Timesten Light Weight ကိုေတာ့ မသံုးဖူးဘူး။ အခ်ိန္ရမွ စမ္းၾကည့္ပါဦးမယ္။ ဘယ္သူမွ စိတ္မ၀င္စားေလာက္ဖူးထင္တဲ့ ပိုစ့္တစ္ခုမွာ ခုလို စံုစံုလင္လင္ နဲ ့ အက်ိဳးရွိေစမယ့္ comment တစ္ခု ေရးေပးသြားတဲ့ အတြက္ ေက်းဇူးတင္ပါတယ္။ :)

( အလုပ္ရွဳပ္ေနတာနဲ ့ reply လုပ္တာ ေနာက္က်သြားတယ္.. )