Nyalakan api di bawah Cassandra dengan Apache Ignite

Nikita Ivanov adalah pengasas bersama dan CTO GridGain Systems.

Apache Cassandra adalah pangkalan data yang popular kerana beberapa sebab. Pangkalan data NoSQL sumber terbuka, diedarkan tidak mempunyai satu titik kegagalan, jadi sangat sesuai untuk aplikasi dengan ketersediaan tinggi. Ini menyokong replikasi multi-pusat, yang membolehkan organisasi mencapai ketahanan yang lebih besar dengan, misalnya, menyimpan data di beberapa zon ketersediaan Perkhidmatan Web Amazon. Ia juga menawarkan skala besar dan linear, jadi sebilangan nod dapat ditambahkan dengan mudah ke kluster Cassandra di pusat data mana pun. Atas sebab-sebab ini, syarikat seperti Netflix, eBay, Expedia, dan beberapa syarikat lain telah menggunakan Cassandra untuk bahagian utama perniagaan mereka selama bertahun-tahun.

Akan tetapi, seiring waktu, apabila keperluan perniagaan berkembang dan skala penggunaan Cassandra, banyak organisasi mendapati diri mereka dibatasi oleh beberapa batasan Cassandra, yang pada gilirannya menyekat apa yang dapat mereka lakukan dengan data mereka. Apache Ignite, platform pengkomputeran dalam memori, menyediakan organisasi ini dengan cara baru untuk mengakses dan mengurus infrastruktur Cassandra mereka, yang memungkinkan mereka menyediakan data Cassandra untuk kes penggunaan OLTP dan OLAP baru sambil memberikan prestasi yang sangat tinggi.

Batasan Cassandra

Batasan asas Cassandra adalah bahawa ia adalah berdasarkan cakera, bukan pangkalan data dalam memori. Ini bermaksud bahawa prestasi membaca selalu dibatasi oleh spesifikasi I / O, akhirnya menyekat prestasi aplikasi dan membatasi kemampuan untuk memperoleh pengalaman pengguna yang dapat diterima. Pertimbangkan perbandingan ini: Apa yang dapat diproses pada sistem memori dalam satu minit memerlukan beberapa dekad pada sistem berasaskan cakera. Walaupun menggunakan pemacu kilat, ia masih memerlukan masa berbulan-bulan.

Walaupun Cassandra menawarkan prestasi penulisan data yang sangat cepat, untuk mencapai prestasi membaca yang optimum memerlukan data Cassandra ditulis ke cakera secara berurutan, sehingga pada pembacaan, kepala cakera dapat mengimbas selama mungkin tanpa kependaman kepala melompat dari lokasi ke lokasi . Untuk mencapai matlamat ini, pertanyaan yang perlu untuk menjadi mudah, tanpa apa-apa JOINs, GROUP BYs, atau pengagregatan, dan data mesti dimodelkan bagi mereka pertanyaan. Oleh itu, Cassandra sama sekali tidak menawarkan kemampuan pertanyaan ad hoc atau SQL.

DataStax, sebuah syarikat yang mengembangkan dan memberikan sokongan untuk edisi komersial Apache Cassandra, menambahkan kemampuan untuk menghubungkan Cassandra ke Apache Spark dan Apache Solr untuk mendukung analisis. Walau bagaimanapun, strategi ini memberikan faedah yang terhad kerana menggunakan penyambung adalah cara yang sangat mahal untuk mengakses subkumpulan data. Data masih harus disusun secara berurutan atau kinerjanya buruk kerana Cassandra perlu melakukan imbasan jadual penuh, yang merupakan pendekatan penyebaran / pengumpulan yang melibatkan latensi cakera.

Batasan Cassandra lain yang mungkin penting adalah bahawa ia hanya menyokong konsistensi akhirnya. Kurangnya pematuhan ACID sepenuhnya bermaksud tidak boleh digunakan untuk aplikasi yang memindahkan wang atau memerlukan maklumat inventori masa nyata.

Hasil daripada batasan ini, organisasi yang ingin menggunakan data yang mereka simpan di Cassandra untuk inisiatif perniagaan baru sering bergelut dengan cara melakukannya.

Masukkan Apache Ignite

Apache Ignite adalah platform pengkomputeran dalam memori yang dapat membantu mengatasi keterbatasan ini di Cassandra sambil mengelakkan kos overhead dari pendekatan penyambung. Apache Ignite dapat disisipkan antara Apache Cassandra dan lapisan aplikasi yang ada tanpa perubahan pada data Cassandra dan hanya sedikit perubahan pada aplikasi. Data Cassandra dimuat ke dalam kluster memori Ignite, dan aplikasi mengakses data secara telus dari RAM dan bukannya dari cakera, mempercepat prestasi sekurang-kurangnya 1,000x. Data yang ditulis oleh aplikasi ditulis terlebih dahulu ke kluster Ignite untuk penggunaan segera dan berterusan. Ia kemudian ditulis ke cakera di Cassandra untuk simpanan tetap dengan penulisan segerak atau tak segerak.

