Membuat Database Oracle TimesTen Baru


Oracle TimesTen adalah sebuah database yang dioptimalkan untuk penggunaan in-memory.   Berdasarkan apa yang diiklankan, algoritma yang dipakai TimesTen mengandaikan bahwa seluruh data terdapat di memory sehingga dioptimalisasikan berdasarkan karakteristik memori bukan hard drive.   Kode program aplikasi pun dapat mengambil keuntungan dari database in-memory.   Sebagai contoh, masalah yang sering dihadapi dalam aplikasi bisnis adalah perhitungan total (misalnya total untuk nilai dari transaksi atau total untuk jumlah item yang tersedia).   Umumnya nilai total tersebut disimpan dan diperbaharui secara bertahap setiap kali ada perubahan transaksi (baik itu tambah, edit, atau hapus).   Agregasi seperti ini kerap membuat kode program menjadi lebih rumit dan rentan kesalahan.   Bila memakai database in-memory, kode program dapat melakukan perhitungan total untuk seluruh data yang ada kapan saja tanpa harus terlalu mengkhawatirkan masalah kinerja.

Seperti database in-memory lainnya, Oracle TimesTen tetap membutuhkan hard drive untuk keperluan logging/backup dan untuk menyimpan data secara permanen.   Sebuah database TimesTen diwakili oleh direktori yang berisi file data.   Database ini akan dirujuk oleh sebuah Data Manager DSN (Data Source Name).   Koneksi pertama kali ke sebuah DSN akan memindahkan database TimesTen yang dirujuknya ke memori.

Untuk membuat sebuah Data Manager DSN baru, saya membuka Control Panel, Administrative Tools, dan Data Sources (ODBC).   Pada dialog yang muncul, di tab User DSN, saya men-klik tombol Add… seperti yang terlihat pada gambar berikut ini:

Membuat DSN Baru

Membuat DSN Baru

Pada dialog Create New Data Source yang muncul, saya memilih TimesTen Data Manager 11.2.2, lalu men-klik tombol Finish seperti yang diperlihatkan pada gambar berikut ini:

Memilih Driver

Memilih Driver

Akan muncul sebuah dialog TimesTen ODBC Setup dimana saya bisa melakukan beberapa pengaturan.   Sebagai contoh, saya melakukan pengaturan pada tab Data Store menjadi seperti yang terlihat pada gambar berikut ini:

Atribut Data Store

Atribut Data Store

Data Source Name adalah DSN yang dipakai sebagai pengenal dalam melakukan koneksi nantinya.   Saya meletakkan lokasi dimana file database akan disimpan pada atribut Data Store Path.   Pada konfigurasi di atas, file database akan disimpan di folder C:\latihan dan setiap file database akan diawali dengan nama test.   Pada Database Character Set, saya memilih AL32UTF8 untuk memakai unicode.

Tab berikutnya, First Connection, adalah daftar atribut yang dipakai hanya pada saat koneksi pertama kali ke database (dimana database akan dipindahkan dari file ke memori).   Saya mengisinya seperti terlihat pada gambar berikut ini:

Atribut First Connection

Atribut First Connection

Nilai Permanent Data Size dan Temporary Data Size menentukan jumlah memori yang dipakai oleh database TimesTen ini.   Permanent data adalah bagian memori yang mewakili tabel dan index.   Isi dari permanent data akan dibaca dari file pada saat koneksi pertama kali dan akan disimpan ke file pada proses checkpoint.   Sebaliknya, isi dari temporary data akan hilang pada saat database dibersihkan dari memori.   Temporary data menampung cursor dan struktur data lainnya yang diperlukan pada saat mengerjakan query.   Pada database yang saya buat ini, ukuran permanent data adalah 256 MB dan ukuran temporary data adalah 128 MB.

Sebuah database yang tidak dapat menyimpan data secara permanen tidak akan banyak berguna.   Lalu, bila seluruh data ada di memori, kapan perubahan di memori akan ditulis (disimpan) ke file?   Aplikasi dapat memberikan perintah untuk mengerjakan operasi checkpoint, atau menunggu terjadinya operasi checkpoint.   Checkpoint adalah sebuah proses dimana isi database yang ada di memori akan dipindahkan ke file.   TimesTen mengerjakan checkpoint di balik layar secara otomatis sesuai dengan periode yang telah ditentukan.   Karena checkpoint merupakan operasi yang berat (menulis ke file), maka sebaiknya checkpoint tidak terlalu sering dilakukan.   Jangan lupa bahwa operasi checkpoint yang jarang dikerjakan meningkatkan resiko kehilangan data bila terjadi kegagalan sistem.   Khusus untuk menghindari hilangnya data akibat pemadaman listrik, gunakan UPS.   Untuk mengatur kapan operasi checkpoint dikerjakan, saya mengisi nilai atribut Ckpt Frequency (secs) (per detik) atau Ckpt Log Volume (per jumlah data yang telah diproses).   Sebagai contoh, pada database percobaan ini, saya mengatur agar operasi checkpoint bekerja setiap 1.800 detik atau 30 menit.

