Kenalan dengan NewSQL

Muhammad Najie
HMIF ITERA
Published in
5 min readOct 30, 2021

NewSQL, menjembatani fitur yang tersedia pada SQL dan NoSQL menjadi satu. Before we jump into the main course, we need to know SQL and NoSQL first and bring the problems that arise from these two.

SQL

SQL merupakan sebuah bahasa untuk menyimpan, memanipulasi, maupun mengambil data yang tersimpan pada basis data relasional. Namun, umumnya ketika orang menyebut SQL, mereka me-refer ke basis data relasional. Basis data relasional dikenal powerful karena menjamin setiap transaksi yang terjadi bersifat ACID.

A Transaction is a single unit of work performed within a database, sometimes made up of multiple operations.

Ilustrasi di bawah ini adalah contoh dari sebuah transaksi yang umum terjadi ketika kita melakukan pengiriman uang dari satu rekening ke rekening lainnya. Mengurangi saldo pengirim dan menambah saldo penerima.

Bank Transfer Transaction (Source: Get To Know PostgreSQL)

ACID (atomicity, consistency, isolation, durability) is a set of properties of database transactions intended to guarantee data validity despite errors, power failures, and other mishaps.

Source: https://www.freepik.com/pch-vector

Mari kita gunakan kembali ilustrasi di atas. Case-nya kita ingin mengirim uang dari rekening A ke rekening B. Namun, terjadi kesalahan sistem di mana saldo pada rekening A telah berkurang tetapi saldo pada rekening B tidak bertambah. Nah situasi seperti ini yang mampu diatasi dengan ACID transaction.

Seiring berjalannya waktu, data yang tersimpan pada database akan semakin besar. Dengan bertambahnya ukuran data yang tersimpan, proses pengambilan data dan proses lainnya juga akan semakin lambat. Solusi termudah untuk permasalahan ini adalah meningkatkan kemampuan dari server yang menangani transaksi database (meng-upgrade processor, RAM, etc atau vertical scaling). Solusi lainnya adalah melakukan optimasi query, denormalizing database. Yap, vertical scaling costs increase exponentially which can be painful.

Source: https://betterprogramming.pub/scaling-sql-nosql-databases-1121b24506df

Beberapa contoh database SQL adalah MySQL, PostgreSQL, Microsoft SQL Server, etc.

NoSQL

NoSQL came into existence because the databases at the time couldn’t handle the scale option required.

NoSQL berbanding terbalik dengan SQL. Pada dasarnya NoSQL itu schemaless sehingga tidak terstandarisasi untuk struktur datanya.

Data model pada NoSQL terbagi:

  1. Document (Firestore, MongoDB)
  2. Graph (Neo4j)
  3. Key-value (Riak, DynamoDB, CouchDB)
  4. Wide-column (Apache Cassandra)

Sejak awal NoSQL dibangun dengan sengaja untuk mendukung kemampuan skalabilitas secara horizontal yang tidak dimiliki oleh DBMS SQL.

Menambahkan server pada Pool atau Cluster

NoSQL mengikuti properti BASE untuk setiap transaksinya.

Basic Availability

Sistem menjamin ketersediaan data

Soft-state

Datastore tidak harus selalu konsisten

Eventually consistent

Pada akhirnya, datanya akan konsisten.

Elasticsearch cluster illustration

Mari jabarkan lebih lanjut maksud dari BASE tersebut, lihatlah ilustrasi Elasticsearch di atas. Data akan disimpan pada primary datastore secara terdistribusi. Setiap primary datastore akan memiliki replikasinya, di mana pada ilustrasi di atas setiap primary datastore masing-masing memiliki 2 replica. Misal ketika ada data yang berubah nilainya pada primary 1 datastore, data pada replica-nya tidak akan secara langsung berubah pada waktu yang sama. Setelah beberapa saat, sistem akan melakukan “sinkronisasi” data primary dan data replicanya sehingga akhirnya menjadi konsisten.

Dari situ kita dapat memahami arti dari NoSQL mengutamakan ketersediaan data dibandingkan correctness. Misalkan terjadi kerusakan pada Node 1, sistem tetap memiliki akses terhadap data pada 2 node lainnya.

NewSQL

Dapat ditebak seperti yang telah dikatakan di awal. NewSQL adalah database system yang mengambil karakteristik dari SQL dan NoSQL dengan mengambil keunggulan dari setiap jenis sistem dan memperkecil kelemahan satu sama lainnya.

SQL, NoSQL, NewSQL comparison table

Beberapa NewSQL database yang sudah bisa digunakan adalah Google Spanner, VoltDB, CockroachDB, Citus, NuoDB, Altibase, etc.

Karakteristik penting dan menarik yang ditawarkan oleh NewSQL adalah mekanisme concurrency control yang bersifat non-locking, artinya realtime read tidak akan conflict dengan aksi writes.

Melihat fitur yang ditawarkan dari NewSQL, dapat dilihat sebagai jawaban untuk salah satu tantangan dari Big Data, yaitu waktu pemrosesan data heterogen dalam jumlah besar tetapi dalam waktu yang terbatas. Kesempatan lainnya yang mungkin diberikan NewSQL adalah menyimpan operational data (also known as OLTP) sekaligus menjalankan analytical work tanpa perlu melalui proses yang menghabiskan waktu seperti ELT/ETL (Extract, Load, Transform/Extract, Transform, Load). Sejauh hal yang saya pelajari, HTAP (Hybrid Transactional/Analytical Processing) yang merupakan bagian dari solusi mungkin yang ditawarkan saat ini dari NewSQL.

A more data oriented approach has been noticeable over the past few years, which brings analytics and real time data processing into attention.

Conclusion

  • SQL cocok digunakan ketika keandalan data dan konsistensi data sangat penting, tetapi memiliki tantangan dalam hal kemampuan skalabilitas
  • NoSQL cocok digunakan ketika ketersediaan data dan kecepatan menyisipkan atau mengambil lebih utama, tetapi lemah dalam hal konsistensi.
  • NewSQL memiliki potensi besar dalam hal menangani dengan baik realtime data analytics yang mengarah ke Big Data.

The important thing that we have to keep in mind. Each of the options is more suitable for some projects and less suitable for other projects. It’s all depends on the business need. There is no universal ideal choice.

You are doing great to have come here so far. There is a lot of things that I am not covered yet, and hopefully, it will be soon while I am learning on it and able to share it with you guys.

References

--

--