Materi penutup tentang cara memilih database untuk sebuah aplikasi. Sumber: NoSQL for Mere Mortals (Dan Sullivan, Addison-Wesley, 2015, bab 15) dan beberapa sumber lain, ditambah bagian XML database dan NewSQL. Bagian ini merangkum kapan memakai relational, key-value, document, column family, graph, XML, dan NewSQL, jadi membantu menjawab soal “pilih model mana dan kenapa”. Detail tiap model ada di 15_Intro_to_NoSQL, 16_Key_Value_Database, 17_Document_Database, 18_Column_Family_Database, 19_Graph_Database, dan 20_XML_Database.

Major Options of DBMS

Lima pilihan utama DBMS beserta contohnya:

  • Relational databases: PostgreSQL, MySQL, Microsoft SQL Server.
  • Key-value databases: Redis, Riak, Oracle BerkeleyDB.
  • Document databases: MongoDB, CouchDB, CouchBase.
  • Column family databases: Cassandra, HBase.
  • Graph databases: Neo4J.

Considering Relational Database

  • Pada desain relational database, struktur dan relasi entitas yang mendorong desain.
  • Model relasional muncul karena alasan pragmatis: data anomalies (anomali data) dan sulitnya memakai ulang database yang sudah ada untuk aplikasi baru.
  • Fitur penting: immediate consistency (data langsung konsisten setelah ditulis) dan ACID transactions (lihat 10_Data_Model di AAT untuk ACID vs BASE, atau 11_NoSQL).

Considering NoSQL Databases

  • Pada desain NoSQL, kamu tetap memodelkan entitas dan relasi, tetapi performa lebih penting.
  • NoSQL juga muncul karena alasan pragmatis: ketidakmampuan scale untuk memenuhi tuntutan volume read dan write yang terus naik.
  • Sebagai pertukaran atas performa read/write yang lebih baik, kamu mungkin kehilangan fitur relational seperti immediate consistency dan ACID transactions (walaupun tidak selalu begitu).

Choosing a NoSQL Database

Query mendorong desain model data. Selain itu perlu dipahami faktor lain:

  • Volume read dan write
  • Toleransi terhadap data yang tidak konsisten di replica
  • Sifat relasi antar entitas dan pengaruhnya pada pola query
  • Kebutuhan availability dan disaster recovery
  • Kebutuhan fleksibilitas model data
  • Kebutuhan latency

Kriteria Memilih Tiap Jenis Database

JenisCocok untukContoh use caseCatatan
Key-valueAplikasi dengan read/write kecil yang sering dan model data sederhana; query hanya mencari value lewat keyCaching data dari relational database untuk meningkatkan performa; melacak atribut sementara di aplikasi web (mis. shopping cart); menyimpan konfigurasi dan data user untuk aplikasi mobile; menyimpan objek besar (gambar, audio)Fasilitas query sederhana
DocumentFleksibilitas: aplikasi yang perlu menyimpan atribut yang bervariasi bersama data dalam jumlah besarBack-end website dengan volume read/write tinggi; mengelola tipe data dengan atribut variabel (mis. produk); melacak metadata yang bervariasi; aplikasi yang memakai struktur data JSON; aplikasi yang diuntungkan oleh denormalisasi lewat embedding struktur di dalam strukturMendukung embedded documents (berguna untuk denormalisasi). Query lebih baik daripada key-value berkat indexing dan kemampuan memfilter dokumen berdasarkan atribut di dalamnya
Column familyData berukuran sangat besar, performa read/write tinggi, dan high availabilityAplikasi yang harus selalu bisa menulis ke database; aplikasi yang tersebar secara geografis di banyak data center; aplikasi yang menoleransi inkonsistensi jangka pendek di replica; aplikasi dengan field dinamis; aplikasi dengan potensi volume data sangat besar (ratusan terabyte)Bila data cukup kecil untuk satu server, column family kemungkinan berlebihan; pertimbangkan document atau key-value
GraphDomain masalah yang bisa direpresentasikan sebagai jaringan entitas yang saling terhubungManajemen jaringan dan infrastruktur IT; identity and access management; business process management; rekomendasi produk dan layanan; social networkingCara menilai kegunaannya: cek apakah instance entitas punya relasi ke instance entitas lain

