Rabu, 21 Maret 2018

Fast Ethernet

“FAST ETHERNET” 
A. Pengertian Fast Ethernet
   Fast Ethernet adalah merupakan sebuah sebutan untuk teknologi jaringan Ethernet yang menawarkan kecepatan yang lebih tinggi dibandingkan dengan standar Ethernet biasa. Kecepatan yang ditawarkannya mencapai 100 megabit per detik. Standar-standar yang dibuat untuk teknologi ini adalah 100BaseTX, 100BaseFX, 100BaseT4, dan 100BaseVG. Disebut juga 100BaseX.
   Pada dasarnya, Fast Ethernet adalah lompatan kemajuan Ethernet kedua, yaitu Ethernet yang bekerja pada kecepatan transfer 100 Mbps. Itu artinya, sebuah informasi dan paket data yang dikirimkan, dapat memiliki kecepatan transfer yang cepat dan tinggi, yaitu sebesar 100 Mbps. 
   Berdasarkan  kecepatan transfer seperti tabel dia atas, maka aliran juga arus data pada sebuah komputer PC,  desktop ataupun laptop standar menjadi jauh lebih cepat. Penggunaan Fast Ethernet ini sudah menjadi sebuah penggunaan kartu jaringan atau NIC standar yang banyak digunakan pada komputer dan juga PC desktop ataupun laptop versi low end hingga mid sampai high end. 
Fast Ethernet ini banyak digunakan pada: 
 Personal Laptop atau PC Desktop dari level low hingga mid sampai high  
 Beberapa perangkat elektronik, seperti media player  
 Perangkat keras komputer, seperti proyektor dan juga monitor  
 Router , Access Point,  Bridge, dan juga perangkat keras jaringan komputer lainnya  

B. Tipe Fast Ethernet 
Tipe Fast-Ethernet bergantung pada jenis media yang digunakan adalah sebagai berikut: 
a) 100BASE-FX 
100BASE-FX adalah versi Fast Ethernet dari serat optik. Versi ini menggunakan 1300nm- inframerah (NIR)  dengan panjang gelombang cahaya yang ditransmisikan melalui dua helai serat optik, satu untuk menerima (RX) dan yang lainnya untuk mengirimkan (TX). Panjang maksimum adalah 400 meter (1.310 kaki) untuk setengah-dupleks koneksi (untuk memastikan  tabrakan terdeteksi), dan 2 kilometer (6.600 kaki) untuk full-duplex melalui multi- mode serat optik. 100BASE-FX menggunakan pengkodean 4B/5B yang sama dan kode NRZI baris yang tidak 100BASE-TX. 100BASE-FX harus menggunakan SC, ST, LC, MTRJ atau MIC konektor dengan SC menjadi pilihan yang lebih disukai. 100BASE-FX adalah tidak kompatibel dengan 10BASE-FL, 10 Mbps versi atas serat optik. 
b) 100BASE-T4 
100BASE-T4 adalah implementasi awal Fast Ethernet. Hal ini membutuhkan empat pasang tembaga twisted, tetapi mereka pasang hanya diperlukan untuk kategori 3 daripada kategori 5 yang dibutuhkan oleh TX. Satu pasangan dicadangkan untuk mengirimkan, satu untuk menerima, dan dua sisanya akan beralih arah sebagai negosiasikan. Sebuah kode 8B/6T memberikan performa yang luar biasabila digunakan untuk mengkonversi 8bit data menjadi 6 basis-3 digit (sinyal membentuk adalah mungkin karena ada tiga kali lebih banyak 6-digit basis-3 karena ada angka 8-digit basis- 2 nomor). Menghasilkan 3-digit basis-3 simbol yang dikirim secara paralel lebih dari 3 pasang menggunakan 3-tingkat-pulsa modulasi amplitudo (PAM-3).  Fakta bahwa 3 pasang digunakan untuk mengirimkan dalam setiap arah membuat 100BASE-T4 inheren half-duplex. Standar ini dapat diimplementasikan dengan CAT 3, 4, 5 UTP kabel, atau STP jika diperlukan terhadap interferensi. Jarak maksimum dibatasi sampai 100 meter. 100BASE-T4 tidak banyak digunakan, tetapi teknologi yang dikembangkan untuk digunakan dalam 1000BASE-T. 
c) 100BASE-T 
Fast Ethernet 100Base-T merupakan standar IEEE 802.3u. Teknologi ini menggunakan prinsip 10 Base-T dengan  protokol CSMA/CD tetapi memilik bit rate 100 Mbps. Teknologi ini mendapat dukungan dari Intel, 3Com, DEC, SUN, Syn Optics, Wellfelt, dan National Semi Conductor. 
      Fast Ethernet ini menggunakan kabel UTP, STP atau serat optik. Jarak optimum atntara dua node kurang dari 220 m, sedangkan jarak optimum antara 2 hub kurang dari 10 m. Pada Fast Ethernet ini duggunakan 2 jenis Hub, yaitu: 