Apache Ignite juga memiliki strategi penulisan yang sama dengan Apache Cassandra, sehingga akan terasa biasa bagi pengguna Cassandra. Seperti Cassandra, Ignite adalah sumber terbuka dan penggunanya mendapat manfaat dari komuniti yang besar dan aktif, dengan sokongan yang tersedia melalui sejumlah laman web komuniti. Sebagai platform pengkomputeran dalam memori, Apache Ignite membolehkan organisasi melakukan lebih banyak lagi dengan data Cassandra mereka — dan melakukannya dengan lebih pantas. Ini caranya.

  • Lebih banyak pilihan data — jaminan transaksi ANSI SQL-99 dan ACID

    Dikuasakan oleh enjin yang mematuhi ANSI SQL-99, Apache Ignite menawarkan jaminan transaksi ACID untuk transaksi yang diedarkan. In-Memory SQL Gridnya menyediakan keupayaan pangkalan data dalam memori, dan API ODBC dan JDBC disertakan. Dengan menggabungkan Ignite dengan Apache Cassandra, semua jenis pertanyaan OLAP atau SQL kompleks dapat ditulis terhadap data Cassandra yang telah dimuat ke dalam Ignite. Ignite juga dapat dikendalikan dalam pelbagai mod dari konsistensi akhirnya hingga pematuhan ACID penuh, dalam masa nyata, yang membolehkan organisasi menggunakan data yang disimpan di Cassandra (tetapi dibaca ke Ignite) untuk pelbagai aplikasi dan inisiatif baru.
  • Tiada pembentukan semula data Cassandra

    Apache Ignite membaca dari Apache Cassandra dan pangkalan data NoSQL yang lain, jadi memindahkan data Cassandra ke Ignite tidak memerlukan pengubahsuaian data. Skema data juga dapat dimigrasikan terus ke Ignite sebagaimana adanya.
  • Kelajuan yang lebih tinggi untuk aplikasi intensif data

    Memindahkan semua data Apache Cassandra ke dalam RAM menawarkan prestasi secepat mungkin dan meningkatkan kelajuan pertanyaan kerana data tidak terus dibaca dan ditulis ke cakera. Anda juga boleh menggunakan Apache Ignite untuk menyimpan hanya bahagian aktif data Cassandra untuk mencapai peningkatan kelajuan yang signifikan. Indeks Ignite juga berada dalam memori, memungkinkan untuk melakukan pertanyaan SQL ultrafast pada data Cassandra yang telah dipindahkan ke Ignite.
  • Penskalaan mendatar dan menegak sederhana

    Seperti Apache Cassandra, Apache Ignite dengan mudah skala secara mendatar dengan menambahkan nod ke kluster Ignite. Node baru dengan serta-merta memberikan memori tambahan untuk menyimpan data Cassandra. Walau bagaimanapun, Ignite juga mudah menimbang secara menegak. Ignite dapat menggunakan semua memori pada simpul, bukan hanya memori JVM, dan objek dapat didefinisikan untuk hidup di dalam atau di luar timbunan dan menggunakan semua memori di mesin. Dengan cara ini, dengan hanya meningkatkan jumlah memori pada setiap nod secara automatik skala Ignite cluster secara menegak.
  • Peningkatan ketersediaan

    Seperti Apache Cassandra, platform pengkomputeran Apache Ignite peer-to-peer sentiasa tersedia. Kegagalan nod tidak menghalang aplikasi menulis dan membaca dari nod sandaran yang ditentukan. Pengagihan semula data juga automatik apabila kluster Ignite berkembang. Kerana Ignite menawarkan sokongan pengelompokan yang canggih, seperti mengesan dan memperbaiki keadaan otak yang terpisah, sistem Cassandra / Ignite gabungan lebih tersedia daripada sistem Cassandra yang berdiri sendiri.
  • Lebih sederhana dan lebih pantas daripada Hadoop

    Banyak organisasi yang ingin membuat pertanyaan SQL ke dalam data Apache Cassandra mereka mempertimbangkan untuk memuatkan data ke Hadoop. Kelemahan pendekatan ini adalah bahawa, setelah menyelesaikan cabaran ETL dan penyegerakan data yang timbul, pertanyaan ke Hadoop masih agak lambat. Walaupun menggabungkan Cassandra dan Ignite juga akan menghasilkan prestasi kecil kerana sistem dan caching tambahan, pertanyaan tetap dilakukan dengan kecepatan yang sangat cepat, menjadikan penyelesaiannya sempurna untuk analisis masa nyata. Dan menguruskan hubungan antara data Ignite dan Cassandra jauh lebih mudah.

