Saya mempelajari NoSQL dan melihat berbagai opsi untuk salah satu persyaratan klien saya. Saya telah mempelajari berbagai sumber sebelum mengajukan pertanyaan ini (seseorang dengan sedikit pengetahuan tentang NoSQL)
- Saya perlu menyimpan data dengan kecepatan lebih cepat dan membaca data.
- Sepenuhnya aman dari kegagalan dan mudah diskalakan.
- Mampu mencari melalui data untuk Analytics.
Saya berakhir dengan daftar singkat: Cassandra and Elasticsearch
Yang saya mengerti adalah Cassandra adalah solusi penyimpanan NoSQL yang sempurna untuk saya, karena saya dapat menulis data dan membaca data menggunakan indeks. Di mana gagal atau bisa gagal ada di Analytics. Di masa mendatang, jika saya ingin mendapatkan data dari from_date to to_date
, atau lebih banyak cara untuk mendapatkan data untuk analitik, jika saya tidak mendesain model Data dengan benar atau mempertahankan pandangan jangka panjang, yang mungkin cukup sulit di dunia yang terus berubah.
Sementara Elastic Search
yang terbaik dalam pengindeksan (didukung oleh Lucene), dan dapat mencari data secara acak dengan melemparkan beberapa teks acak. Tetapi apakah itu berfungsi sama bahkan jika saya ingin mengambil data from_date to to_date
(saya harapkan mungkin). Tetapi pertanyaan sebenarnya adalah, apakah ini Mesin Pencari, atau penyimpanan data NoSQL yang sempurna seperti Cassandra? Jika ya, mengapa kita masih membutuhkan Cassandra?
Jika keduanya berada di dunia yang berbeda, jelaskan itu! Bagaimana kita menggabungkannya untuk mendapatkan solusi yang lebih efektif?
sumber
Jawaban:
Salah satu aplikasi kami menggunakan data yang disimpan ke dalam Cassandra dan ElasticSearch. Kami menggunakan Cassandra untuk mengakses rekaman tersebut kapan pun kami bisa, dan menduplikasi data ke dalam tabel kueri yang dirancang untuk mematuhi permintaan sisi aplikasi tertentu. Untuk pencarian yang lebih liberal daripada yang bisa dimungkinkan oleh tabel kueri kami, ElasticSearch melakukan fungsi itu dengan baik.
Kami telah menanyakan pertanyaan yang sama (pada diri kami sendiri) ... "Mengapa kita tidak mendapatkan semuanya dari ElastsicSearch?"
Jawabannya adalah ElasticSearch dirancang untuk menjadi mesin pencari, dan bukan penyimpanan data yang persisten. Terkadang ElasticSearch kehilangan penulisan. Perubahan skema sulit dilakukan di ElasticSearch tanpa menghapus semuanya dan memuat ulang. Untuk tujuan itu, saya telah menulis pekerjaan yang dirancang untuk menjaga ElasticSearch tetap sinkron dengan klaster Cassandra kami. Ada juga diskusi yang cukup baru di Quora tentang topik ini , yang menghasilkan poin serupa.
Karena itu, ElasticSearch berfungsi dengan baik sebagai mesin pencari. Dan Cassandra berfungsi dengan baik sebagai penyimpanan data yang dapat diskalakan dan berkinerja tinggi. Tetapi menanyakan data berbeda dengan pencarian data. Ada kalanya kita membutuhkan satu atau yang lain, dan kombinasi keduanya bekerja dengan baik untuk aplikasi kita. Ini mungkin (atau mungkin tidak) bekerja dengan baik untuk Anda.
Mengenai analitik, saya telah berhasil menggunakan konektor Cassandra Spark, untuk melayani kueri OLAP yang lebih kompleks. Semoga membantu.
Edit 20200421
Saya telah menulis jawaban baru untuk pertanyaan serupa:
ElasticSearch vs. ElasticSearch + Cassandra
sumber
Cassandra + Lucene adalah pilihan yang bagus. Ada berbagai inisiatif untuk masalah ini, misalnya:
sumber
Setelah mengerjakan masalah ini sendiri, saya telah menyadari bahwa database NoSQL seperti casandra bagus ketika Anda ingin memastikan Anda mempertahankan skema data Anda dengan operasi penulisan yang andal, dan tidak ingin memanfaatkan operasi pengindeksan yang ditawarkan elasticsearch. Jika Anda ingin mempertahankan beberapa data indeks maka elasticsearch bagus jika Anda mempercayai skema Anda dan hanya akan melakukan lebih banyak pembacaan daripada menulis.
Kasus saya adalah analitik data. Jadi saya mempertahankan banyak Latices saya dalam pencarian elastis karena nanti saya ingin menjelajahi banyak data untuk melihat apa yang seharusnya menjadi langkah saya selanjutnya. Saya akan menggunakan casandra jika saya ingin memiliki banyak perubahan dalam skema data di pileline analitik saya.
Juga ada banyak alat bantu bagus seperti kibana yang dapat Anda gunakan untuk menyajikan data Anda dengan beberapa grafik yang bagus. Mungkin saya malas tapi mereka sangat tampan dan mereka membantu saya.
sumber
Menyimpan data dalam kombinasi Cassandra dan ElasticSearch memberi Anda sebagian besar fungsionalitas. Ini memungkinkan Anda untuk mencari tabel nilai kunci, dan juga memungkinkan Anda untuk mencari data dalam indeks.
Kombinasi tersebut memberi Anda banyak fleksibilitas, ideal untuk aplikasi Anda.
sumber
Elassandra adalah solusi gabungan dari pencarian Cassandra + Elastis, Ini menggunakan pencarian Elastis untuk mengindeks data dan Cassandra sebagai penyimpanan data, saya tidak yakin tentang kinerjanya tetapi menurut artikel ini , kinerjanya bagus.
Jika aplikasi Anda membutuhkan fitur pencarian, Elassandra adalah opsi open source terbaik. Pencarian DSE tersedia tetapi harganya mahal.
sumber
Kami telah mengembangkan aplikasi di mana kami menggunakan Elasticsearch dan Cassandra. Data serupa disimpan ke Cassandra dan diindeks ke Elasticsearch.
UI aplikasi kami memiliki fitur-fitur seperti pencarian, agregasi, ekspor data, dll. Layanan mikro back-end terus-menerus mendapatkan data besar (tentang topik Kafka) dan menyimpannya ke Cassandra. Setelah data disimpan ke Cassandra, layanan akan memastikan data diindeks ke Elasticsearch.
Cassandra bertindak sebagai "Sumber kebenaran" untuk Elasticsearch. Dalam kasus, di mana pengindeksan ulang indeks ES diperlukan, kami menanyakan Cassandra dan mengindeks ulang data ke dalam ES.
Solusi ini membantu kami, karena sangat mudah untuk diskalakan dan penelusuran serta agregasi jauh lebih cepat.
sumber
sumber
Cassandra pandai mengambil data dengan ID . Saya tidak tahu banyak tentang kinerja indeks sekunder, tapi saya ragu itu secepat Elasticsearch. Tentu Elasticsearch menang dalam hal fungsionalitas pencarian teks lengkap ( analisis teks , penilaian relevansi , dll).
Cassandra juga menang dalam performa pembaruan . Elasticsearch mendukung pembaruan, tetapi pembaruan benar-benar merupakan indeks ulang + hapus lunak dalam operasi atom.
Cassandra memiliki model replikasi yang sangat bagus (jika Anda perlu ekstra-fail-safe). Elasticsearch juga baik-baik saja, saya tidak berada di kamp yang mengatakan ES sangat tidak dapat diandalkan (terkadang ada masalah, seperti semua perangkat lunak).
Elasticsearch juga memiliki agregasi untuk analitik waktu nyata. Dan karena penelusuran sangat cepat, analitik pada subkumpulan data juga akan cepat .
Jika persyaratan Anda dipenuhi dengan cukup baik oleh salah satunya (seperti di sini sepertinya ES akan bekerja dengan baik), saya hanya akan menggunakan satu. Jika Anda memiliki persyaratan dari kedua dunia, Anda dapat:
sumber