1. Shared hub (Single Conversation) Pada shared hub, kecepatan transmisi data dari server dan terminal sama yaitu 100Mbps dibagi rata untuk semua port. Jadi masing-masing port yang ada bersifat dependent.  
2. Swicthed Hub (Multiple Conversation) Kecepatan  transmisi data maksimum antara server dan setiap  terminal tidak dibagi rata untuk semua port dan dimungkinkan masing-masing port memilik kecepatan yang berbeda pada swicthed hub. Misalnya 10 ata 100Mbps. Jadi masing-masing port bersifat independent dan hub yang ada berfungsi sebagai jalan tol. 
   100BASE-T adalah salah satu dari beberapa standar Fast Ethernet untuk kabel twisted pair, termasuk: 100BASE-TX (100 Mbit/s melalui dua pasang kabel CAT5 atau lebih baik),  100BASE-T4 (100 Mbit/s melalui empat pasangan Cat3 atau lebih baik kabel, mati), 100BASE-T2 (100 Mbit/s melalui dua pasang kabel Cat3 atau lebih baik,juga tidak berfungsi). Panjang segmen untuk kabel 100BASE-T adalah terbatas pada 100meter (328 kaki) (seperti dengan 10BASE-T dan Gigabit Ethernet). Semua atau yang standar dibawah IEEE 802.3 (disetujui 1995). Hampir semua 100BASE-T instalasi100BASE-TX. 
     100BASE-TX adalah bentuk dominan dari Fast Ethernet, dan berjalan lebih dari dua pasang kawat didalam category 5 atau diatas kabel.  Pada 10BASE-T  pasangan aktif dalam koneksi standar yang berakhir pada pin 1, 2, 3 dan 6. Karena kabel kategori 5 yang khas berisi 4 pasang dapat mendukung dua 100BASE-TX link dengan adaptor kabel. Kabel adalah kabel konvensional dengan standar  pemutusan TIA/EIA- 568-B's, T568A atau T568B. Tempat pasangan aktif pada pasangan oranye dan hijau (pasangan kedua dan ketiga kanonik). Setiap segmen jaringan dapat memiliki jarak maksimum 100 meter (328 kaki). Dalam konfigurasi yang khas, 100BASE-TX menggunakan satu pasang kabel twisted pair di setiap arah, menyediakan 100 Mbps throughput di setiap arah (full-duplex).         Konfigurasi 100BASE- TX jaringan sangat mirip dengan 10Base-T. Ketika digunakan untuk membangun jaringan area lokal, perangkat pada jaringan (komputer, printer, dll) biasanya terhubung ke sebuah hub atau switch, menciptakan jaringan bintang. Atau mungkin untuk menghubungkan dua perangkat secara langsung menggunakan kabel cross-over. Dengan 100BASE-TX hardware, bit utuh (4 bit lebar 25 MHz clock pada MII) melalui pengkodean binner 4B/5B untuk menghasilkan  serangkaian simbol 0 dan 1 clock pada 125 MHz tingkat simbol. Pengkodean 4B/5B menyediakan DC dan pemerataan membentuk spektrum. Sama seperti dalam kasus 100BASE-FX, bit kemudian ditransfer ke lapisan  lampiran medium fisik menggunakan pengkodean NRZI.  

DAFTAR PUSTAKA  
[1] Sutedjo, Budi, 2003, Konsep & Perancangan Jaringan Komputer, Yogyakarta, Andi Offset. 
[2] Wikipedia, 2018, Fast Ethernet, https://id.wikipedia.org/wiki/Fast_Ethernet, diakses pada 10 Maret 2018. 
[3] Dini, 2015, Pengertian  Fast Ethernet dan Giga Ethernet, https://dosenit.com/jaringan- komputer/hardware-jaringan/pengertian-fast-ethernet-dan-gigabit-ethernet diakses pada 9 Maret 2018. [4] S’to, 2014, Networking+: 100% Illegal, Yogyakarta, Jasakom. 
[5] Thakur, Dinnesh, Fast Ethernet : 100 Base-TX, 100 Base-FX, 100 Base-T4,  http://ecomputernotes.com/computernetworkingnotes/communication-networks/fast- ethernet, diakses pada 10 Maret 2018.




Kamis, 07 Desember 2017

OODB (Object Oriented Databases)

PEMBAHASAN OODB
A.    Pengertian Object

Objek merupakan kesatuan entitas (baik), baik yang berwujud nyata ataupun hanya satu sistem yang memodelkan dunia nyata. Setiap object diidentifikasi oleh object identifier(OID), dan juga memiliki state dan behavior. State terdiri dari nilai object properties. Properti dari sebuah object dapat berupa atribut atau relasi antar object. Sedangkan behavior dispesifikasikan oleh operasi atau method yang dapat dieksekusi oleh sebuah object melalui propertinya.


B.     Karakteristik Object

Sebuah object, mempunyai:
·      identifier : unique id
·      name : unique name dalam DB (optional)
·      lifetime : menetapkan apakah object persistent atautransient
·      structure : pembangunan object menggunakantype constructors

C.  Struktur Objek

State (current value) dari object bias dibangun dari object lain (other values) dengan menggunakan type constructors tertentu.
Constructors :
·      Basic types        : atom, tuple dan set
·      Collection type : list, bag dan array

D.  Konsep Object Oriented
·      Abstract Data Types
mendefinisi Kelas, menyediakan ekstensi untuk jenis atribut kompleks
·      Encapsulation
Melaksanaan operasi dan struktur objek tersembunyi
·      Inheritance
Membagi data dalam lingkup hirarki, mendukung reusabilitas kode
·      Polymorphism
Operator overloading

