Zaten bir grafik veritabanı kullanıyorsam neden Elastik Arama'yı kullanayım?


15

Esnek arama ve grafik veritabanları arasında bir karşılaştırma hakkında web üzerinde derin bir açıklama bulamıyorum .

Her ikisi de veri geçişi için optimize edilmiştir.
Elastik Arama analitik için optimize edilmiş görünüyor.
Bununla birlikte Neo4j, dizinleri ve bazı tam metin özelliklerini yönetmek için Lucene'e dayanmaktadır.

Zaten bir grafik veritabanı kullanıyorsam neden Elastik Arama'yı kullanayım?

Benim durumumda, bir sosyal ağ oluşturmak için Neo4j kullanıyorum .
Elastik Arama hangi gerçek yararı sağlayabilir?

GÜNCELLEME ----------

Bu paragrafı yeni buldum:

Elastik araştırmanın faydalı olduğu sayısız vaka vardır. Bazı kullanım durumları, diğerlerinden daha açık bir şekilde gerektirir. Aşağıda, elastics aramasının özellikle uygun olduğu bazı görevler listelenmiştir.

  • Belirli bir kelime öbeği için en iyi eşleşme için çok sayıda ürün tanımında arama yapma (“şefin bıçağı” deyin) ve en iyi sonuçları döndürme
  • Önceki örnek göz önüne alındığında, “şefin bıçağı” nın göründüğü çeşitli bölümleri yıkmak (bu kitapta daha sonra Faceting'e bakın)
  • "Sezon" gibi görünen kelimeleri aramak
  • Yanlış yazımları hesaba katarken daha önce yapılan aramalara dayalı olarak kısmen yazılmış sözcüklere dayalı bir arama kutusunu otomatik olarak tamamlama
  • Çok sayıda yarı yapılandırılmış (JSON) verinin dağıtılmış bir şekilde, bir makine kümesinde belirtilen düzeyde yedekleme ile depolanması

Bununla birlikte, elasticsearch, yukarıda belirtilen sorunları çözmede harika olsa da, diğerleri için en iyi seçim olmadığına dikkat edilmelidir. İlişkisel veritabanlarının optimize edildiği sorunları çözmede özellikle kötüdür. Aşağıda listelenenler gibi sorunlar.

  • Envanterde kaç öğe kaldığını hesaplama
  • Belirli bir ayda gönderilen tüm faturalardaki tüm satır öğelerinin toplamını bulma
  • Geri alma desteği ile iki işlemi işlemsel olarak gerçekleştirme
  • Bir telefon numarası ve dahili numara gibi birden fazla terime göre benzersiz olduğu garanti edilen kayıtlar oluşturma
  • Elasticsearch, sonuçların kaliteye göre puanlanması gibi verilerden yaklaşık cevaplar sağlama konusunda genellikle harikadır. Elasticsearch tam eşleme ve istatistiksel hesaplamalar yapabilmekle birlikte, temel arama görevi doğal olarak yaklaşık bir görevdir.
  • Yaklaşık cevapları bulmak, elasticsearch'ü daha geleneksel veritabanlarından ayıran bir özelliktir. Bununla birlikte, geleneksel ilişkisel veritabanları, elasticsearch ve Lucene'nin çok az hükümleri olan hassasiyet ve veri bütünlüğünde mükemmeldir.

Yaklaşık cevaplara ihtiyacım yoksa, Elastik Arama'nın zaten kullanılmış bir grafik veritabanına kıyasla işe yaramayacağını söyleyebilir miyim?


Yanıtlar:


17

Elastik Arama'yı veritabanı olarak adlandırmaktan çekinmeyin. Bir veritabanının yerine geçmez, ancak mevcut veritabanınızın yanı sıra işlevsellik, özellikle gelişmiş metin araması eklemek için iyi bir ek yapar.

Onları nereye karıştıracağınızı görüyorum. Aslında aynı ihtiyaca uyabilirler, ama her zaman değil. Elastik Arama tam olarak kulağa ne yaparsa onu arar . Bir grafik veritabanı, Elastik Arama'nın yaptığı gibi ilişkileri veya dizinleri belirtmez. Yani temelde oldukça farklı çalışıyorlar. ElasticSearch analizleri örneğin, İngiliz analizörü ile belgeleri. Bunun yaptığı kelimeleri alır ve o kelimenin farklı varyasyonlarını ve hatta eşanlamlıları analiz eder. Örneğin, digolarak analiz edilir dig,digs,dug,digging,digger .... Elastik aramada bir sorgu çalıştırdığınızda, sorgularınız da analiz edilebilir, o zaman bu kelimeler sorgulanır ve alaka düzeyiyle puanlanabilir .

Elastik Arama harika bir araçtır, çünkü gerçekten esnektir. Geniş bir bağıl içerik yelpazesi bulabilirsiniz veya saman yığınında bir iğne bulabilirsiniz ve nispeten kolaydır.

Grafik Veritabanlarının da avantajları vardır. Örneğin, karma etiketleri gibi şeyler veya birçok değişebilir ilişkisi olan şeyler arasında alaka / ilişki bulma. Onlar harika ve ilginç teknoloji parçaları, ancak söylemeliyim ki bu Elastik Arama kadar güçlü değil. Çoğunlukla, Elastik Arama bu tür bir şeye yönelik olduğundan ve tam metin araması yapabilmeniz için sizin için analiz yapar. Ancak, önceden tanımlanmış etiketlemeye / anahtar kelimelere dayanan twitter araması gibi bir sistemi kullanmak istiyorsanız, zaten kullandığınız Grafik Veritabanını kullanmak daha iyi olur.

Soru, aramanızın ne kadar sağlam olmasını istiyorsunuz? Gerçekten ince taneli (tam metin) aramalar yapmaya ihtiyacınız varsa, elasticsearch kullanırdım. Aksi takdirde, grafik veritabanında her zaman nispeten kolay bir arama yapabilirsiniz. Arama uygulandıktan sonra, daha sonra daha sağlam bir arama motoruna ihtiyacınız olduğunu fark ederseniz, elasticsearch'e geçiş yapmak imkansız değildir, sadece bunu akılda tutarak aramanızı uygulayın.


3

Bu veritabanlarının her ikisi de, belirli bir uygulama gereksinimi düzeyinde belirli bir sorunu çözmek için özel gereksinimlere sahiptir. Grafik Veritabanını kullanmamamıza rağmen. Ancak son 5 yıldan beri projemizden birinde MySQL ile elasticsearch kullanıyoruz. Bu proje, 6m belgelerle aranacak çok büyük verilere ve bu varlıklar arasında büyük ilişkilere sahiptir (10m ilişki belgeleri).

Kullanım Örneği: Arkadaşlarım tarafından sevilen otelleri aramak ve tüm otelleri sahip oldukları beğeni sayısına göre sıralamak gibi. Ve eğer yakından görürsen. bu dava 2 ilişki içeriyor (Friend, Like). Bu yüzden Oteller ve Arkadaşlarım arasındaki Like ilişkisini aramaya ihtiyacım var ve daha sonra oteller sahip oldukları toplam beğeni sayısına göre sıralanmalıdır. Bu tür aramalar için grafik veritabanı iyidir.

Elasticsearch, belgelerde tam test araması için harika bir iş çıkarıyor, ancak yukarıdaki gibi ilişkiler arasında arama yapmak o kadar iyi değil. Hayranlarım olan belgeyi (varlıkları) listeleyin ve hayran sayısına göre sıralayın. Ama bunlar bir seviye derinlik ve daha derin araştırmalar söz konusu olduğunda. Elasticsearch yeterince iyi değil.

Bu yüzden uygulama gereksiniminizi anlayın ve ardından veritabanına gidin. Her ikisine de sahip olmanız gerekebilir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.