Bidang yang bisa memakai kemampuan pemrosesan Big Data (cocok untuk column family): security analytics (data lalu lintas jaringan dan log), Big Science (mis. bioinformatika dengan data genetik dan proteomik), analisis pasar saham dengan data trade, aplikasi skala web seperti pencarian, dan layanan jejaring sosial.

Using NoSQL and Relational Databases Together

  • NoSQL dan relational database saling melengkapi.
  • Relational database punya banyak fitur yang menjaga integritas data dan mengurangi risiko anomali, tetapi menanggung overhead operasional untuk menyediakan fitur itu.
  • Pada sebagian use case, performa lebih penting daripada immediate consistency atau dukungan ACID transactions; di situ NoSQL bisa jadi solusi lebih baik. Memilih database adalah memilih alat yang tepat untuk pekerjaannya: makin beragam pekerjaan, makin beragam toolkit yang dibutuhkan.
  • Infrastruktur manajemen data modern bertanggung jawab atas lebih banyak jenis aplikasi dan data dibanding sebelumnya: data bisnis yang sama dengan tahun 1970-an, ditambah tipe baru seperti social media dan data demografi/preferensi pelanggan yang detail. Karena itu dibutuhkan teknik manajemen database tambahan.
  • Relational database akan tetap mendukung transaction processing system dan aplikasi business intelligence, sementara organisasi juga beradaptasi dengan teknologi yang belum ada saat model relasional pertama dirumuskan.
  • Seperti tidak ada bahasa pemrograman terbaik, tidak ada DBMS terbaik.

How about XML Database?

XML database dipakai untuk menyimpan, meng-query, dan mengelola data berformat XML, unggul di lingkungan dengan data semi-terstruktur, bersarang dalam, atau schema-flexible (konsep XML ada di 20_XML_Database). Use case:

Use caseContoh
Content and Document Management Systems (CMS)Mengelola ensiklopedia, manual teknis, atau kontrak hukum. Item seperti ini butuh daftar isi dan update tingkat bagian yang menjaga hierarki, sehingga pengguna bisa meng-query bab tertentu atau cross-reference tanpa menarik satu blok teks besar yang terfragmentasi dari relational database
Enterprise Data Integration and Cross-Platform ExchangePada logistik supply chain, profil banyak partner, purchase order, dan format alamat bisa digabung ke satu skema dokumen XML untuk menerima dan merutekan transaksi data dengan aman tanpa double-modeling
Highly-Regulated Industries (mis. healthcare, finance)Healthcare: menyimpan dan meng-query Electronic Health Records (EHR) yang kompleks, instrumen laporan medis berbasis urutan, dan event log. Banking: transaksi keuangan, dokumen kepatuhan regulasi, dan ekosistem e-invoicing (mis. sistem B2B invoicing standar nasional)
Web services and Metadata RepositoriesMenyimpan metadata kompleks (seperti RDF/XML web semantics) atau informasi siaran real-time seperti peringatan cuaca nasional (koordinat, suhu, variasi angin) dan syndication feed seperti XMLNews

NewSQL Databases

  • Dengan NoSQL, developer bisa fokus pada aplikasi tanpa khawatir soal skalabilitas. Namun banyak aplikasi tidak bisa memakai sistem NoSQL karena tidak bisa melepas kebutuhan transaksi dan konsistensi yang kuat. DBMS NoSQL dapat membuat developer menghabiskan terlalu banyak waktu menulis kode untuk menangani data yang tidak konsisten.
  • NewSQL: kelas DBMS relasional modern yang berusaha memberi performa scalable yang sama untuk beban kerja OLTP read-write (OLTP = online transaction processing, banyak transaksi kecil) sambil tetap menjaga jaminan ACID untuk transaksi.
  • Referensi: A. Pavlo dan M. Aslett, What’s Really New with NewSQL, SIGMOD Record, Juni 2016 (Vol. 45, No. 2).

Kategorisasi NewSQL:

KategoriPenjelasanContoh
New architecturesDibangun dari awal dengan arsitektur baru, berbasis arsitektur terdistribusi yang beroperasi dengan sumber daya shared-nothing (tiap node punya resource sendiri) dan punya komponen untuk concurrency control multi-node, fault tolerance lewat replikasi, flow control, dan distributed query processingClustrix, CockroachDB, Google Spanner, H-Store, HyPer, MemSQL, NuoDB, SAP HANA, VoltDB
MiddlewareMengimplementasi ulang infrastruktur sharding yang dikembangkan perusahaan pada tahun 2000-an; memungkinkan organisasi memecah database menjadi beberapa shard yang disimpan di cluster instance DBMS single-nodeAgilData Scalable Cluster, MariaDB MaxScale, ScaleArc, ScaleBase
Database-as-a-service (DBaaS)Penawaran dari penyedia cloud, juga berbasis arsitektur baru. Penyedia DBaaS bertanggung jawab memelihara konfigurasi fisik database, termasuk system tuning, replikasi, dan backupAmazon Aurora, ClearDB

Ringkasan Cepat: Pilih yang Mana?

KebutuhanPilihan yang diarahkan materi
Integritas data kuat, ACID, relasi terstrukturRelational
Cache, session/shopping cart, konfigurasi, objek besar, key lookupKey-value
Atribut bervariasi, JSON, embedding/denormalisasiDocument
Data raksasa, selalu bisa menulis, multi data center, toleran inkonsistensi singkatColumn family
Banyak relasi antar instance entitas (jaringan, rekomendasi, social)Graph
Data semi-terstruktur bersarang, dokumen terregulasi, pertukaran lintas platformXML database
Butuh skala NoSQL tapi tetap ACID untuk OLTPNewSQL

Flashcard

flashcards Mengapa model relasional dan NoSQL sama-sama dikatakan muncul karena alasan pragmatis? :: Relasional muncul karena data anomalies dan sulitnya memakai ulang database untuk aplikasi baru; NoSQL muncul karena ketidakmampuan scale untuk memenuhi volume read dan write yang terus naik. Apa yang mungkin hilang saat memakai NoSQL demi performa read/write? :: Fitur relational seperti immediate consistency dan ACID transactions (walau tidak selalu). Sebutkan faktor selain query yang perlu dipahami saat memilih NoSQL database :: Volume read dan write, toleransi inkonsistensi di replica, sifat relasi antar entitas dan pola query, kebutuhan availability dan disaster recovery, kebutuhan fleksibilitas model data, serta kebutuhan latency. Kapan key-value database cocok dipakai, dan berikan contoh use case? :: Untuk aplikasi dengan read/write kecil yang sering dan model data sederhana (query hanya lookup lewat key). Contoh: caching data dari relational database, shopping cart, konfigurasi user aplikasi mobile, menyimpan objek besar. Apa keunggulan document database dibanding key-value dari sisi query dan struktur? :: Mendukung embedded documents (denormalisasi) serta indexing dan filter dokumen berdasarkan atribut, jadi query lebih kuat daripada key-value. Kapan column family database justru berlebihan? :: Bila data cukup kecil untuk dijalankan di satu server; pertimbangkan document atau key-value. Sebutkan kondisi aplikasi yang cocok untuk column family database :: Harus selalu bisa menulis, tersebar di banyak data center, menoleransi inkonsistensi jangka pendek di replica, punya field dinamis, dan berpotensi volume data sangat besar (ratusan terabyte). Bagaimana menilai apakah graph database berguna untuk suatu masalah? :: Cek apakah instance entitas punya relasi ke instance entitas lain (domain berupa jaringan entitas terhubung), misalnya rekomendasi, social networking, IT infrastructure management. Mengapa dikatakan NoSQL dan relational database saling melengkapi? :: Relational menjaga integritas dan mengurangi anomali tapi punya overhead operasional; NoSQL lebih baik bila performa lebih penting daripada immediate consistency atau ACID. Memilih database berarti memilih alat yang tepat untuk pekerjaannya. Sebutkan use case XML database :: CMS (manual teknis, kontrak), integrasi data enterprise dan pertukaran lintas platform (supply chain), industri teregulasi (EHR, e-invoicing), serta web services dan metadata repository (RDF/XML, peringatan cuaca, XMLNews). Apa itu NewSQL? :: Kelas DBMS relasional modern yang menawarkan performa scalable untuk beban kerja OLTP read-write sambil mempertahankan jaminan ACID untuk transaksi. Sebutkan tiga kategori NewSQL beserta contohnya :: New architectures (dari awal, shared-nothing; CockroachDB, Google Spanner, VoltDB), Middleware (infrastruktur sharding di atas DBMS single-node; MariaDB MaxScale, ScaleArc), dan DBaaS (dikelola penyedia cloud; Amazon Aurora, ClearDB).