E.  Definisi OODB
Object oriented database adalah sebuah model basis data yang informasinya direpresentasikan dalam bentuk objek, seperti yang digunakan pada pemograman berorientasi objek. OODB direkomendasikan ketika ada kebutuhan bisnis untuk memproses data yang kompleks.Sesuai dengan namanya, OODB adalah gabungan kemampuan basis data yang dikombinasikan dengan bahasa pemograman berorientasi objek. Lebih lanjut, OODB ini tidak hanya menjadi jenis baru dari basis data, tapi juga menghasilkan sistem manajemen basis data (SBD) yang dinamakan Object Database Management System (ODBMS).Kemampuan yang dimiliki oleh bahasa pemograman berorientasi objek antara lain:
·      tipe data abstrak
·      inheritance (pewarisan)
·      identitas objek.

Jika dikombinasikan dengan basis data, akan menjadi OODB yang persisten, mendukung adanya transaksi, query yang simple untuk data yang besar, akses dan control yang konkuren, keamanan, dan data recovery.Beberapa basis data berorientasi objek didesain agar bisa bekerja dengan baik dengan bahasa pemograman tertentu seperti Phyton, Perl, Java, C#, Visual Basic .NET, Objective-C, dan Smalltalk.

F.   Struktur Object di OODB
Paradigma OODB didasarkan pada enkapsulasi data dan kode. Seperti yang telah diketahui, enkapsulasi menyebabkan isi dari sebuah objek tidak terlihat di dunia luar objek tersebut. Secara konsep, semua interaksi antara objek dan sistem di luar dirinya dilakukan via messages. Interface antara objek dan sistem di luar dirinya inilah yang dinamakan kumpulan dari pesan (set of messages).
Secara umum, sebuah objek berasosiasi dengan
·      Sebuah himpunan variable (a set of variables) yang mengandung data untuk objek dan variable yang berkorespondensi dengan atribut di model E-R.
·      Sebuah himpunan pesan (a set of variables); kesinilah objek member respon. Tiap pesan bisa mempunyai 0, 1 atau banyak parameter.
·      Sebuah himpunan method (a set of variables) ; masing-masingnya adalah badan kode untuk mengimplementasikan pesan. Method mengembalikan nilai sebagai respon pesan.
Diilustrasikan dengan mengambil contoh entitas employee dalam basis data bank. Misalnya gaji tahunan karyawan dihitung dengan cara yang berbeda untuk tiap karyawan. Manajer mendapatkan bonus sesuai dengan performa bank, sedangkan teller mendapat bonus berdasarkan jumlah jam mereka bekerja. Dalam kasus ini, semua objek employee berhubungan dengan message gaji-tahunan, tapi mereka dihitung dengan cara yang berbeda. Dengan mengenkapsulasi informasi bagaimana mendapatkan gaji tahunan karyawan dalam objek employee, semua objek employee bisa menampilkan interface yang sama. Karena hanya interface external yang ditampilkan oleh sebuah objek adalah a set of message yang berhubungan dengan objek tersebut, maka dimungkinkan untuk memodifikasi definisi method dan variable tanpa mempengaruhi sisa sistem lain.

G. Object Classes dalam OODB
Biasanya, ada banyak objek yang sama dalam basis data. Sama di sini maksudnya mereka merespon message yang sama, menggunakan method yang sama, dan mempunyai variable untuk nama dan tipe yang sama. Akan sangat sia-sia jika kita harus mendefinisikan masing-masing objek secara terpisah. Oleh karena itu, kita menggabungkan objek-objek yang sama ini dalam sebuah class (kelas). Masing-masing objek adalah instansiasi dari kelasnya.

H.  Inheritance (Pewarisan)
Sebuah skema OODB biasanya membutuhkan banyak kelas. Namun, kebanyakan dari kelas-kelas itu serupa. Misalnya, OO untuk aplikasi bank, customer dan employee bank bisa dikatakan serupa karena mempunyai atribut/variable yang sama, seperti nama, alamat, dll. Namun, tentu saja tidak semuanya sama dan ada variable spesifik yang hanya dimiliki oleh customer atau employee saja. Objek yang mempunyai beberapa variable yang sama ini bisa didefinisikan dalam sebuah representasi jika kita menggabungkannya dalam satu kelas.  Representasi langsungnya bisa dengan menyediakan tempat untuk kelas dalam sebuah spesialisasi hierarki (“ISA” relationship). Kita bisa mengatakan bahwa employee adalah sebuah spesialisasi dari person dan customer juga spesialisasi dari person, karena sama-sama memiliki atribut yang dimiliki oleh person.
    Konsep dari hierarki kelas serupa dengan konsep dari hierarki spesialisasi yang kita kenal dalam model ER. Variable dan method yang dimiliki oleh employee dan customer bisa diasosiasikan dengn kelas person. Spesialisasi kelas ini dikenal juga dengan subclass. Maka employee adalah subclass dari person, customer juga subclass dari person.



