Skip to Content

SQL Sudah Mati, NoSQL Sekarat, dan NewSQL Diam-Diam Mengambil Alih

Bayangkan Anda sedang mengembangkan infrastruktur backend untuk sistem keuangan yang ekstensif. Sistem ini beroperasi sebagai hedge fund, payment processor, atau institusi perbankan besar.

Taruhannya? Sangat tinggi.

Setiap transaksi harus 100% benar — tanpa pengecualian. Anda membutuhkan jaminan ACID. Database relasional tradisional yang menegakkan jaminan tersebut tidak lagi cocok dengan skala platform Anda yang terus berkembang.

RDBMS? Memberikan konsistensi, tapi tidak bisa diskalakan.

NoSQL? Memberikan skalabilitas tapi mengorbankan konsistensi ketat.

Anda menginginkan keduanya. Anda membutuhkan keduanya. Jadi apa yang harus dilakukan?

Era Database "Tambal Sulam"

Para engineer sepanjang sejarah harus memilih di antara dua solusi yang tidak optimal:

  1. Melakukan vertical scaling pada RDBMS sampai server "menjerit"
  2. Membuat distribusi DIY, membangun custom middleware, logika sharding, protokol konsensus, manajemen failover, dan berdoa agar semuanya berjalan lancar


Pendekatan ini seperti menempelkan roket pendorong pada sepeda. Berfungsi... sampai tidak lagi berfungsi.

Sebenarnya ada solusi ketiga yang layak untuk manajemen database. Database yang menyediakan kepatuhan ACID dan skalabilitas horizontal melalui sistem yang beroperasi tanpa "tambal sulam".

Kenali NewSQL — Yang Terbaik dari Dua Dunia

NewSQL bukan sekadar buzzword — ini adalah kategori database yang dirancang untuk menjembatani jurang antara SQL dan NoSQL.

  • Transaksi ACID?
  • Skala horizontal di berbagai node?
  • Tidak perlu hack sharding khusus?

Database NewSQL menggunakan teknik seperti:

  • Koordinasi transaksi terdistribusi
  • MVCC (Multi-Version Concurrency Control)
  • Two-phase commit
  • Pemrosesan in-memory
  • Partisi otomatis (sharding)

Singkatnya, mereka dibangun untuk skala web, tetapi tanpa mengorbankan integritas transaksional.

BASE vs ACID: Mengapa NewSQL Menang untuk Aplikasi Serius

Database NoSQL mendapatkan popularitas mereka melalui model BASE, yang mencakup:

  • Basically Available
  • Soft state
  • Eventually consistent

Model BASE bekerja sempurna untuk aplikasi feed media sosial.

Namun, pemrosesan perdagangan saham, pembayaran bank, dan klaim asuransi memerlukan penanganan yang berbeda dari feed media sosial.

Anda tidak bisa mentoleransi eventual consistency dalam operasi Anda. Sistem membutuhkan kebenaran yang segera dan terjamin.

NewSQL menonjol sebagai solusi untuk tujuan ini.

Perbandingan: MySQL NDB Cluster vs TIBCO ActiveSpaces

Sebuah studi baru-baru ini membandingkan dua pemain NewSQL yang kurang dikenal dalam beban kerja perbankan dunia nyata.

Kontestan:

MySQL NDB Cluster

  • Dibangun untuk konsistensi yang kuat
  • Arsitektur shared-nothing
  • Partisi otomatis di seluruh node
  • Replikasi sinkron
  • Bagus untuk query gaya SQL dan operasi mission-critical

TIBCO ActiveSpaces

  • In-memory data grid
  • Fokus pada throughput mentah
  • Hebat dalam batch ingestion
  • Mengorbankan batasan relasional untuk kecepatan
  • Tidak dibangun untuk setup active-active lintas wilayah

Hasil Performa (dan Kejutan)

Pengujian menggunakan aplikasi perbankan berbasis arsitektur microservices, yang beroperasi di dua wilayah: Amerika Serikat dan Singapura. Tools Apache JMeter digunakan untuk menjalankan beban kerja transaksional dan analitis.

Apa yang Terjadi?

  • MySQL NDB Cluster berkinerja buruk saat menangani operasi single-record dan tugas agregasi kompleks
  • Sistem menghadapi kesulitan dengan bulk inserts karena mempertahankan penegakan transaksional yang ketat
  • TIBCO ActiveSpaces menangani penulisan volume tinggi dan operasi batch processing dengan kecepatan tinggi
  • Sistem mengalami masalah kinerja saat menangani query kompleks dan gagal mempertahankan isolasi selama beban sistem tinggi

