Nyalakan api di bawah Cassandra dengan Apache Ignite

Nikita Ivanov adalah salah satu pendiri dan CTO GridGain Systems.

Apache Cassandra adalah database yang populer karena beberapa alasan. Basis data sumber terbuka, terdistribusi, NoSQL tidak memiliki titik kegagalan tunggal, jadi sangat cocok untuk aplikasi dengan ketersediaan tinggi. Ini mendukung replikasi multi-pusat data, memungkinkan organisasi mencapai ketahanan yang lebih besar dengan, misalnya, menyimpan data di beberapa zona ketersediaan Amazon Web Services. Ini juga menawarkan skalabilitas besar dan linier, sehingga sejumlah node dapat dengan mudah ditambahkan ke cluster Cassandra mana pun di pusat data mana pun. Karena alasan ini, perusahaan seperti Netflix, eBay, Expedia, dan beberapa lainnya telah menggunakan Cassandra untuk bagian utama bisnis mereka selama bertahun-tahun.

Seiring waktu, bagaimanapun, seiring berkembangnya kebutuhan bisnis dan skala penerapan Cassandra, banyak organisasi menemukan diri mereka dibatasi oleh beberapa keterbatasan Cassandra, yang pada gilirannya membatasi apa yang dapat mereka lakukan dengan data mereka. Apache Ignite, platform komputasi dalam memori, memberi organisasi ini cara baru untuk mengakses dan mengelola infrastruktur Cassandra mereka, memungkinkan mereka membuat data Cassandra tersedia untuk kasus penggunaan OLTP dan OLAP baru sambil memberikan kinerja yang sangat tinggi.

Keterbatasan Cassandra

Batasan mendasar dari Cassandra adalah bahwa ia berbasis disk, bukan database dalam memori. Ini berarti bahwa kinerja baca selalu dibatasi oleh spesifikasi I / O, yang pada akhirnya membatasi kinerja aplikasi dan membatasi kemampuan untuk mendapatkan pengalaman pengguna yang dapat diterima. Pertimbangkan perbandingan ini: Apa yang dapat diproses pada sistem dalam memori dalam satu menit akan memakan waktu puluhan tahun pada sistem berbasis disk. Meski menggunakan flash drive, masih butuh waktu berbulan-bulan.

Sementara Cassandra menawarkan kinerja penulisan data yang sangat cepat, untuk mencapai kinerja pembacaan yang optimal memerlukan data Cassandra ditulis ke disk secara berurutan, sehingga saat pembacaan, kepala disk dapat memindai selama mungkin tanpa latensi dari kepala yang melompat dari lokasi ke lokasi. . Untuk mencapai ini, kueri harus sederhana, tanpa JOINs, GROUP BYs, atau agregasi, dan data harus dimodelkan untuk kueri tersebut. Karenanya, Cassandra tidak menawarkan kemampuan kueri ad hoc atau SQL sama sekali.

DataStax, sebuah perusahaan yang mengembangkan dan memberikan dukungan untuk edisi komersial Apache Cassandra, menambahkan kemampuan untuk menghubungkan Cassandra ke Apache Spark dan Apache Solr untuk mendukung analitik. Namun, strategi ini memberikan manfaat terbatas karena menggunakan konektor adalah cara yang sangat mahal untuk mengakses subset data. Data masih harus diletakkan secara berurutan atau kinerjanya akan buruk karena Cassandra perlu melakukan pemindaian tabel lengkap, yang merupakan pendekatan pencar / pengumpulan yang melibatkan banyak latensi disk.

Batasan lain yang berpotensi penting dari Cassandra adalah bahwa ia hanya mendukung konsistensi akhirnya. Kurangnya kepatuhan ACID penuh berarti tidak dapat digunakan untuk aplikasi yang memindahkan uang atau memerlukan informasi inventaris waktu nyata.

Sebagai akibat dari keterbatasan ini, organisasi yang ingin menggunakan data yang mereka simpan di Cassandra untuk inisiatif bisnis baru seringkali kesulitan untuk melakukannya.

Masukkan Apache Ignite

