• 22-04-2014, 20:21:07
    #1
    İyi çalışmalar arkadaşlar. Önceden beri kullandığım etiket sistemini ve kullanmayı planladığım fakat performans durumu hakkında tecrübeye sahip olmadığım sistemi aşağıda ayrı ayrı belirteceğim. Sizce hangisi daha performanslıdır?

    1. Sistem (Kullanmakta olduÄŸum.) :
    1. Etiketlerin tutulduÄŸu "tags" tablosu var.
    2. İçeriklerin tutulduğu "articles" tablosu var.

    İçeriğin etiketleri "articles" tablosundaki ilgili içeriğin "tags" kolonunda "," (virgül)'lerle ayrılarak tutuluyor. Etiketler listelenirken "explode" fonksiyonu kullanılıyor.

    Herhangi bir etikete ait içerikleri listelemek için ise:
    SELECT * FROM articles WHERE MATCH(tags) AGAINST ('aranan_tag')
    gibi FULLTEXT SEARCH yapısını kullanıyorum.

    2. Sistem (Kullanmayı Planladığım) :
    1. Etiketlerin tutulduÄŸu "tags" tablosu olacak.
    2. İçeriklerin tutulduğu "articles" tablosu olacak.
    3. Etiketlenen içeriklerin tutulduğu "tagged" tablosu olacak. Tablo alanları yaklaşık aşağıdaki gibi olacak :
      • id
      • tag_id
      • article_id

    Bu sistemde içeriğe ait etiketleri listelemek için :
    SELECT * FROM tagged WHERE article_id=active_article_id
    gibi bir sorgu kullanılacak.

    Herhangi bir etikete ait içerikleri listelemek için ise :
    SELECT * FROM tagged WHERE tag_id=active_tag_id
    sorgusuyla önce o etiketle etiketlenmiş içeriklerin id'leri çekilecek, sonra ise :
    foreach($selected_articles as $value) {$article=SELECT * FROM articles WHERE article_id=$value}
    gibi bir döngüyle çekilen id'lere ait içerikler çekilecek.

    2. Yöntem daha düzenli görünüyor. Fakat hangisi daha performanslı olur?
  • 22-04-2014, 20:26:29
    #2
    Sunucu size aitse eğer, ElasticSearch yapısını araştırın derim..

    Muazzam ve Hızlı bir sonuç yapısı ile karşılaşırsınız.
  • 22-04-2014, 20:39:05
    #3
    Evet sunucu bana ait. ElasticSearch'i araştırıyorum. Anladığım kadarıyla ElasticSearch'i 1. sistemle birlikte FULLTEXT SEARCH yerine kullanacağım.

    Edit :
    Araştırmadan bir tahminde bulunmuştum fakat bu farklı bir sistemmiş. NoSQL'e benziyor. Neo4j'yi de andırıyor aslında ama sadece arama üstüne. İlgimi çekti. İncelemeye devam edeceğim. Teşekkür ederim.