NDB memberikan hasil terbaik untuk kebenaran, sementara TIBCO memberikan kinerja tercepat.

Kapan Menggunakan Apa?

Pilih MySQL NDB Cluster jika:

  • Anda membangun sistem bisnis inti
  • Anda membutuhkan konsistensi yang kuat
  • Anda menginginkan kompatibilitas SQL
  • Anda peduli tentang keramahan pengembang dan dukungan komunitas

Pilih TIBCO ActiveSpaces jika:

  • Anda melakukan analitik real-time
  • Anda memproses data IoT atau deteksi penipuan
  • Anda menghargai latensi rendah daripada logika transaksional

Pelajaran Nyata untuk Data Analyst

Sebagai data analyst, pemilihan database yang tepat sangat krusial untuk performa analisis Anda. Berikut beberapa pelajaran praktis:

1. Kenali Kebutuhan Analisis Anda

Jika Anda menangani analisis real-time dengan volume data yang sangat besar tetapi tidak memerlukan konsistensi absolut (misalnya analisis sentimen media sosial atau tren pasar), solusi seperti TIBCO ActiveSpaces mungkin lebih sesuai.

Contoh implementasi: Untuk dashboard analitik yang memerlukan refresh terus-menerus dengan delay minimal, Anda bisa memanfaatkan kemampuan in-memory processing dari TIBCO ActiveSpaces.

python

# Contoh pseudocode untuk koneksi ke TIBCO ActiveSpaces import activespaces as as # Inisialisasi koneksi space = as.connect( metaname="AnalyticsSpace", spacename="RealTimeMetrics", discovery="multicast", listenername="DataAnalyst" ) # Query untuk dashboard real-time def get_real_time_metrics(): query = "SELECT region, SUM(transaction_value) FROM transactions GROUP BY region" return space.execute_query(query) # Implementasi refresh dashboard setiap 5 detik while True: metrics = get_real_time_metrics() update_dashboard(metrics) time.sleep(5)

2. Pertimbangkan Kompleksitas Query Anda

Jika pekerjaan Anda memerlukan query kompleks dengan banyak join dan agregasi, MySQL NDB Cluster mungkin menjadi pilihan yang lebih baik meskipun mungkin sedikit lebih lambat untuk beban kerja besar.

Contoh implementasi: Untuk laporan analitik mingguan yang membutuhkan integritas data absolut:

python

# Contoh pseudocode untuk koneksi ke MySQL NDB Cluster import mysql.connector # Inisialisasi koneksi conn = mysql.connector.connect( host="ndb-cluster-endpoint", user="analyst", password="secure_password", database="financial_data" ) # Query kompleks untuk laporan keuangan def generate_weekly_financial_report(): cursor = conn.cursor() query = """ SELECT c.region, c.segment, SUM(t.amount) as total_amount, COUNT(DISTINCT c.customer_id) as unique_customers, AVG(t.amount) as avg_transaction_value FROM customers c JOIN transactions t ON c.customer_id = t.customer_id WHERE t.transaction_date BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE() GROUP BY c.region, c.segment ORDER BY total_amount DESC """ cursor.execute(query) return cursor.fetchall()

3. Implementasikan Hybrid Solution untuk Kasus Kompleks

Untuk kebutuhan yang beragam, pertimbangkan pendekatan hybrid dengan menggunakan MySQL NDB Cluster untuk transaksi yang membutuhkan konsistensi dan TIBCO ActiveSpaces untuk analitik real-time.

Implementasi praktis:

  • Gunakan MySQL NDB Cluster untuk menyimpan data utama yang memerlukan ACID
  • Set up pipeline replikasi ke TIBCO ActiveSpaces untuk analitik
  • Buat dashboard yang mengambil data dari TIBCO ActiveSpaces untuk kecepatan, tetapi konfirmasi keputusan penting dengan MySQL NDB Cluster

Kesimpulan

Tidak ada peluru perak dalam dunia database.

Evolusi NewSQL merupakan perkembangan yang harus dipantau bisnis meskipun tidak berfungsi sebagai solusi universal. Teknologi ini beroperasi sebagai game-changer diam-diam untuk sistem backend yang membutuhkan skalabilitas dan akurasi sekaligus menghindari kebutuhan bagi engineer untuk menjadi administrator sistem seperti Frankenstein.