Dalam banyak kasus, bisa terjadi multiple inheritance, yang mengizinkan sebuah kelas untuk menurunkan variable dan method dari multiple superclasses. Hubungan kelas-subkelas direpresentasikan dengan adanya directed acyclic graph (DAG) di mana setiap kelas bisa memiliki lebih dari satu superclass.
Contoh kasus multiple inheritance ini adalah basis data sebuah universitas. Dalam sebuah universitas, person bisa menjadi student ataupun teacher. Jadi di basis data universitas ada kelas student dan ada kelas teacher, yang merupakan subclass dari person. Tapi terdapat juga kasus di mana ada student yang juga bekerja sebagai teacher-assistant, yang mana kelas teacher-assistant ini adalah subkelas dari kelas student dan kelas teacher.
Pada kasus-kasus tertentu terjadi ambiguitas jika ada variable yang sama, misalnya student mempunyai departemen tertentu, begitu juga dengan teacher. Ambiguitas akan terjadi pada teacher-assistant, di mana sebagai student dia memiliki departemen dan sebagai teacher juga begitu. Namun, hal ini bisa diakali dengan memberi nama berbeda untuk departemen tiap kelas (jangan hanya menggunakan kata ‘dept’, tapi pakai ‘student-dept‘ dan ‘teacher-dept’), atau membuat treat error untuk kasus seperti ini, atau jika susah, user terpaksa membuat kelas baru, yaitu kelas teacher-assistant. Tapi diingatkan lagi, kasus ambiguitas ini tidak selalu terjadi.

Contoh multiple inheritance:


I.     Object Identity (Identitas Objek)
Sebuah objek akan menyimpan identitasnya walaupun ada beberapa atau semua nilai dari variablenya berubah-ubah atau method-nya didefinisikan ulang. Sistem OO biasanya menggunakan sebuah object-identifier untuk mengidentifikasi objek. Objek identifier harus unik, yang artinya tidak ada 2 objek yang memiliki identifier yang sama. Sebaiknya, user langsung membuat identifier yang unik untuk setiap objek dan tidak menggunakan system-generated identifier karena identifier yang dibuat akan bergantung pada sistem dan bisa menjadi redundan.
Identitas objek bisa berupa nilai (value), misalnya primary key objek yang mengidentifikasi objek tertentu; atau bisa menggunakan nama (biasanya dipakai pada sistem file, satu file dengan file lain dibedakan dari namanya).

J.    Object Containment
 Terkadang, ada objek yang mengandung objek lain. Objek ini disebut complex object atau composite object. Misalnya, pada sebuah sepeda. Sepeda adalah satu objek, yang memiliki roda. Roda adalah objek baru, namun dimiliki oleh sepeda. Roda sendiri juga memiliki ban,  jeruji/velg. Makanya, containment ini juga bisa memiliki banyak level, yang menciptakan hierarki containment antar objek. Hubungan antar kelas dalam containment ini adalah is-part-of, bukan is-a. Hubungan antar  kelas digambarkan dalam skema dengan menggunakan DAG juga.
 Dengan adanya containment, user yang berbeda bisa melihat data-data tertentu sesuai dengan kebutuhannya. Misalnya seorang wheel-designer bisa fokus pada kelas roda, tanpa terlalu memperhatikan objek lain yang juga merupakan komponen penyusun sepeda seperti rem, dll.

K. Kelebihan OODB

·      Bisa menspesifikasikan structure dari object dan behaviornya (methods).
·      Interaksi yang lebih baik dengan bahasa pemrograman berorientasi object seperti java dan C++
·      Definisi kompleks dan user-defined jenis
·      Enkapsulasi operasi dan user-defined metode

L.       Kekurangan OODB
·         Tight coupling
Coupling berarti keterkaitan antara aplikasi dan database. Tight coupling berarti keterkaitan yang kuat antara aplikasi dan database sehingga aplikasi dan database sulit dipisahkan.
·         Kurangnya dukungan platform
sampai sekarang kebanyakan OODBMS hanya mendukung bahasa pemrograman C++ dan Java saja.
·         Sulit bermigrasi
Cara penyimpanan dan pengambilan data dalam OODB sangat berbeda dengan RDB. Begitu juga dengan cara pengaksesannya. Oleh karena itu, dibutuhkan komitmen yang kuat dalam memilih DBMS yang akan digunakan, sekali bermigrasi ke OODB, akan sulit untuk kembali ke RDB.
·         Kebutuhan ketrampilan 
Karena OODB masih tergolong baru dan masih relatif jarang penggunaannya, cukup sulit menemukan orang yang memiliki pemahaman OODB bila dibandingkan dengan orang yang memiliki pemahaman RDB.
·         Query yang kompleks
Kemampuan logika yang mendalam sangat diperlukan dalam OODB. Masing-masing OODB dapat memiliki cara pemanggilan query yang berbeda-beda.


M.OODBMS
 OODBMS merupakan database management system (DBMS) yang mendukung pemodelan dan pembuatan data sebagai objek.OODBMS mendukung2 kriteria DBMS dan object-oriented.

N.      Keuntungan OODBMS
·   Pemeliharaan dan perpanjangan database yang lebih mudah
·   Teknologi yang memungkinkan untuk area aplikasi yang tidak dilayani oleh RDBMS
·   Tingkat abstraksi yang diberikan oleh OODBMS berguna untuk pengguna pemula
·   Kopling yang efisien ke jaringan pemrosesan terdistribusi
·   Kerja Koperasi Bantuan Komputer Aids