Pastikan bahwa tanda centang pada Auto create telah diberikan.   Konfigurasi ini menyebabkan TimesTen akan membuat file database secara otomatis bila sebelumnya tidak ada.   Walaupun demikian, saya tetap perlu membuat folder database (pada konfigurasi saya adalah c:\latihan) secara manual.

Pada tab berikutnya, General Connection, saya tidak melakukan perubahan.   Atribut yang menarik pada tab ini adalah durable commits. Saya tidak memberikan tanda centang di durable commits.   Ini menyebabkan seluruh transaksi saya adalah non-durable commit.   Bila perubahan data bersifat kritis (tidak boleh sampai hilang!), maka saya perlu memberikan tanda centang pada pilihan durable commits sehingga transaksi yang di-commit akan langsung ditulis ke log file pada saat itu juga.   Hal ini akan berdampak pada kinerja database in-memory, tetapi resiko kehilangan data akibat kegagalan sistem juga ikut berkurang.   Selain itu, aplikasi tetap mendapatkan keuntungan kinerja pada operasi SELECT yang hanya membaca data.

Pada tab NLS Connection,  saya memastikan bahwa character set yang dipakai untuk koneksi database sama dengan character set yang dipakai oleh database sehingga TimesTen tidak perlu melakukan konversi.

Atribut NLS Connections

Atribut NLS Connections

Saya tidak akan menjalankan database ini sebagai IMDB Cache (cache bagi Oracle Database) sehingga saya tidak mengubah tab IMDB Cache.   Saya akan melakukan direct connection di komputer yang sama dan tidak melakukan koneksi client-server sehingga saya juga tidak perlu mengatur tab Server.   Demikian juga saya juga membiarkan tab PL/SQL begitu saja tanpa perubahan.

Setelah selesai mengisi seluruh atribut yang ada, saya men-klik tombol OK.   Sampai disini, saya telah membuat Data Manager DSN bernama LATIHAN.

Langkah berikutnya, saya membuka Control Panel, Services untuk memastikan bahwa service TimesTen Data Manager 11.2.2 telah dijalankan.   Alternatif lainnya, saya dapat menjalankan TimesTen Data Manager melalui Command Prompt seperti yang terlihat pada gambar berikut ini:

Menjalankan TimesTen Data Manager dari Command Prompt

Menjalankan TimesTen Data Manager dari Command Prompt

Setelah itu, saya akan memakai tool ttIsql untuk mencoba melakukan koneksi ke database.   Tool ini bekerja mirip seperti mysql di database MySQL Server atau sqlplus di Oracle Database.   Satu hal yang penting adalah koneksi pertama ke database akan membuat file database bila belum dibuat sebelumnya dan memindahkan file database ke memori.   Untuk saat ini, hanya instance administrator saja yang berhak untuk menjalankan database saya pertama kalinya.   Instance administrator adalah user di sistem operasi yang memiliki akses untuk mengelola Oracle TimesTen.

Saya tidak menentukan UID (nama user) di Data Manager DSN yang saya buat sehingga nama user akan diambil dari nama user sistem operasi yang sedang saya pakai saat ini.   Jadi, saya hanya perlu memastikan bahwa user ini adalah user yang sama dengan yang men-install Oracle TimesTen.   Setelah itu, saya memberikan perintah seperti yang terlihat berikut ini:

C:\>ttIsql LATIHAN

Copyright (c) 1996, 2013, Oracle and/or its affiliates. All rights reserved.
Type ? or "help" for help, type "exit" to quit ttIsql.

connect "DSN=LATIHAN";
Connection successful: DSN=LATIHAN;UID=Snake;DataStore=C:\latihan\test;Dat
abaseCharacterSet=AL32UTF8;ConnectionCharacterSet=AL32UTF8;DRIVER=C:\TimesTen\TT
1122~1\bin\ttdv1122.dll;PermSize=256;TempSize=128;LogFlushMethod=1;CkptFrequency
=1800;TypeMode=0;PLSCOPE_SETTINGS=IDENTIFIERS:NONE;RangeIndexType=1;
(Default setting AutoCommit=1)
Command>

Setelah perintah di atas, file database akan dibuat dan isinya akan dipindahkan ke memori.   File database tersebut adalah test.ds0, test.ds1, test.log0, test.res0, test.res1, dan test.res2.   Saya juga dapat melihat status memori dengan memberikan perintah dssize pada ttIsql seperti yang terlihat berikut ini:

Memeriksa status memori

Memeriksa status memori

Perihal Solid Snake
I'm nothing...

Apa komentar Anda?

Please log in using one of these methods to post your comment:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s

%d blogger menyukai ini: