Mengapa saya menggunakan ElasticSearch jika saya sudah menggunakan basis data grafik?

15

Saya tidak menemukan penjelasan mendalam di web tentang perbandingan antara ElasticSearch dan basis data grafik.

Keduanya dioptimalkan untuk melintasi data.
ElasticSearch tampaknya dioptimalkan untuk analitik.
Namun Neo4j juga didasarkan pada Lucene untuk mengelola indeks dan beberapa fitur teks lengkap.

Mengapa saya menggunakan ElasticSearch jika saya sudah menggunakan basis data grafik?

Dalam kasus saya, saya menggunakan Neo4j untuk membangun jejaring sosial.
Apa manfaat nyata yang bisa diberikan ElasticSearch?

PEMBARUAN ----------

Saya baru saja menemukan paragraf ini:

Ada banyak sekali kasus di mana elasticsearch berguna. Beberapa kasus menggunakan panggilan lebih jelas daripada yang lain. Di bawah ini adalah beberapa tugas yang sangat cocok untuk penelitian elastics.

  • Mencari sejumlah besar deskripsi produk untuk kecocokan terbaik untuk frasa tertentu (katakanlah "pisau koki") dan mengembalikan hasil terbaik
  • Diberikan contoh sebelumnya, memecah berbagai departemen di mana "pisau koki" muncul (lihat Bagian selanjutnya dalam buku ini)
  • Mencari teks untuk kata-kata yang terdengar seperti "musim"
  • Mengisi otomatis kotak pencarian berdasarkan kata-kata yang diketik sebagian berdasarkan pencarian yang dikeluarkan sebelumnya saat menghitung kesalahan ejaan
  • Menyimpan sejumlah besar data semi-terstruktur (JSON) dalam mode terdistribusi, dengan tingkat redundansi tertentu di seluruh sekelompok mesin

Perlu dicatat, bahwa walaupun elasticsearch hebat dalam memecahkan masalah yang disebutkan di atas, itu bukan pilihan terbaik bagi orang lain. Ini sangat buruk dalam memecahkan masalah yang dioptimalkan database relasional. Masalah seperti yang tercantum di bawah ini.

  • Menghitung berapa banyak item yang tersisa dalam inventaris
  • Mencari tahu jumlah semua item baris pada semua faktur yang dikirim pada bulan tertentu
  • Menjalankan dua operasi secara transaksi dengan dukungan rollback
  • Membuat catatan yang dijamin unik di beberapa istilah yang diberikan, misalnya nomor telepon dan ekstensi
  • Elasticsearch umumnya hebat dalam memberikan perkiraan jawaban dari data, seperti menilai hasil berdasarkan kualitas. Sementara elasticsearch dapat melakukan pencocokan yang tepat dan perhitungan statistik, tugas utama pencariannya adalah tugas yang secara inheren merupakan perkiraan.
  • Menemukan jawaban perkiraan adalah properti yang memisahkan elasticsearch dari database yang lebih tradisional. Yang sedang berkata, database relasional tradisional unggul pada presisi dan integritas data, yang elasticsearch dan Lucene memiliki beberapa ketentuan.

Dapatkah saya menyatakan bahwa jika saya tidak memerlukan jawaban perkiraan, maka ElasticSearch tidak akan berguna dibandingkan dengan basis data grafik yang sudah digunakan?

Mik378
sumber

Jawaban:

17

Saya ragu untuk memanggil ElasticSearch sebagai basis data. Ini bukan pengganti untuk basis data, tetapi merupakan tambahan yang bagus untuk menambah fungsionalitas, khususnya pencarian teks tingkat lanjut, di samping basis data yang ada.