O.  Kerugian OODBMS
·   Tidak ada fondasi yang kuat dimana teknologi berbasis;
·   Kurangnya standar internasional;
·  Transfer ke atau integrasi dengan sistem warisan

KESIMPULAN

Setelah penjabaran dalam makalah ini, dapat disimpulkan bahwa OODB memodelkan data sebagai sebuah objek sehingga jika programmer yang ingin menambahkan tipe data baru dengan membuat proyek baru. Pengaksesan dan pengolahan data murni dilakukan dengan pemograman OO. Hal ini tentu saja berbeda dengan RDB yang memodelkan data dengan tabel terformat. Tabel-tabel inilah yang berisi tipe data.
Melihat masih cukup banyaknya kekurangan OODB ini, sebelum memutuskan untuk memakai ODBMS ada baiknya mempertimbangkan kekurangan yang sudah diuraikan di atas.  Mempertimbangkan faktor kebutuhan dan ketersediaan aplikasi serta platform.
Pada beberapa aplikasi tertentu penggunaan OODB mungkin sangat tepat. Sebaliknya untuk beberapa aplikasi lainnya OODB mungkin akan menjadi hambatan serius. Contohnya OODB tidak cocok digunakan untuk menyimpan data transaksi yang besar seperti data keuangan, kepegawaian dan data transaksi bank. Di sini mungkin lebih baik memilih RDB. OODB bagus digunakan menggunakan tipe data multimedia dan data yang sifatnya kompleks.





DAFTAR PUSTAKA

Heryanto, Bambang, “Esensi-esensi pemograman Java”, Penerbit Informatika, Bandung: 2007

Rabu, 11 Oktober 2017

Manajemen Transaksi (Basis Data)

Manajemen Transaksi

Transaksi
Transaksi adalah sebuah unit dari eksekusi program yang mampu mengakses dan mengupdate berbagai data yang memiliki kaitan logika transaksi itu sendiri dimana dalam menjaga konsitensi data secara terintegrasi dipertahankan. Sebuah transaksi harus menghasilkan konsistensi database jika sebuah transaksi tersebut sudah dijalankan, atau dengan kata lain setelah transaksi selesai maka database harus kembali konsisten.
Konsistensi suatu database berkaitan erat dengan integritas data, sehingga untuk menjamin integritas tersebut suatu database dalam menjalakan sebuah transaksi harus memiliki sifat –ACID :
1.   ATOMIK : Dimana semua operasi dalam transaksi harus bekerja secara utuh/total atau tidak bekerja sama sekali (artinya pekerjaan transaksi tidak boleh dikerjakan sebagian).
2.   CONSISTEN : Dampak eksekusi dari sebuah trnasaksi harus menjamin keadaan data yg konsisten.
3.   ISOLASI : Pada sejumlah Transaksi yang terjadi secara bersamaan , setiap transaksi tidak boleh terpengaruh transaksi lainnya yang juga sedang berjalan walaupun berhubungan atau menujun pada database yang sama. Hasil transaksi sementara harur terjaga dan terlindungi dari eksekusi-eksekusi yang lain.
4.   DURABILITY : Setelah terjadinya transaksi maka akan diikuti update atau perubahan data pada database, maka perubahan tersebut harus tetap bertahan dan dianggap paling valid dan konsisten.

Dalam Basis Data, Transaksi merupakan satuan unit kerja yang berisi perintah-perintah, yang dimulai dengan klausa BEGIN TRANSACTION dan diakhiri dengan COMMIT atau ROLLBACK.

1.    Membuat Tabel account dengan type Innodb

Type table InnoDB adalah salah satu tipe table dalam MySql yang mengadopsi Enggine Oracle, (beberapa type table dalam my saql adalaha Heap, ISAM,
MERGE, MyISAM, BDB dll) namun beberapa kemampuannya terbatas. Type Tabel InnoDB memungkinkan kita memakai transaksi yang mendukung ACID dan memiliki fasilitas row level locking. Type Tabel InnoDB ini telah mendukung kemampuan-kemampuan dalam pengolahan data yg besar dengan sifat 
“Transaction-Safe” diantara memiliki kemampuan Commit, Rollback dan Crash Recovery. Kemampuan – kemapuan ini dirancang untuk kinerja yang maksimum ketika memproses data data dengan volume besar. Type table ini memiliki kemampuan automatic crash recovery, namun tidak dapat disetup “dipoint” mana recovery ini dilakukan layaknya chek point recovery pada Oracle.

Untuk mengechek apakah InnoDb ada pad MySql:

Mysql> show variables li ‘%have%’
Welcome to the MySQL monitor.  Commands end with ; or \g. Your MySQL connection id is 1 to server version: 5.0.22-community-nt Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql> show variables like '%have%';
+-----------------------+--------------+
| Variable_name            | Value    |
+-----------------------+--------------+
| have_archive                 | YES      |
| have_bdb                       | NO      
| have_blackhole_engine | NO       |
| have_compress             | YES      |
| have_crypt                     | NO       |
| have_csv                       | NO       |
| have_example_engine    | NO       |
| have_federated_engine  | NO       |
| have_geometry               | YES      |
| have_innodb                   | YES      |
| have_isam                      | NO       |
| have_ndbcluster             | NO       |
| have_openssl                 | DISABLED |
| have_query_cache         | YES      |
| have_raid                       | NO       |
| have_rtree_keys            | YES      |
| have_symlink                | YES      |
+-----------------------+------------------+
17 rows in set (0.12 sec)