Cabaran untuk melaksanakan Cassandra dan Ignite

Seperti yang dinyatakan di atas, menggabungkan Apache Cassandra dan Apache Ignite memang melibatkan kos. Anda secara semula jadi mengalami prestasi - dan kos dan penyelenggaraan - mempunyai dua rangkaian (seperti yang anda lakukan dengan penambahan penyelesaian lain). Terdapat kos perkakasan untuk pelayan komoditi baru dan RAM yang mencukupi, dan mungkin kos langganan untuk versi Apache Ignite kelas perusahaan dan yang disokong. Selanjutnya, melaksanakan dan memelihara Ignite mungkin memerlukan beberapa organisasi untuk mendapatkan kepakaran tambahan. Akibatnya, analisis kos / faedah dijamin untuk memastikan bahawa keuntungan strategik bagi setiap kes penggunaan baru, bersama dengan peningkatan prestasi, melebihi biaya.

Dalam membuat penentuan ini, pertimbangan berikut adalah penting. Pertama, tidak seperti penyelesaian pengkomputeran dalam memori generasi sebelumnya, yang memerlukan penyatuan bersama pelbagai produk, Apache Ignite adalah penyelesaian bersepadu dan mudah digunakan sepenuhnya. Mengintegrasikan Ignite dengan Apache Cassandra biasanya merupakan proses yang sangat mudah. Nyalakan slaid antara Cassandra dan aplikasi, seperti Apache Kafka atau pelanggan lain, yang mengakses data. Ignite termasuk penyambung Cassandra yang sudah siap, yang memudahkan prosesnya. Aplikasi kemudian membaca dan menulis dari Ignite dan bukannya Cassandra, jadi aplikasi ini selalu mengakses data dari memori dan bukannya dari cakera. Ignite mengendalikan pembacaan dan penulisan secara automatik dari dan ke Cassandra.

Kedua, sementara masih banyak yang menganggap pengkomputeran dalam memori mahal, kos RAM telah menurun sekitar 30 peratus setiap tahun sejak tahun 1960-an. Walaupun RAM masih paun untuk pound lebih mahal daripada SSD, keuntungan prestasi menggunakan terabyte RAM dalam kelompok pengkomputeran dalam memori, terutama untuk aplikasi kritikal misi besar-besaran, dapat menjadikan pengkomputeran dalam memori paling efektif dari segi kos pendekatan.

Akhirnya, Apache Ignite adalah pertaruhan selamat dengan pangkalan data yang matang. Ia berawal dari proyek swasta pada tahun 2007, disumbangkan ke Apache Software Foundation pada tahun 2014, dan lulus ke proyek tingkat tinggi sekitar setahun kemudian — projek Apache terpantas kedua yang lulus setelah Apache Spark.

Apache Cassandra adalah penyelesaian yang kukuh dan terbukti yang dapat menjadi elemen penting dalam banyak strategi data. Dengan Apache Ignite, data Cassandra dapat dibuat lebih berguna. Platform pengkomputeran dalam memori Apache Ignite adalah penyelesaian yang berpatutan dan berkesan untuk menjadikan data Cassandra tersedia untuk kes penggunaan OLTP dan OLAP baru sambil memenuhi tuntutan prestasi ekstrem aplikasi skala web hari ini . Penyelesaian gabungan mengekalkan ketersediaan tinggi dan skalabiliti mendatar Cassandra, sambil menambahkan kemampuan pertanyaan yang sesuai dengan ANSI SQL-99, skalabiliti menegak, konsistensi yang lebih kuat dengan jaminan transaksi ACID, dan banyak lagi - semuanya sambil memberikan prestasi yang 1,000x lebih pantas daripada berasaskan cakera pendekatan.

Forum Teknologi Baru menyediakan tempat untuk meneroka dan membincangkan teknologi perusahaan yang baru muncul dalam kedalaman dan luas yang belum pernah terjadi sebelumnya. Pemilihannya bersifat subjektif, berdasarkan pilihan teknologi yang kami percayai penting dan menarik minat pembaca. tidak menerima jaminan pemasaran untuk penerbitan dan berhak untuk mengedit semua kandungan yang disumbangkan. Hantarkan semua pertanyaan ke [email protected]