Saya melihat di mana Anda bisa membuat mereka bingung. Mereka benar-benar dapat memenuhi kebutuhan yang sama, tetapi tidak selalu. ElasticSearch tidak persis seperti apa, pencarian . Database grafik tidak menentukan hubungan atau indeks, di mana seperti yang dilakukan ElasticSearch. Jadi pada dasarnya mereka bekerja sangat berbeda. ElasticSearch menganalisis dokumen dengan, misalnya, penganalisis bahasa Inggris. Apa yang dilakukan ini akan mengambil kata-kata dan menganalisis variasi yang berbeda dari kata itu atau bahkan sinonim. Sebagai contoh, digakan dianalisa sebagai dig,digs,dug,digging,digger .... Saat Anda menjalankan kueri di elasticsearch, kueri Anda juga dapat dianalisis, lalu kata-kata itu akan ditanyakan dan dapat dinilai berdasarkan relevansinya.

ElasticSearch adalah alat yang hebat, karena sangat fleksibel. Anda dapat menemukan berbagai konten relatif, atau Anda dapat menemukan jarum di tumpukan jerami, dan itu relatif mudah.

Database Grafik juga memiliki kelebihan. Menemukan relevansi / hubungan antara hal-hal seperti tag hash misalnya, atau hal-hal dengan banyak hubungan yang bisa berubah. Mereka adalah teknologi yang hebat dan menarik, namun saya harus mengatakan bahwa itu tidak sekuat ElasticSearch. Sebagian besar karena ElasticSearch diarahkan untuk hal semacam ini, dan itu menangani analisis untuk Anda sehingga Anda dapat melakukan pencarian teks lengkap. Namun jika Anda ingin menggunakan sistem lebih seperti pencarian twitter yang didasarkan pada penandaan / kata kunci yang telah ditentukan, maka Anda akan lebih baik menggunakan Graph Database yang sudah Anda gunakan.

Pertanyaannya adalah seberapa kuat Anda ingin pencarian Anda? Jika Anda memiliki kebutuhan untuk melakukan pencarian yang sangat baik (teks lengkap) saya akan menggunakan elasticsearch. Kalau tidak, Anda selalu dapat menerapkan pencarian relatif mudah pada basis data grafik. Setelah pencarian diterapkan, bukan tidak mungkin untuk bermigrasi ke elasticsearch jika nanti Anda membutuhkan mesin pencarian yang lebih kuat, cukup implementasikan pencarian Anda dengan mempertimbangkan hal itu.

tsturzl
sumber
3

Kedua basis data ini memiliki kebutuhan khusus untuk menyelesaikan masalah khusus pada tingkat persyaratan aplikasi tertentu. Meskipun kami belum menggunakan Graph Database. Tapi kami menggunakan elasticsearch dengan MySQL di salah satu proyek kami dari 5 tahun terakhir. Proyek itu memiliki data besar untuk dicari melalui dokumen 6m dan memiliki hubungan besar antara entitas tersebut (dokumen hubungan 10m).

Use Case: Seperti mencari melalui hotel yang telah disukai oleh teman saya dan mengurutkan semua hotel dengan jumlah suka yang mereka miliki. Dan jika Anda melihatnya dengan cermat. kasus ini melibatkan 2 hubungan (Teman, Suka). Jadi saya perlu mencari melalui hubungan Suka kapal antara Hotel dan Teman Saya dan kemudian hotel harus diurutkan berdasarkan jumlah suka yang mereka miliki. Jadi untuk pencarian seperti itu, grafik basis data bagus.

Elasticsearch melakukan pekerjaan yang baik untuk pencarian tes penuh dalam dokumen tetapi ketika datang untuk mencari melalui hubungan seperti di atas itu tidak baik. Buat daftar dokumen (entitas) yang merupakan penggemar saya dan urutkan berdasarkan jumlah penggemar mereka. Tapi ini satu tingkat dalam dan ketika harus mencari lebih dalam. Elasticsearch tidak cukup baik.

Jadi pahami persyaratan aplikasi Anda dan kemudian pergi ke database. Anda mungkin harus memiliki keduanya.

Terry
sumber