MySql yang didukung Type InnoDb memiliki variabel lingkungan yang disebut autocmmit. Secara default, autocommit diatur ke 1. Jika autocommit di setup ke, kita tidak dapat menjalankan transaksi dengan type table apapun. Dalam Hal ini, Mysql menganggap setiap pernyataan SQL sebagai transaksi tersendiri. Agar dapat memakai “sekumpulan” perintah/pernyataan transaksi dan dianggap masingmasing tidak berdiri sendiri, maka kita harus meng-off kan autocommit. Nilai autocommit diatur atau diset ke 0;

MySql> SET autocommit=0;

Contoh Praktek Seder hana tabel dibawah ini :

Tabel berisi dua kolom yaitu number dengan tipe data integer,merupakan primary key, autoincrement dan tidak diijinkan nilai Null. Kolom  balance bertipe float, perintahnya sebagai berikut :

create table account ( number int not null auto_increment primary key, balance float ) type = InnoDB;


2.    Insert Data Pada tabel account

Perintah di bawah dipergunakan untuk melakukan insert data pada tabel account, karena kolom number autoincrement maka data yang dimasukkan hanya pada kolom balance:

insert into account (balance) values (0.0); insert into account (balance) values (1000.0); insert into account (balance) values (2000.0);

Hasil dari insert data tersebut adalah :

mysql> select * from account;
+--------+---------+
| number | balance |
+--------+---------+
|      1 |       0 |
|      2 |    1000 |
|      3 |    2000 |
+--------+---------+
3 rows in set (0.05 sec)

3.    Operasi Update data pada tabel account

       Seleksi balance pada tabel account dengan number 2

mysql> select balance from account where number=2;
+---------+
| balance |
+---------+
|    1000 |
+---------+

       Update balance menjadi 1100 mysql> update account set balance = 1100 where number = 2;

       Update balance dengan menambahkan 500 mysql> update account set balance = balance + 500 where number = 2;

Setiap Query tunggal seperti di atas bersifat atomik, sebelum satu perintah selesai dieksekusi tidak ada query lain yang  dapat melakukan interupsi terhadap perintah tersebut.

       Update data dengan  operasi transfer data 1000 dari account number 2 ke account number 1.

update account set balance = balance - 1000 where number = 2; update account set balance = balance + 1000 where number = 1;

Apabila terjadi kasus gangguan setelah proses update data pada account number 1, maka update data account number 1 gagal. Sehingga data pada account 2 tidak valid. Karena perintah tersebut terdiri dari dua perintah sehingga tidak atomik. 

ALTERNATIFNYA :

Alternatif yang lain adalah dengan membuat dua perintah tersebut menjadi perintah tunggal (perintah tunggal bersifat atomik).

mysql>update account as source, account as dest  set source.balance = source.balance - 1000, dest.balance = dest.balance + 1000  where source.number = 2 and dest.number = 1;

Pada perintah tersebut dipergunakan dua buah alias pada tabel account yaitu source dan dest. Dengan menggunakan dua buah alias, dua perintah dapat dijadikan menjadi satu buah perintah sehingga apabila satu perintah gagal maka semua gagal .

4.    Update menggunakan manajemen transaksi 

Namun Dalam banyak kasus metode alternative diatasdi atas tidak bisa diterapkan untuk kasus yang lain, artinya peluang kegagalan masih sangat terbuka lebar.
Solusinya adalah dengan menggunakan Manajemen Ttransaksi:

begin transaction;
update account set balance = balance - 1000 where number = 2; update account set balance = balance + 1000 where number = 1; commit;

Atau dengan mengganti perintah BEGIN dengan START.

Start transaction;
update account set balance = balance - 1000 where number = 2; update account set balance = balance + 1000 where number = 1; commit;

Operasi Update data dapat dibatalkan dengan memberikan perintah ROLLBACK pada transaksi tersebut :

start transaction;
update account set balance = balance - 1000 where number = 2; update account set balance = balance + 1000 where number = 1; select balance from account where number = 2; rollback;

Pada perintah tersebut karena account number nilainya menjadi -1000 setelah operasi update dilakukan maka operasi dibatalkan dengan perintah ROLLBACK.

5.    Autocommit mode

Secara default mysql mendukung autocommit mode. Setiap perintah manipulasi(update,insert dll) akan dianggap sebagai perintah yang diakhiri dengan commit. Akan tetapi autocommit mode dapat dihilangkan dengan oleh user. Untuk menghilangkannya berikan perintah:

mysql> set autocommit=0;

Jika perintah ini telah diberikan maka perintah-perintah tunggal harus diakhiri dengan commit secara manual jika akan disimpan. Apabila akan dibatalkan bisa diberikan perintah Rollback secara manual pula. Setelah autocommit di set menjadi 0 berikan perintah berikut :

update account set balance = balance - 1000 where number = 2; update account set balance = balance + 1000 where number = 1;