Masih melakukan scaling RDBMS Anda dengan doa dan kopi? Mungkin sudah waktunya untuk mempertimbangkan sesuatu yang dibangun untuk dunia modern.

Glossary: Terminologi Penting untuk Data Analyst

  • ACID: Singkatan dari Atomicity, Consistency, Isolation, Durability. Seperangkat properti yang menjamin keandalan pemrosesan transaksi database.
  • BASE: Singkatan dari Basically Available, Soft state, Eventually consistent. Model konsistensi yang lebih longgar yang digunakan oleh banyak database NoSQL.
  • MVCC (Multi-Version Concurrency Control): Metode kontrol konkurensi yang memungkinkan akses baca tanpa penguncian dengan membuat versi data pada waktu tertentu.
  • Two-phase commit: Protokol yang memastikan bahwa semua node dalam sistem terdistribusi melakukan atau membatalkan transaksi yang sama.
  • Sharding: Metode mempartisi data di seluruh beberapa server untuk mendistribusikan beban dan meningkatkan skalabilitas.
  • In-memory processing: Teknik penyimpanan dan pemrosesan data terutama dalam RAM untuk kecepatan akses yang jauh lebih cepat.
  • Shared-nothing architecture: Arsitektur di mana setiap node berdiri sendiri dan mandiri, tanpa berbagi sumber daya dengan node lain.
  • OLTP (Online Transaction Processing): Sistem yang fokus pada penanganan transaksi yang banyak dan kecil, seperti transaksi perbankan.
  • HTAP (Hybrid Transactional/Analytical Processing): Kemampuan untuk melakukan analitik real-time pada data transaksional tanpa perlu memindahkannya ke sistem terpisah.
  • Throughput: Jumlah total operasi yang dapat diselesaikan sistem database dalam periode waktu tertentu.

Citations:

  1. https://en.wikipedia.org/wiki/NewSQL
  2. https://www.xenonstack.com/blog/sql-vs-nosql-vs-newsql
  3. https://aerospike.com/glossary/newsql-rdms/
  4. https://www.mysql.com/products/database/cluster/
  5. https://www.linkedin.com/pulse/database-dilemma-high-stakes-systems-why-you-should-pay-raed-fessesi-kjurf
  6. https://docs.tibco.com/pub/activespaces/2.1.6/doc/html/GUID-EC07A284-A16F-48A4-A88D-8245B4FE34B9.html
  7. http://mikaelronstrom.blogspot.com/2020/02/use-cases-for-mysql-ndb-cluster-80.html
  8. https://www.singlestore.com/blog/how-to-choose-the-right-sql-database/
  9. https://phoenixnap.com/kb/newsql
  10. https://ink.library.smu.edu.sg/context/sis_research/article/11035/viewcontent/Performance_Evaluation_of_NewSQL_Databases_in_a_Distributed_Architecture.pdf
  11. https://www.pingcap.com/article/exploring-newsql-scalability-meets-consistency-in-2024/
  12. https://lenteradua.net/jurnal/index.php/jnanaloka/article/view/21
  13. https://amarchenko.dev/blog/2024-03-13-new-sql/
  14. https://www.packtpub.com/en-pt/learning/tech-guides/newsql-what-hype-about
  15. https://www.harpersystems.dev/post/deep-dive-newsql-databases
  16. https://dev.to/ankitmalikg/nosql-vs-newsql-vs-distributed-sql-a-comprehensive-comparison-lm7
  17. https://stackoverflow.com/questions/5300490/mysql-cluster-ndb-vs-mysql-replication-innodb-for-rails-3-apps-pros-cons
  18. https://www.scitepress.org/Papers/2023/117144/117144.pdf
  19. https://stackoverflow.com/questions/1980484/what-are-the-limitations-of-implementing-mysql-ndb-cluster
  20. https://www.yugabyte.com/blog/distributedsql-vs-newsql/
  21. https://docs.tibco.com/products/tibco-activespaces-enterprise-edition
  22. https://www.red-gate.com/simple-talk/cloud/big-data/consistency-and-concurrency-in-newsql-database-systems/
  23. https://ink.library.smu.edu.sg/sis_research/10035/
  24. https://www.instagram.com/reel/DHKQlEas9J9/
  25. https://blog.bytebytego.com/p/factors-to-consider-in-database-selection
  26. https://docs.tibco.com/pub/msg-ap2as/1.0.0/doc/html/GUID-4E963C8E-34D4-46C5-89D8-D0C51B1B97F4.html


9 Kesalahan SQL yang Bahkan Dilakukan oleh Developer Berpengalaman