Apache Ignite adalah platform komputasi dalam memori yang dapat membantu mengatasi keterbatasan ini di Cassandra sambil menghindari biaya overhead dari pendekatan konektor. Apache Ignite dapat disisipkan di antara Apache Cassandra dan lapisan aplikasi yang ada tanpa perubahan pada data Cassandra dan hanya perubahan minimal pada aplikasi. Data Cassandra dimuat ke dalam cluster dalam memori Ignite, dan aplikasi secara transparan mengakses data dari RAM alih-alih dari disk, mempercepat kinerja setidaknya 1.000x. Data yang ditulis oleh aplikasi ditulis terlebih dahulu ke cluster Ignite untuk konsumsi langsung dan berkelanjutan. Ini kemudian ditulis ke disk di Cassandra untuk penyimpanan permanen dengan penulisan sinkron atau asinkron.

Apache Ignite juga memiliki strategi penulisan yang sama dengan Apache Cassandra, sehingga akan terasa familiar bagi pengguna Cassandra. Seperti Cassandra, Ignite adalah open source dan penggunanya mendapatkan keuntungan dari komunitas yang besar dan aktif, dengan dukungan yang tersedia melalui sejumlah situs komunitas. Namun, sebagai platform komputasi dalam memori, Apache Ignite memungkinkan organisasi melakukan lebih banyak hal dengan data Cassandra mereka — dan melakukannya lebih cepat. Begini caranya.

  • Opsi data lainnya — ANSI SQL-99 dan jaminan transaksi ACID

    Didukung oleh mesin yang sesuai dengan ANSI SQL-99, Apache Ignite menawarkan jaminan transaksi ACID untuk transaksi terdistribusi. In-Memory SQL Grid-nya menyediakan kapabilitas database dalam memori, dan API ODBC dan JDBC juga disertakan. Dengan menggabungkan Ignite dengan Apache Cassandra, semua jenis kueri OLAP atau SQL kompleks dapat ditulis terhadap data Cassandra yang telah dimuat ke Ignite. Ignite juga dapat dioperasikan dalam beberapa mode dari konsistensi akhir hingga real-time, kepatuhan ACID penuh, memungkinkan organisasi untuk menggunakan data yang disimpan di Cassandra (tetapi dibaca ke Ignite) untuk sejumlah aplikasi dan inisiatif baru.
  • Tidak ada renovasi data Cassandra

    Apache Ignite membaca dari Apache Cassandra dan database NoSQL lainnya, jadi memindahkan data Cassandra ke Ignite tidak memerlukan modifikasi data. Skema data juga dapat dimigrasikan langsung ke Ignite apa adanya.
  • Kecepatan lebih tinggi untuk aplikasi intensif data

    Memindahkan semua data Apache Cassandra ke dalam RAM menawarkan performa tercepat dan sangat meningkatkan kecepatan kueri karena data tidak terus-menerus dibaca dari dan ditulis ke disk. Anda juga dapat menggunakan Apache Ignite untuk menyimpan hanya bagian aktif dari data Cassandra untuk mencapai peningkatan kecepatan yang signifikan. Indeks Ignite juga berada di memori, sehingga memungkinkan untuk melakukan kueri SQL sangat cepat pada data Cassandra yang telah dipindahkan ke Ignite.
  • Penskalaan horizontal dan vertikal sederhana

    Seperti Apache Cassandra, Apache Ignite mudah diskalakan secara horizontal dengan menambahkan node ke cluster Ignite. Node baru secara instan memberikan memori tambahan untuk menyimpan data Cassandra. Namun, Ignite juga mudah melakukan penskalaan secara vertikal. Ignite dapat memanfaatkan semua memori pada sebuah node, tidak hanya memori JVM, dan objek dapat didefinisikan untuk hidup atau mati di heap dan menggunakan semua memori pada mesin. Dengan cara ini, cukup dengan meningkatkan jumlah memori pada setiap node secara otomatis menskalakan cluster Ignite secara vertikal.
  • Ketersediaan meningkat

    Seperti Apache Cassandra, platform komputasi Apache Ignite peer-to-peer selalu tersedia. Kegagalan sebuah node tidak mencegah aplikasi untuk menulis ke dan membaca dari node cadangan yang ditentukan. Redistribusi data juga otomatis saat cluster Ignite berkembang. Karena Ignite menawarkan dukungan pengelompokan yang canggih, seperti mendeteksi dan memulihkan kondisi otak yang terbelah, sistem gabungan Cassandra / Ignite lebih tersedia daripada sistem Cassandra yang berdiri sendiri.
  • Lebih sederhana dan lebih cepat dari Hadoop

    Banyak organisasi yang ingin membuat kueri SQL ke dalam data Apache Cassandra mereka mempertimbangkan untuk memuat data ke Hadoop. Kelemahan dari pendekatan ini adalah, setelah menyelesaikan ETL dan tantangan sinkronisasi data yang muncul, kueri ke Hadoop masih akan relatif sangat lambat. Meskipun menggabungkan Cassandra dan Ignite juga akan menghasilkan beberapa kinerja kecil karena sistem tambahan dan caching, kueri tetap dieksekusi dengan kecepatan tinggi, menjadikan solusi ini sempurna untuk analitik waktu nyata. Dan mengelola hubungan antara data Ignite dan Cassandra jauh lebih sederhana.