Proses di atas tidak akan disimpan apabila belum ada klausa COMMIT yang mengakhiri perintah tersebut. Apabila akan disimpan maka perintah tersebut adalah :

begin transaction;
update account set balance = balance - 1000 where number = 2; commit; begin transaction
update account set balance = balance + 1000 where number = 1; commit;

Untuk mengembalikan autocommit ke default mysql perintah yang diberikan adalah :
mysql> set autocommit=1;

6.    Menggunakan Lock 

Untuk mencegah interferensi  antar pengguna/program aplikasi yang melakukan manipulasi pada database digunakan metode isolasi menggunakan klausa Lock. 

Contoh :

lock tables account write;
select balance from account where number = 2; update account set balance = 1500 where number = 2; unlock tables;

Lakukan operasi manipulasi melalui terminal lain atau komputer lain.
Sebelum ada perintah unlock diberikan user/program lain tidak dapat melakukan pengubahan pada tabel account.


A.  Protokol Transaksi Konkuren
            Ketika multiple user mengakses multiple objek basis data yang berada pada multiple site di sistem basis data terdistribusi, maka permasalahan kontrol konkurensi akan terjadi.Konflik terjadi apabila sekumpulan read dari satu transaksi berpotongan dengan sekumpulan read dari transaksi lainnya, dan/atau sekumpulan write dari satu transaksi berpotongan dengan sekumpulan write dari transaksi lainnya. Transaksi T1 dan T2 dikatakan konflik jika kedua-duanya dieksekusi pada waktu yang bersamaan. Bila T1 telah selesai sebelum T2 dikirim ke sistem, dalam kasus ini sekumpulan read dan write saling memotong, tidak dianggap konflik. Konflik diperhatikan pada sekumpulan write yang saling memotong di antara dua transaksi.
Ada tiga pendekatan secara umum untuk mendesain algoritma kontrol konkurensi:
1.      Wait. Jika dua transaksi konflik, transaksi yang konflik harus menunggu sampai transaksi lainnya selesai.
2.      Timestamp. Urutan eksekusi transaksi berdasarkan timestamp. Setiap transaksi memiliki timestamp yang unik dan dua transaksi yang konflik diselesaikan berdasarkan urutan timestamp. Timestamp dapat diletakkan di awal, tengah, atau akhir eksekusi. Pendekatan berdasarkan version digunakan untuk menentukan timestamp objek basis data.
3.      Rollback. Dua transaksi yang konflik, salah satu transaksinya diulang kembali pengerjaannya. Disebut juga optimistic, karena bila terjadi konflik maka beberapa transaksi akan di-rollback. Algoritma berdasarkan Mekanisme Wait

Sistem akan melakukan lock pada entitas basis data. Ada dua tipe lock:
1.      Readlock. Transaksi akan mengunci entitas pada mode shared. Sehingga transaksi lain yang menunggu untuk membaca beberapa entitas juga bisa mendapatkan readlock.
2.      Writelock. Transaksi akan mengunci entitas pada mode eksklusif. Jika ada satu transaksi akan melakukan penulisan pada entitas yang telah di-writelock, maka transaksi lainnya tidak boleh mendapatkan readlock maupun writelock pada entitas ini.
Lock akan menimbulkan masalah baru. Livelock dan deadlock. Livelock terjadi ketika suatu transaksi berkali-kali gagal dalam mendapatkan lock. Deadlock terjadi ketika beberapa transaksi melakukan lock pada beberapa entitas pada saat yang bersamaan; setiap transaksi mendapatkan lock dari entitas yang berbeda dan saling menunggu transaksi lainnya untuk melepaskan lock.
Deadlock dapat diatasi dengan:
Deadlock
ini sangat jarang terjadi, sehingga akan lebih efektif ditanggulangi ketika telah terjadi daripadamelakukantindakan preventif dari awal yang memakan biaya lebih besar.Protokol sederhana yang diperlukan, sehingga setiap transaksi dapat memenuhi aturan keberlanjutan adalah two-phase locking (2PL).
1.      Fase locking. Transaksi mengambil lock tanpa melepasnya.
2.      Fase unlocking. Dalam fase ini, transaksi melepaskan lock yang ada dan tidak boleh mengambil lock.lockpoint merupakan keadaan sesaat sebelum pelepasan lock yang pertama kali dilakukan. Algoritma berdasarkan Mekanisme Timestamp .Untuk mendapatkan timestamp unik untuk transaksi pada node berbeda di sistem terdistribusi, clock setiap node harus disamakan. Untuk menyelaraskan clock dapat digunakan message passing. Algoritma berdasarkan Mekanisme Rollback/Optimistic.
Terdapat 4 fase eksekusi transaksi pada pendekatan kontrol konkurensi optimistic:
1.      Read. Proses membaca tidak terlalu dibatasi. Hasilnya diletakkan pada variabel lokal. Sekumpulan read tergantung juga pada proses validasi.
2.      Compute. Transaksi menghitung sekumpulan nilai dari data entitas yang disebut sekumpulan write. Hasilnya diletakkan pada variabel lokal.
3.      Validate. Sekumpulan write dan read transaksi lokal divalidasi oleh sekumpulan transaksi yang sedang berjalan.
4.      Commit and Write. Setelah berhasil divalidasi, akan dijalankan di sistem dan diberikan timestamp. Sekumpulan write akan diubah menjadi variabel global dan nilainya dikirim ke setiap node. Jika tidak berhasil divalidasi, transaksi diulangi lagi dari fase compute atau read. Evaluasi Performansi dari Algoritma Kontrol Konkurensi

