BAB II
TINJAUAN PUSTAKA
2.1 Konsep Messaging Messaging adalah metode komunikasi antara komponen software atau aplikasi. Sebuah sistem messaging mempunyai jenis komunikasi peer-to-peer. Messaging
client dapat mengirim pesan dan menerima pesan dari client yang lain. Setiap
messaging client terhubung dengan messaging agent yang menyediakan fasilitas
untuk membuat, mengirim, menerima dan membaca pesan. Konsep messaging merupakan komunikasi terdistribusi yang bersifat looselycoupled. Suatu komponen aplikasi mengirimkan pesan ke tujuan, dan penerima dapat mengambil pesan dari tujuan. Pengirim tidak perlu mengetahui keadaan penerima, begitu juga dengan penerima. Keadaan disini adalah keadaan apakah pengirim dan penerima tersedia atau tidak. Pengirim dan penerima hanya saling mengetahui mengenai format pesan dan tujuan yang akan digunakan. Dalam hal ini, messaging berbeda dari teknologi tightly coupled, seperti Remote Method Invocation (RMI), yang memerlukan aplikasi untuk mengetahui metode remote aplikasi. Messaging berbeda dengan e-mail (surat elektronik), yang merupakan metode komunikasi antar orang atau antara software aplikasi dan orang (pengguna). Messaging digunakan untuk komunikasi antara aplikasi perangkat lunak atau komponen perangkat lunak [Oracle – The Java EE 6 Tutorial]. 2.1.1
Point-To-Point Mesaging
Point-to-Point (PT) merupakan sebuah aplikasi yang dibangun dengan konsep antrian pesan (message queue), pengirim (sender/producer), dan penerima (receiver/consumer).
8
BAB II TINJAUAN PUSTAKA
9
Setiap pesan ditujukan ke antrian tertentu, dan client menerima pesan dari antrian yang khusus untuk memproses setiap pesan.
Konsep antrian memungkinkan semua pesan yang dikirimkan akan diterima oleh consumer (Lihat Gambar 1).
Point-to-point messaging memiliki karakterisitik sebagai berikut :
a. Setiap pesan hanya memiliki satu consumer. Walaupun penerima pesan dalam antrian banyak, namun pesan yang dikirimkan hanya dapat diambil oleh satu penerima.
b. Pengirim dan penerima pesan tidak memiliki dependensi waktu. Penerima dapat mengambil pesan baik pesan itu berjalan ketika klien mengirimkan pesan atau tidak. c. Penerima tidak mengetahui proses pengolahan pesan. d. PTP messaging dapat digunakan ketika setiap pesan dikirimkan telah diproses secara sukses oleh satu consumer [Oracle - The Java EE 6 Tutorial].
Gambar 1 Point-To-Point Messaging
2.1.2
Publish/Subscribe Messaging
Dalam sebuah aplikasi berbasis publish/subscribe (pub/sub), alamat pesan dari suatu client disimpan ke dalam topic, yang berfungsi seperti papan buletin. Publisher dan Subscriber dapat mempublikasikan atau berlangganan terhadap suatu pesan.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
10
Sistem ini menangani pendistribusian pesan-pesan yang datang dari beberapa topik untuk beberapa
pelanggan. Topic mempertahankan pesan hanya selama pesan
diperlukan untuk didistribusikan kepada pelanggan yang ada.
Karakterisitik publish-subscribe messaging (Lihat Gambar 2) :
a.
Setiap pesan dapat diterima banyak consumer.
b.
Publisher dan subscriber memiliki ketergantungan waktu. Seorang klien yang
berlangganan terhadap topik dapat mengkonsumsi pesan yang baru diterbitkan
setelah klien telah memberikan subskripsi pesan, dan pelanggan harus terus aktif
agar ia dapat mengkonsumsi pesan tersebut [Oracle – The Java EE 6 Tutorial].
Gambar 2 Publish-Subscribe Messaging
2.2
Konsep Message Queuing
Saat ini konsep message queuing paling sering digunakan pada surat elektronik (email). Dalam sistem antrian, pesan akan disimpan pada node tertentu sampai sistem siap untuk meneruskannya. Misalnya, dalam kasus pemakaian e-mail. Pada tujuan akhir, pesan disimpan dalam kotak surat elektronik sampai penerima siap untuk membacanya.
Berdasarkan
penjelasan
tersebut,
model
message
queuing
memungkinkan pesan yang dikirimkan secara kontinu sekalipun salah satu server dalam keadaan tidak aktif.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
11
Konsep queuing secara umum adalah penyimpanan pesan dalam queue atau antrian yang memungkinkan program dapat berjalan secara independent satu sama lain pada
lokasi, kecepatan dan waktu yang berbeda, serta tidak memerlukan koneksi antar program-program tersebut. Queuing adalah mekanisme untuk menangani pesan
sampai sebuah aplikasi telah siap untuk memproses pesan itu. Dengan mekanisme ini suatu program dapat melakukan beberapa hal berikut ini. 1. Komunikasi antar program (setiap program dapat berjalan pada pemrograman yang berbeda) tanpa harus menuliskan kode dari metode komunikasi.
2. Memilih pesan mana yang akan diproses dalam program. 3. Menyeimbangkan pengumpulan proses (balance loads) dalam sistem dengan memisahkan satu program dengan program lain untuk memakai layanan queue saat jumlah pesan melebihi kapasitas. 4. Meningkatkan kinerja dari ketersediaan (availability) aplikasi dengan melakukan pemisahan aplikasi dengan suatu sistem alternatif untuk memakai layanan queue saat sistem utama tidak tersedia [IBM–Websphere MQ Version 6.0]. 2.3
Konsep MOM ( Message-Oriented Middleware)
Message-Oriented Middleware (MOM) atau pesan berorientasi middleware adalah perangkat lunak atau infrastruktur perangkat keras yang mendukung pengiriman dan penerimaan pesan antara sistem terdistribusi. MOM menyediakan unsur-unsur perangkat lunak untuk berkomunikasi dari arsitektur client/server dan mendukung panggilan asynchronous antara aplikasi client dan server [Wikipedia – MOM (Message-Oriented Middleware)]. 2.4
Konsep JMS ( Java Messaging Service )
JMS merupakan salah satu program Java untuk membuat, mengirim, menerima dan
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
12
membaca suatu pesan dalam enterprise messaging sistem. Produk enterprise messaging (atau yang biasa disebut produk Message Oriented Midleware) menjadi
komponen yang penting dalam mengintegrasikan operasi intra-perusahaan. Hal ini memungkinkan komponen bisnis yang terpisah dapat digabungkan menjadi sebuah
sistem yang reliable, dan flexible.
JMS memberikan standar aplikasi untuk komunikasi data secara asynchronous. Komunikasi ini merupakan interaksi antara seluruh proses dan mesin. Objek dalam
aplikasi biasanya berjalan pada mesin yang berbeda. Melalui MOM (Message
Oriented Midleware) didapatkan kumpulan interface untuk mengakses layanan komunikasi antar pesan. Berikut ini merupakan beberapa konsep dalam JMS. 2.4.1 JMS Interfaces JMS merupakan kumpulan dasar dari konsep messaging system. JMS messaging domain (Poin-to-point dan Publish/Subscribe) mendefinisikan konsep yang disesuaikan dengan JMS Interface [Mark Hapner - 2002l]. Tabel 1 merupakan jenisjenis JMS Interface point-to-point dan publish-subscriber dalam JMS. Tabel 1 Hubungan dari PTP dan Publish/Subscribe Interface
JMS Common
PTP-specific Interfaces
Pub/Sub-specific
Interfaces
interfaces
ConnectionFactory
QueueConnectionFactory
TopicConnectionFactory
Connection
QueueConnection
TopicConnection
Destination
Queue
Topic
Session
QueueSession
TopicSession
MessageProducer
QueueSender
TopicPublisher
MessageConsumer
QueueReceiver,QueueBrowser TopicSubscriber
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
13
Hubungan dari setiap JMS Interface dapat dilihat pada Gambar 3.
Gambar 3 Hubungan antar-objek JMS
• ConnectionFactory : sebuah objek yang digunakan oleh klien untuk membuat koneksi. • Connection : sebuah koneksi untuk menghubungkan program atau aplikasi dengan JMS provider. • Destination : sebuah objek yang merupakan dari identitas tujuan suatu pesan. Bentuk destination dari pesan terdiri dari queue dan topic. Queue merupakan tujuan pesan yang digunakan ketika suatu pesan yang diatur untuk satu penerima. Sama halnya seperti konsep e-mail, queue merupakan kotak pesan yang dimiliki oleh setiap penerima. Komunikasi yang digunakan queue yaitu point-to-point. Topic merupakan tujuan pesan yang digunakan ketika suatu pesan dapat diterima oleh banyak penerima, tiap-tiap pesan akan menerima bagian-bagian dari pesan yang dikirimkan. Sama halnya dengan penulis artikel yang menyimpan artikelnya dalam koran, sehingga artikel tersebut dapat dibaca
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
14
oleh semua pembaca koran. Konsep topic sama dengan model komunikasi
publish-subscribe [Inferdata Corporation - Java Messaging Service Concepts].
• Session : sebuah konteks single-thread untuk mengirim dan menerima pesan. • MessageProducer : sebuah objek yang dibuat oleh session yang digunakan untuk mengirim pesan ke destination (tujuan).
• MessageConsumer : sebuah objek yang dibuat oleh session yang digunakan untuk menerima pengiriman pesan yang dikirim ke tujuan. 2.4.1.1 Queue
Dalam JMS, queue merupakan sebuah wilayah yang terdiri dari pesan yang telah dikirim dan sedang menunggu untuk dibaca. Sebagai antrian, pesan dikirim secara berurutan berdasarkan konsep FIFO (First In First Out), yaitu memproses pesan yang pertama kali masuk sementara pesan lain menunggu pesan pertama selesai diproses. Sebuah pesan akan dihapus dari antrian bila pesan tersebut telah dibaca. Konsep queue sama dengan konsep point-to-point model. Dimana queue hanya dapat diambil atau diterima oleh satu consumer. Producer tidak harus aktif pada saat pesan telah diambil oleh consumer, selain itu consumer tidak harus aktif saat pesan tersebut dikirim [Mark Hapner - 2002]. 2.4.1.2 Topic Topic merupakan mekanisme pendistribusian untuk menyebarkan pesan yang dapat diterima oleh beberapa penerima (subscriber). Berbeda dengan queue, dimana publisher dan subscriber bersifat saling ketergantungan dan setiapp pesan dapat diambil atau diterima oleh banyak subscriber. Publisher mendaftarkan subscriber sebagai client (penerima pesan). Dalam hal ini, pesan akan disebarkan selama subscriber tidak terhubung dan akan dikirimkan kembali ketika subscriber terhubung dengan publisher [Mark Hapner - 2002].
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
15
2.4.2 Metode Pengiriman Pesan (Messages) Pengiriman pesan dalam JMS terdapat dua metode, yaitu Persistent dan Non persistent. Metode persistent memungkinkan suatu message yang dikirimkan dapat
disimpan ke dalam suatu storage database atau file, dan terdapat jaminan bahwa suatu pesan pasti terkirim. Metode non-persistent merupakan metode pengiriman pesan yang tidak dapat disimpan ke dalam storage database. Sehingga pesan yang dikirim tidak menjamin apakah pesan tersebut telah dikirim atau tidak dan
memungkinkan pesan tersebut hilang sehingga tidak dapat dilakukan proses kembali.
Selain itu, terdapat pula metode asnychronous dan synchronous. Metode sycnhronous merupakan metode ketika seorang klien meminta pesan berikutnya dari Message Consumer dengan menggunakan metode penerimaan pesan tertentu. Terdapat beberapa macam metode penerimaan pesan yang memungkinkan klien untuk menunggu pesan berikutnya. Metode asynchronous merupakan metode pengiriman pesan yang dapat secara kontinu dikirimkan ke tujuan tanpa memperhatikan keadaan atau kondisi tujuan pesan apakah telah aktif atau tidak. Dalam metode ini klien yang menerima pesan dapat melakukan proses lain saat klien menunggu pesan diterima oleh penerima [Mark Hapner - 2002]. 2.4.3 Messages (Pesan) Sebuah message merupakan paket dari suatu data yang memiliki tiga komponen. Berikut ini komponen-komponen paket data dalam JMS (Lihat Gambar 4) :
Header: Berisi rute infromasi dalam jaringan dan pengidentifikasian pesan. Berikut ini isi header yang telah ditentukan : - MessageID (identitas yang bersifat unique dari setiap pesan yang dikirimkan oleh JMSProvider). - Timestamp (waktu pengiriman pesan)
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
16
- CorrelationID (hubungan satu pesan dengan pesan lain)
- ReplyTo (tujuan balasan pesan akan dikirimkan kemana)
- Destination (tujuan pengiriman pesan, terisi jika pesan telah diterima)
- DeliveryMode (metode pengiriman pesan)
- Redelivered (pengiriman ulang pesan)
- Type (tipe pesan yang ditentukan dari aplikasi pengiriman pesan)
- Expiration (waktu yang ditentukan terhitung waktu pengiriman dan waktu
setempat)
- Priority (prioritas pesan dimuali dari 0 sampai 9)
Properties:Berisi meta-data untuk pesan. JMS menentukan beberapa properti, namun programmer dari aplikasi dapat menambahkan properti sendiri.
Payload: Berisi data bisnis yang sebenarnya. Payload ini sepenuhnya dikontrol oleh programmer dari aplikasi.
Berikut ini merupakan jenis payload dalam JMS [Inferdata Corporation - Java Messaging Service Concepts] : -
Text messages (tipe data String)
-
Object messages
-
Byte messages (tipe data boolean).
Gambar 4 Message dalam JMS
Untuk menggunakan JMS kita membutuhkan sebuah JMS Provider untuk mengatur session dan queue. Berikut ialah daftar beberapa dari JMS Provider :
Apache Active MQ
Apache Qpid
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
17
EMS
Open JMS, dan lain-lain.
2.5 ActiveMQ
ActiveMQ (Active Message Queuing) merupakan sebuah MOM (Message-Oriented Midleware) yang sesuai untuk JMS 1.1. Sebagaimana fungsi MOM ialah sebagai mediasi yang menengahi antara event dan message. Kelebihan dari ActiveMQ ini
ialah lebih compatible dengan bahasa Java dan mendukung beberapa protokol yang
sering digunakan diantaranya : HTTP, SSL, TCP, UDP, dan sebagainya. Fitur-fitur ActiveMQ : a.
JMS Compliance - Fitur-fitur ActiveMQ meupakan hasil implementasi dari spesifikasi JMS dan MOM. Manfaat dan jaminan pengiriman pesan seperti synchronous dan asynchronous, pengiriman pesan once-and-only-once (hanya satu kali) dan durability dari
pesan terdapat dalam ActiveMQ. Selain itu
terdapat metode Message Queuing yang terdapat dalam JMS seperti queue dan topic dalam pengiriman pesan. b.
Connectivity – ActiveMQ menyediakan beberapa cara pilihan konektivitas termasuk protokol pendukung seperti HTTP, Jgroups, JXTA, multicast, SSL, TCP, UDP, XMPP, STOMP, dan lain-lain.
c.
Pluggable Persistence and Security - ActiveMQ menyediakan beberapa fasilitas keamanan sesuai kebutuhan dari autentikasi dan autorisasi.
d.
Integration With Many Java Containers - ActiveMQ menyediakan kemampuan untuk diintegrasikan dengan beberapa penampung program Java seperti : • Apache Geronimo • Apache Tomcat • JBoss
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
18
• Jetty
• Spring Framework
• POJOs
• Weblogic
• Websphere
e.
Client APIs - ActiveMQ menyediakan API klien dari berbagai bahasa pemrograman selain JAVA, seperi C/C++, Perl, PHP, Phyton, Ruby dan lain
lain [Bruce Synder dan Rob Davies - 2009].
Seperti pada JMS provider lainya, ActiveMQ mendukung pengiriman data dengan
mode PTP dan Publish/Subscribe. Namun dalam ActiveMQ terdapat dua jenis Subscriber, yakni : Non-Durable Subscriber : Non-Durable Subscriber memiliki dua status yakni status connect dan disconnect. Artinya subscriber ini hanya akan menerima pesan yang ada dalam topic saat dalam status connect saja. Sedangkan message lainya yang masuk ke dalam topic ketika dalam status disconnect atau dalam keadaan off tidak akan didapat oleh subscriber. Durable Subscriber : Durable subscriber memiliki dua status juga yakni connect dan suspend. Artinya ketika client dalam keadaan off atau disconnect pun activeMQ akan menganggap itu sebagai status suspend. Jadi, setiap message yang tiba ke dalam topic pada saat client off akan ditampung dan apabila suatu saat client connect kembali maka client akan mendapatkan semua data yang ia lewatkan selama disconnect. Namun dalam Durable Subscriber, kita harus menyimpan data setiap client yang connect ke message broker. 2.6
Konsep Pemodelan UML
UML digunakan untuk memodelkan sistem yang sedang berjalan dan sistem yang akan dikembangkan.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
19
Berikut ini adalah sejarah singkat dan kegunaan pada setiap diagram UML. UML merupakan singkatan dari Unified Modelling Language. Sesuai dengan kata terakhir dari kepanjangannya, UML adalah salah satu bentuk language atau bahasa.
Menurut pencetusnya, UML di definisikan sebagai bahasa visual untuk menjelaskan,
memberikan spesifikasi, merancang, membuat model, dan mendokumentasikan
aspek-aspek dari sebuah sistem.
Karena tergolong bahasa visual, UML lebih diterapkan sebagai penggunaan diagram menggambarkan aspek dari sistem yang sedang dimodelkan. Memahami UML untuk
sebagai bahasa visual cukup penting karena penekanan tersebut membedakannya dengan bahasa pemrograman yang lebih dekat dengan mesin. Bahasa visual lebih dekat dengan mental model pikiran manusia, sehingga pemodelan menggunakan bahasa visual dapat lebih mudah dan lebih cepat dipahami dibandingkan apabila dituliskan dalam sebuah bahasa pemrograman. UML mendefinisikan beberapa diagram dengan dua sudut pandang yang berbeda, yaitu: 1. Structural
Diagrams,
merupakan
diagram
yang
digunakan
untuk
memvisualisasikan, menjelaskan, membuat, dan mendokumentasikan aspek-aspek statik pada sistem. Terdapat beberapa diagram yang termasuk Structural Diagrams, diantaranya : a.
Class Diagram digunakan untuk menjelaskan sekumpulan Class serta keterhubungannya.
b.
Component Diagram digunakan untuk menjelaskan sekumpulan komponen beserta keterhubungannya.
c.
Deployment Diagram digunakan untuk menjelaskan sekumpulan node beserta keterhubungannya.
2. Behavioral
Diagram,
merupakan
diagram
yang
digunakan
untuk
memvisualisasikan, menjelaskan, membuat, dan mendokumentasikan aspek-aspek
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
20
dinamis sebuah sistem. Terdapat beberapa diagram yang termasuk Behavioral Diagrams, diantaranya :
a. Use Case Diagram digunakan untuk menjelaskan sekumpulan use Case dan aktor serta keterhubungannya. Diagram ini memodelkan semua perilaku
sistem.
b. Sequence Diagram merupakan interaction diagram yang menekankan pada waktu permintaan pesan (time ordering message). Diagram ini menjelaskan
sekumpulan objek dan message dikirim dan diterima oleh objek–objek
tersebut. Objek-objek ini merupakan instansiasi dari Class [Graig Larman -
2004].
2.7
Data Flow Diagram
Data Flow Diagram (DFD) adalah suatu diagram yang menggunakan notasi-notasi untuk menggambarkan arus data dari sistem. Penggunaannya sangat membantu untuk memahami sistem secara logika, terstruktur dan jelas. DFD merupakan alat bantu dalam menggambarkan atau menjelaskan sistem yang sedang berjalan logis [Wikipedia Indonesia - Data flow diagram]. DFD menunjukkan data yang akan diinput dan ke sistem dan output yang dihasilkan, darimana data datang dan kemana data akan menuju, serta di mana data akan disimpan. DFD tidak menampilkan informasi tentang waktu proses, atau informasi tentang apakah proses akan beroperasi secara berurutan atau paralel. Gambar 5 merupakan penggambaran context-level DFD tingkat pertama, yang menunjukkan interaksi antara sistem dan agen eksternal yang bertindak sebagai sumber data dan tujuan dari data yang dihasilkan. Diagram konteks menunjukkan seluruh sistem sebagai proses tunggal, dan tidak menunujukan detail dari sistem tersebut.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
21
Gambar 5 Context Diagram (DFD level-1)
Context-level DFD tingkat berikutnya akan dipecah, untuk menghasilkan DFD level 0 yang menunjukkan beberapa detail dari sistem yang dimodelkan. DFD level 0 menunjukkan bagaimana sistem ini dibagi menjadi sub-sistem (proses), bagaimana
masing-masing berhubungan dengan satu atau lebih data yang mengalir ke atau dari
eksternal sistem, dan yang bersama-sama memberikan semua fungsi sistem sebagai keseluruhan. Hal ini juga mengidentifikasi harus ada penyimpanan internal pada sistem agar sistem dapat bekerja dan menunjukkan aliran data antara bagian-bagian dari sistem (lihat Daftar Simbol) [Wikipedia - Data flow diagram]. 2.8
Data Order, Trade dan Orderbook
Pada proses jual beli saham terdapat 9 jenis data dari keseluruhan data dari BEI (Lihat Tabel 2). Untuk pengolahan data orderbook diambil 2 sampel data yang akan diolah, yaitu data Order dan data Trade. Data order merupakan data yang dikirim oleh nasabah untuk melakukan transaksi jual atau beli saham. Data trade merupakan data match order. Data-data tersebut mempunyai format yang berbeda-beda (Lihat Tabel 4 dan Tabel 5). Namun, terdapat header data yang sama untuk setiap jenis data dimana header tersebut telah ditentukan oleh BEI (Lihat Tabel 3). Tabel 2 Jenis-jenis data
Record
Type
0
Data feed Status (status dari setiap data yang masuk, contoh : begin, idle, ending)
1
Order
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
22
2
Trade (data transaksi berdasarkan data order yang telah match)
3
Stock Data (data saham)
4
Broker Data (data broker)
5
Stocks Summary (Rekapitulasi saham)
6
Indices (indeks)
7
Suspended or Released
Broker/Issuer (broker yang ditangguhkan)
8
Suspended or Released Stock (saham yang ditangguhkan)
News (berita mengenai saham)
9
Tabel 3 Header Data
Header
Date
Time Sequence_number Record_type
DATA
Checksum
CR
Keterangan : 1. Header : Field selalu berisi ‘IDX’ 2. Date : Tanggal data dikirimkan, format (YYYYMMDD) 3. Time : Waktu saat data dikirimkan, format (HHMMSS) 4. Seqeunce Number : nomor ID dari setiap record. 5. Record Type : kode untuk jenis data transaksi saham dengan pengkodean sebagai berikut. 0 = Trading Status 1 = Order 2 = Trade 3 = Stock Data 4 = Broker Data 5 = Stock Summary 6 = Indices 7 = Suspended/Released Broker 8 = Suspended/Released Stock
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
LF
BAB II TINJAUAN PUSTAKA
9 = News/Messages 6. DATA : format data berdasarkan record type.
7. Checksum : Algortima untuk perhitungan semua karakter data. 8. CR : Carriage Return
9.
LF : Line feed [IDX Data Feed Sistem - 2010].
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
23
BAB II TINJAUAN PUSTAKA
24
Tabel 4 Format Data Order
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
25
Tabel 5 Forma t Data Trade
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
26
Data order dan trade akan diproses untuk menghasilkan orderbook. Orderbook merupakan summary dari data order yang dikelompokan berdasarkan saham.
Orderbook terbagi dalam dua level, yaitu level 1 dan level 2.
Orderbook level 1 (Gambar 6) diperoleh dengan cara mengelompokkan data order
berdasarkan bid price dan offer price.
Gambar 6 Orderbook level 1
Orderbook level 2 akan menampilkan kembali data order dari tiap baris di level 1, misalnya pada orderbook level 1 di bid 3700 ada 77 order, maka akan ditampilkan data dari 77 order tersebut. 2.9
Konsep Big Data
Dalam teknologi informasi, data besar adalah data yang tumbuh begitu cepat.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
27
Data besar sulit bekerja dengan menggunakan database relasional. Hal ini bukan membutuhkan perangkat lunak yang berjalan paralel pada puluhan, ratusan, atau
bahkan ribuan server.
Ukuran data besar bervariasi tergantung pada kemampuan organisasi mengelolanya.
Untuk beberapa organisasi, menghadapi ratusan gigabyte data dapat memicu
kebutuhan untuk mempertimbangkan kembali pilihan manajemen data. Bagi yang lain, mungkin diperlukan puluhan atau ratusan terabyte sebelum ukuran data menjadi pertimbangan yang signifikan [Wikipedia - Big Data].
2.10 NoSQL Database NoSQL adalah pengembangan dari sistem manajemen database yang berbeda dari model sistem manajemen database relasional (RDBMS) dalam beberapa hal penting, yang terpenting adalah NoSQL tidak menggunakan SQL sebagai bahasa query utama [Wikipedia - NoSQL]. Menurut cara penyimpanan datanya NoSQL database terbagi menjadi : 1.
Sorted Ordered Column-oriented Stores
2.
Key/ Value Stores
3.
Document Databases
4.
Graph Databases
2.10.1 Sorted Ordered Column-oriented Stores Sorted Ordered Column-oriented Stores adalah database dengan model penyimpanan datanya berorientasi kolom. Hal ini bertentangan dengan format berorientasi baris pada RDBMS (Relational Database Management System).
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
28
Penyimpanan kolom berorientasi memungkinkan data yang akan disimpan secara efektif. Ini menghindari pemakaian ruang saat dilakukan penyimpanan data dengan
tidak menyimpan kolom ketika nilai tidak ada untuk kolom tersebut [Shashank Tiwari-2011].
2.10.2 Key/ Value Stores
Key/value store memiliki model yang sederhana yang memungkinkan client untuk
menyimpan dan mengambil nilai per kunci.
Pasangan key dan value dapat disimpan di dalam memori ataupun di dalam disk. Key/value juga dapat didistribusikan di sebuah cluster node [Shashank Tiwari 2011]. 2.10.3 Document Databases Document databases memperlakukan dokumen secara keseluruhan dan menghindari pemecahan dokumen ke susunan pasangan key/value. Pada tingkat collection, ini memungkinkan untuk menyusun beragam rangkaian dokumen menjadi koleksi tunggal. Document databases memungkinkan pengindeksan dokumen tidak hanya berdasarkan pengenal utama tetapi juga berdasarkan sifat-sifatnya. Contoh document database adalah MongoDB dan CouchDB [Shashank Tiwari - 2011]. 2.10.4 Graph Databases Graph databases adalah sistem penyimpanan yang menyediakan indeks bebas adjacency. Hal ini menyatakan bahwa setiap elemen berisi pointer ke elemen yang berdekatan dan tidak diperlukan indeks pencarian. Graph databases dapat menyimpan grafik berbeda dari database grafik khusus seperti triple stores dan database jaringan. Struktur penyimpanan graph database dapat dilihat pada Gambar 7 [Wikipedia Graph Database].
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
29
Gambar 7 Struktur Penyimpanan pada Graph Database
2.11
Apache Cassandra
Apache Cassandra adalah open source distributed database management system. Cassandra dirancang untuk menangani jumlah data yang sangat besar dan tersebar di banyak server. Cassandra merupakan NoSQL database yang pertama kali dikembangkan oleh Facebook. Cassandra menyediakan struktur penyimpanan key-value. Beberapa kunci (keys) dipetakan ke beberapa nilai (value), yang dikelompokan dalam column families. Column families sudah ditetapkan ketika database cassandra dibuat, tetapi column dapat ditambahkan ke family setiap saat. Column ditambahkan hanya untuk kunci yang spesifik, jadi setiap kunci tidak bisa memiliki column yang berbeda dari setiap family yang diberikan. Nilai-nilai dari column family untuk setiap kunci disimpan bersama. Hal ini yang membuat Cassandra menjadi hybrid data management sistem dengan database management system yang beorientasi kolom dan peyimpanan yang berorintasi baris [Wikipedia - Apache Cassandra].
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
30
2.11.1 Konsep Column Family Column family adalah sebuah wadah untuk kumpulan baris, yang masing-masing
merupakan kumpulan dari kolom.
Dalam database relasional column family dianalogikan sebagai tabel, akan tetapi
jangan terjebak dengan gagasan bahwa column family sama dengan tabel. Terdapat beberapa alasan mengapa column family tidak dapat disamakan dengan
tabel pada database relasional. Pertama, Cassandra dianggap bebas skema karena walaupun column family didefinisikan tetapi kolom tidak. Kolom apapun dapat
ditambahkan ke column family setiap saat tergantung kebutuhan. Kedua, column family memiliki dua atribut yaitu nama dan komparator. Nilai komparator menunjukan berapa jumlah kolom yang akan diurutkan ketika mereka dikembalikan dalam query. Dalam database relasional, pengguna dapat mengetahui dengan transparan bagaimana tabel disimpan dalam disk dan sangat jarang database relasional mendengar rekomendasi tentang pemodelan data berdasarkan seberapa banyak tabel yang dapat disimpan pada RDBMS. Hal tersebut merupakan alasan lain mengapa column family tidak dapat disamakan dengan tabel, karena column family disimpan pada file terpisah dalam disk, penting untuk mendefinisikan kolom yang terkait pada column family yang sama. Hal lain yang berbeda antara column family dengan tabel adalah bahwa tabel pada database relasional hanya mendefinisikan kolom, dan pengguna yang memasukan nilainya, yang merupakan baris pada tabel. Namun pada Cassandra tabel dapat menyimpan kolom, yang didefinisikan sebagai super column family. Ketika menulis data ke column family Cassandra, dapat ditentukan nilai untuk satu kolom atau lebih. Nilai- nilai tersebut disebut baris. Baris tersebut mempunyai kunci yang unik, yang disebut row key, yang bertindak seperti primary key untuk baris
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
31
tersebut. Jadi, tidak salah jika Cassandra disebut column-oriented atau columnar. Mungkin akan lebih mudah memahami model ini jika memikirkan baris sebagai
wadah untuk kolom [Eben Hewitt - 2011].
2.11.2 Model Data
Sebuah tabel dalam Cassandra adalah multi dimensional map terdistribusi yang
memiliki kunci sebagai index. Nilainya adalah obyek yang sangat terstruktur. dari tiap baris dalam sebuah tabel adalah string dengan pembatasan ukuran Kunci
64KB. Operasi dalam tiap baris bersifat atomic per replika, tidak peduli berapa
banyak kolom yang sedang dibaca atau ditulis. Kolom dikelompokkan ke dalam set yang disebut column family. Cassandra memiliki dua jenis column family: Simple dan Super. Super column family bisa divisualisasikan sebagai column family dalam sebuah column family. Dimensi paling atas dari Cassandra disebut Keyspace. Oleh karena itu, Cassandra dapat menangani peta dengan empat atau lima dimensi. Peta dengan empat dimensi: 1. Keyspace → Column Family 2. Column Family → Column Family Row 3. Column Family Row → Columns 4. Column → Data value Peta dengan lima dimensi: 1. Keyspace → Super Column Family 2. Super Column Family → Super Column Family Row 3. Super Column Family Row → Super Columns 4. Super Column → Columns 5. Column → Data value
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
32
2.11.3 Tipe Data ( Comparator dan Validator) Dalam database relasional, tipe data untuk setiap kolom ditentukan saat mendefinisikan sebuah tabel. Tipe data berfungsi membatasi nilai-nilai yang
dimasukkan ke dalam kolom tersebut. Misalnya, sebuah kolom didefinisikan bertipe integer, maka data bertipe karakter tidak dapat masuk ke dalam kolom tersebut. Dalam Cassandra tipe data untuk row key disebut validator, sedangkan tipe data
untuk nama kolom disebut comparator. Tipe data dapat ditentukan ketika membuat column family. Apabila tipe data tidak ditentukan dalam pembuatan skema skema
column family maka Cassandra akan menyimpan nama kolom dan nilainya sebagai tipe Byte (lihat Tabel 6) [Datastax - Apache Cassandra 0.8 Documentation]. Tabel 6 Tipe data pada Cassandra
2.11.4 Arsitektur 2.11.4.1 Keyspace Sistem Cassandra memiliki internal keyspace yang berfungsi sebagai sistem yang digunakan untuk menyimpan metadata tentang cluster untuk membantu dalam operasi.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
33
Pada Microsoft SQL Server dua meta-database yang dipertahankan adalah master dan temp db. Master digunakan untuk menyimpan informasi mengenai disk space,
penggunaan, pengaturan sistem, dan catatan instalasi server secara umum, sedangkan db digunakan sebagai workspace untuk menyimpan hasil antara task dan tempt
menampilkan task secara umum.
Database Oracle memiliki table space (nama database) sistem,yang digunakan untuk tujuan serupa. Keyspace sistem pada Cassandra digunakan hampir seperti table space sistem pada Oracle.
Metadata meliputi : -
Token node
-
Nama cluster
-
Keyspace dan definisi skema untuk mendukung pembebanan yang dinamis
-
Informasi mengenai apakah sebuah node itu boots trapped atau tidak.
Definisi skema disimpan dalam dua column family, yaitu column family Schema menyimpan keyspace pengguna dan definisi skema, dan column family Migrations menyimpan perubaham yang dibuat pada keyspace [Eben Hewitt - 2011]. 2.11.4.2 Peer to Peer Dalam database tradisional yang dapat digunakan pada beberapa mesin (seperti MySQL) atau bahkan model–model database baru seperti Bigtable Google, beberapa node ditujukan sebagai master dan beberapa lagi sebagai slave node. Mereka memiliki peran yang berbeda dalam cluster secara keseluruhan. Master
node
bertindak sebagai sumber autoritatif untuk data, dan slavesnode mensinkronisasikan data mereka ke master. Setiap perubahan yang ditulis ke master akan diteruskan ke slaves node. Model ini dioptimalkan untuk membaca data, karena memungkinkan data dibaca dari slaves node manapun. Namun replikasi hanya dapat dilakukan satu arah, yaitu dari master node ke slaves node. Semua data harus dikirim ke master
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
34
node, yang berarti bahwa node tersebut merupakan satu titik yang berpotensi mengalami kegagalan. Dalam setup master/ slave node, master node dapat
menimbulkan efek yang luas jika master node offline.
Sebaliknya Cassandra memiliki model distribusi peer-to-peer, sehingga setiap node
yang diberikan secara struktural identik dengan node lain, tidak ada master node
ataupun slave node. Tujuan desain ini adalah ketersediaan sistem secara keseluruhan dan kemudahan untuk scaling. Desain ini juga memudahkan untuk melakukan scale pada cassandra dengan
menambahkan node baru. Karena perilaku setiap node identik, untuk menambah server baru hanya perlu menambahkannya ke cluster. Node baru tidak akan segera menerima permintaan sehingga node baru memiliki waktu untuk mempelajari topologi ring dan menerima data yang mungkin menjadi tanggung jawabnya. Setelah melakukan hal tersebut maka node tersebut dapat mulai menerima permintaan. Hal ini sebagian besar telah di-set secara otomatis dan hanya membutuhkan sedikit konfigurasi. Untuk alasan ini, desain peer-to-peer membuat scale up dan scale down menjadi lebih mudah daripada replikasi master/slave [Eben Hewitt - 2011]. 2.12 JMeter Apache JMeter adalah proyek Apache yang dapat digunakan sebagai alat pengujian untuk menganalisis dan mengukur kinerja berbagai layanan yang berfokus pada aplikasi web. JMeter dapat digunakan sebagai alat uji untuk koneksi database JDBC, FTP, LDAP, web servis, JMS, HTTP, dan koneksi generik TCP. Jmter juga dapat dikonfigurasi sebagai monitor, meskipun hal ini biasanya dianggap sebagai solusi ad-hoc sebagai pengganti solusi advanced monitoring.
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ
BAB II TINJAUAN PUSTAKA
35
Jmeter mendukung parameterisasi variabel, assertions (validasi respon), per thread cookies, variabel konfigurasi dan berbagai jenis pelaporan [Wikipedia - Apache
JMeter].
2.13 Apache MINA
Apache MINA (Multipurpose Infrastructure for Network Application) adalah framework aplikasi jaringan. MINA dapat digunakan untuk membuat aplikasi kinerja
jaringan yang tinggi. MINA menyediakan application programming interface (API)
yang seragam untuk berbagai transportasi seperti TCP, UDP, komunikasi serial. Hal ini juga memudahkan implementasi dari jenis transportasi yang dibuat. MINA menyediakan API jaringan tingkat tinggi dan tingkat rendah. [Wikipedia- Apache MINA].
Pembuatan Prototype Sistem Pendistribusian Data Orderbook Saham dengan Database Cassandra dan Message Queuing ActiveMQ