Monday, March 4, 2013

Apache Cassandra Part II


Setelah pada artikel sebelumnya saya sudah menjelaskan sedikit tentang Apache Cassandra, sekarang akan saya lanjutkan pembahasan mengenai data model dari Cassandra. Cassandra memiliki data model yang bisa dibilang terinspirasi data model dari Google BigTable.Cassandra memiliki data model yang paling mudah kita anggap saja sebagai array/hash 4 atau 5 dimensi.

Berikut ini adalah beberapa konsep atau istilah yang ada dalam Cassandra:

  1. Cluster : Mesin (Nodes) yang terinstall Cassandra. Dalam satu cluster bisa terdapat beberapa node atau Keyspace.
  2. Keyspace : Namespace dari beberapa ColumnFamily. Jika di dalam RDMS, maka disebut Database.
  3. ColumnFamily : Jika dalam RDMS biasa disebut sebagai table. ColumnFamily berisi column-column, yang masing-masing column mempunyai nama, nilai (value), dan timestamp, dan direferensikan oleh row keys (primary key dalam RDMS).
  4. SuperColumn : bisa dianggap sebagai column yang mana mereka mempunyai sub-column.

Column
Column adalah bagian data yang terkecil di dalam Cassandra. Yang berupa tuple (triplet) yang berisi nama column (name), nilai column (value), dan timestamp.
Dibawah ini adalah representasi Column dalam thrift interface dan JSON:


  • Thrift Interface

  • struct Column {
    1: binary name,
    2: binary value,
    3: i64 timestamp,
    }
  • JSON

  • {
    name: "namalengkap", // nama column
    value: "Hendro Wibowo", // nilai column
    timestamp: 123456789 // timestamp
    }

Untuk lebih mudah pemahaman, kita abaikan saja terlebih dahulu timestamp. Jadi hanya pasangan name dan value saja yang kita lihat. Name dan value ini mempunyai tipe data binary (byte) dan tidak ada batasan berapa panjang karakter yang akan diisikan.

SuperColumn
SuperColumn adalah sebuah tuple yang mempunyai nama dan nilai yang berupa column-column dengan jumlah yang tidak terbatas (yang direferensikan oleh column name). Dalam notasi JSON maka bias kita gambarkan sebagai berikut:
{
name : "KasKus", // Nama SuperColumn
value :
{
// Column-column yang merupakan nilai dari SuperColumn
company { name : “company”, value : “PT Darta Media Indonesia”, timestamp : 123456 },
address { name : “address”, value : “Jl Melawai X No 3-5”, timestamp : 123456 },
city { name : “city”, value : “Jakarta”, timestamp : 123456 }
}
}
Perbedaan mendasar dari column dan supercolumn adalah nilainya. Jika pada column nilainya adalah berisi string, maka pada supercolumn nilainya berisi column-column (map of column). Dan juga pada supercolumn tidak mempunyai timestamp.

ColumnFamily
Ada sebuah struktur tunggal (single structure) untuk mengelompokkan Column dan SuperColumn dalam sebuah kesatuan. Struktur ini disebut sebagai ColumnFamily yang mempunyai dua macam jenis yaitu Standard dan Super. Sebuah ColumnFamily bisa berisi column dan supercolumn dalam jumlah yang tidak terbatas.
Perbedaan dari ColumnFamily tipe Standard dan Super adalah jika pada ColumnFamily bertipe Standard hanya berisi column-column saja, sedangkan pada ColumnFamily bertipe Super bisa berisi SuperColumn selain hanya Column saja.
Berikut ini adalah contoh ColumnFamily:







KaskusUser = { // ColumnFamily bertipe Super
name : “weeladalah”, // column name, bisa berfungsi sebagai row key
value : {
fullname:{name:“fullname”,value:“Hendro Wibowo”,timestamp: 12345 },
address:{name:“address”,value:“Jl Bambu Kuning 10”,timestamp: 12345 },
totalpost:{name:“totalpost”, value:100, timestamp:12345 }
},
name : “ferry”,
value : { // SuperColumn
fullname: { name: “fullname”, value: “Ferry”, timestamp: 12345 },
address: { name: “address”, value: “Jl Melawai X”, timestamp: 12345 },
totalpost: { name: “totalpost”, value: 134, timestamp: 12345 }
friends : {
name: “friends”, value:
{
// Berisi data daftar friends
}
}

}
}
Lalu bagaimana cara mengurutkan data dalam Cassandra? Cassandra tidak menggunakan SQL atau query untuk menampilkan data yang kita inginkan. Data akan diurutkan segera setelah kita memasukkan (insert) data tersebut ke dalam cluster (database server) dan data tersebut akan selalu terurut. Inilah mengapa Cassandra mempunyai kecepatan baca yang jauh lebih baik daripada relational database tetapi untuk mendapatkan performa yang baik, kita harus mempunyai perencanaan yang baik terhadap data model yang akan kita buat.
Data akan selalu diurutkan berdasarkan nama column dan juga berdasarkan tipe pengurutan yang kita tentukan di dalam opsi CompareWith yang terdapat storage-conf.xml. Tipe-tipe pengurutan tersebut antara lain BytesType, UTF8Type, LexicalUUIDType, TimeUUIDType, AsciiType, and LongType.

Wednesday, June 6, 2012

Document Object Model (DOM)

Pada postingan saya sebelumnya, saya sedikit menyinggung mengenai Document Object Model atau sering disebut dengan DOM. Lalu apakah yang disebut dengan DOM itu sendiri? Document Object Model (DOM) adalah object model standar untuk HTML dan XML yang bersifat platform independent. Sebuah web browser tidak harus menggunakan DOM untuk menampilkan dokumen HTML. Namun DOM diperlukan oleh JavaScript yang akan mengubah tampilan sebuah website secara dinamis. Dengan kata lain, DOM adalah cara JavaScript melihat suatu halaman HTML.

Javascript

Perusahaan-perusahaan seperti Google, Facebook, dan Twitter adalah pengguna kelas berat Javascript dalam produk-produk mereka. Tidak hanya mereka, sebagian besar website modern saat ini pasti menggunakan javascript. Dengan javascript, kita bisa membuat bisa membuat sebuah website atau aplikasi yang canggih. Misalnya efek animasi pada text atau image, AJAX (Asynchronous Javascript And XMLHTTP) untuk melakukan request di belakang layar, dan masih banyak fungsi javascript lainnya. Saat ini dengan hadirnya HTML5, fungsi javascript menjadi lebih luas lagi.

Saturday, April 3, 2010

Apache Cassandra Part I

Apache Cassandra adalah sebuah database management system yang terdistribusi yang didesain untuk menangani data dalam jumlah yang sangat besar yang tersebar di berbagai commodity server. Cassandra merupakan kombinasi dari teknologi sistem terdistribusi dari Amazon Dynamo dan data model dari Google BigTable. Seperti Dynamo karena Cassandra juga eventually consistent. Seperti BigTable karena Cassandra menyediakan data model Berbasis ColumnFamily yang lebih baik dari sistem Key/Value biasa.