Kontrol Konkurensi yang dapat Disesuaikan
Sistem basis data yang ada, saling terhubung dengan sistem basis data terdistribusi yang heterogen. Penggunaan konsep sistem basis data Reliable, Adaptable, Interoperable, Distributed (RAID), menjadi fasilitas dalam metode kontrol konkurensi. Model umum untuk pendekatan terhadap sistem dan transaksi yang berbeda adalah dengan generic state, converting state, dan suffix sufficient state.   
Kesimpulan :
Kontrol konkurensi adalah masalah yang timbul ketika beberapa proses terjadi pada berbagai tempat di sistem. Solusi awal untuk hal ini adalah dengan memastikan kelas-kelas serializability, two-phase locking, dan formalisasi pendekatan optimistic. Mekanisme populer untuk kontrol konkurensi adalah two-phase locking. Kontrol konkurensi yang dapat disesuaikan diimplementasikan pada sistem RAID. Penelitian diharapkan berlanjut, pada bidang semantik dari transaksi dan terutama pada sistem yang berorientasi objek. Pada sistem berskala besar, sangat sulit untuk mem-blok akses ke objek basis data untuk melakukan transaksi. Locking pada masa yang akan datang tidak akan relevan lagi pada kasus seperti ini.
B.  Recoverability
Recovery dari kegagalan transaksi artinya database dikembalikan ke kondisi yang terdahulu,mendekati waktu terjadinya kegagalan.Untuk melakukan hal tersebut, perlu disimpan informasi mengenai perubahan terhadap data selama pelaksanaan transaksi di luar database. Informasi tersebut disebut sebagai sistem log.
Teknik recovery berhubungan erat dengan mekanisme kontrol konkurensi yang digunakan pada sistem bersangkutan. Sistem Basis Data harus melaksanakan tindakan tertentu untuk menjamin sifat transaksi yang Atomik dan Durable.
Bagian terintegrasi dari sebuah Sistem Basis Data adalah sebuah skema recovery yang dapat memulihkan Basis Data kepada keadaan konsisten sebelum kegagalan sistem.
Kegagalan sistem saat melakukan transaksi merupakan hal yang harus diperhatikan secara seksama karena terkait dengan 4 sifat yang harus dimiliki oleh suatu transaksi, ACID (Atomicity, Consistency, Isolation, dan Durability), Recovery merupakan solusi dari hampir semua fitur ACID yang harus dimiliki oleh setiap transaksi.Oleh karena itu, transaksi tidak hanya disebut sebagai suatu unit pekerjaan, namun juga sebagai suatu unit recovery.
Pada DBMS modern, konsep recovery sangat penting, bahkan konsep Backup pada DBMS modern tidak akan dapat dimengerti sepenuhnya tanpa pengetahuan yang cukup mengenai konsep recovery. Hampir seluruh DBMS modern menggunakan konsep recovery berbasis Log.
C.                Testing For Serializability
Serializability adalah level isolasi yang menyediakan isolasi transaksi yang paling ketat. Level ini mengemulasikan eksekusi transaksi secara serial, menjadikan transaksi dieksekusi satu setelah yang lainnya,seperti secara serial, bukan secara bersamaan (pararel). Serializable berarti jika jadual (nonserial) menghasilkan hasil yg sama seperti halnya jadual serial lainnya. Pada saat mendesain skema kontrol konkurensi, kita harus tunjukan bahwa jadwal yang dibuat oleh skema tersebut adalah serializable. Terdapat metode simpel dan efisien untuk menentukan conflict serializability dari suatu jadwal. Misalkan sebuah jadwal S. Kita dapat membuat suatu grafik langsung yang diberi nama grafik preseden (presedence graph).
Grafik preseden terdiri dari sepasang G = (V,E), dimana V adalah serangkaian simpul dan E adalah serangkaian tepian / busur. Serangkaian simpul terdiri dari semua transaksi yang berperan serta di dalam penjadwalan. Serangkaian tepian / busur terdiri dari semua bentuk Ti -> Tj untuk masing – masing dari ketiga kondisi berikut :
• Ti eksekusi write(Q) sebelum Tj eksekusi read(Q)
• Ti eksekusi read(Q) sebelum Tj eksekusi write(Q)
• Ti eksekusi write(Q) sebelum Tj eksekusi write(Q)

Jika bentuk Ti -> Tj ada di dalam grafik preseden, maka di setiap jadwal S’ serial yang ekivalen ke jadwal S, Ti harus muncul sebelum Tj.



KESIMPULAN
Transaksi adalah sebuah unit dari eksekusi program yang mampu mengakses dan mengupdate berbagai data yang memiliki kaitan logika transaksi itu sendiri dimana dalam menjaga konsitensi data secara terintegrasi dipertahankan.
Sebuah transaksi harus memiliki sifat –ACID : Atomik, Consisten, Isolasi, Durability.