Tantangan dalam mengimplementasikan Cassandra dan Ignite

Seperti disebutkan di atas, menggabungkan Apache Cassandra dan Apache Ignite memang membutuhkan biaya. Anda secara alami terkena pukulan dalam kinerja — dan biaya serta pemeliharaan — memiliki dua jaringan (seperti yang Anda lakukan dengan penambahan solusi lain). Ada biaya perangkat keras untuk server komoditas baru dan RAM yang memadai, dan mungkin biaya langganan untuk versi Apache Ignite tingkat perusahaan dan didukung. Lebih lanjut, menerapkan dan memelihara Ignite mungkin memerlukan beberapa organisasi untuk mempekerjakan keahlian tambahan. Akibatnya, analisis biaya / manfaat dijamin untuk memastikan bahwa manfaat strategis dari setiap kasus penggunaan baru, bersama dengan perolehan kinerja, lebih besar daripada biayanya.

Dalam melakukan penentuan ini, pertimbangan berikut penting dilakukan. Pertama, tidak seperti generasi sebelumnya dari solusi komputasi dalam memori, yang membutuhkan penggabungan beberapa produk, Apache Ignite adalah solusi yang terintegrasi penuh dan mudah diterapkan. Mengintegrasikan Ignite dengan Apache Cassandra biasanya merupakan proses yang sangat mudah. Nyalakan slide antara Cassandra dan aplikasi, seperti Apache Kafka atau klien lain, yang mengakses data. Ignite menyertakan konektor Cassandra prebuilt, yang menyederhanakan proses. Aplikasi kemudian membaca dan menulis Ignite alih-alih Cassandra, sehingga selalu mengakses data dari memori, bukan dari disk. Ignite secara otomatis menangani pembacaan dan penulisan dari dan ke Cassandra.

Kedua, sementara banyak yang masih menganggap komputasi dalam memori sangat mahal, biaya RAM telah turun sekitar 30 persen per tahun sejak 1960-an. Meskipun RAM masih sangat mahal daripada SSD, manfaat kinerja dari penggunaan terabyte RAM dalam cluster komputasi dalam memori, terutama untuk aplikasi skala besar dan penting, dapat membuat komputasi dalam memori menjadi yang paling hemat biaya. pendekatan.

Terakhir, Apache Ignite adalah taruhan yang aman dengan basis kode yang matang. Ini berasal dari proyek pribadi pada tahun 2007, disumbangkan ke Apache Software Foundation pada tahun 2014, dan lulus ke proyek tingkat atas sekitar setahun kemudian — proyek Apache tercepat kedua yang lulus setelah Apache Spark.

Apache Cassandra adalah solusi solid dan terbukti yang dapat menjadi elemen penting dari banyak strategi data. Dengan Apache Ignite, data Cassandra dapat dibuat lebih berguna. Platform komputasi dalam memori Apache Ignite adalah solusi yang terjangkau dan efektif untuk membuat data Cassandra tersedia untuk kasus penggunaan OLTP dan OLAP baru sambil memenuhi tuntutan kinerja ekstrim dari aplikasi skala web saat ini . Solusi gabungan ini mempertahankan ketersediaan tinggi dan skalabilitas horizontal Cassandra, sambil menambahkan kapabilitas kueri yang sesuai dengan ANSI SQL-99, skalabilitas vertikal, konsistensi yang lebih kuat dengan jaminan transaksi ACID, dan banyak lagi — semuanya sekaligus memberikan kinerja yang 1.000x lebih cepat daripada berbasis disk pendekatan.

Forum Teknologi Baru menyediakan tempat untuk mengeksplorasi dan mendiskusikan teknologi perusahaan yang sedang berkembang secara mendalam dan luas. Pemilihannya subjektif, berdasarkan pilihan teknologi yang kami yakini penting dan paling menarik bagi pembaca. tidak menerima jaminan pemasaran untuk publikasi dan berhak untuk mengedit semua konten yang dikontribusikan. Kirim semua pertanyaan ke [email protected]