Verimli değerlendirme sistemi

5 Cevap php

Ben kullanıcıların bir sürü var bu web sitesi için bir haber değerlendirmesi komut dosyası inşa ediyorum. Ben mümkün olduğunca bu web sitelerinin yanı verimli hale getirmek için çalışıyorum ve şimdi ben oyların takip etmek için en etkili yolu ne olacağını merak ediyorum. Tabii ki kullanıcılar birden fazla oy istemiyorum.

Benim ilk olsa benim MySQL veritabanında saklamak için, ama bu tablo oldukça büyük olsun istiyorum çünkü bu benim web hızını olumsuz bir etkisi olurdu endişeliyim.

Bir veritabanında depolamak hala en iyi çözüm olabilir ya da daha iyi çözümler vardır olurdu.

5 Cevap

Eğer memcached kullanamazsınız çünkü ben bu söyleyebilirim. İyi bir veritabanı sunucusu (iyi donanım + iyi db uygulaması) oldukça iyi bu idare edebilmek gerekir. P: makale-id ve oy birkaç googillion idare edecek temsil eden ikinci bir girişi üzerinde fiziksel bir indeksi ile tek bir tablo makaleleri kolayca (evet ben sözcüğü oluşur)

Rationale :

Veritabanı sunucuları korumak statistics - okuyun: kendi kendini ayarlama - ve sadece sıcak ürün (index + satır girişleri) bellek kalır.

Moral:

Yani, şirket facebook boyut ise ben merak ediyorum - bir sorun haline sürece böyle şeyleri dert etmeyin.

Eğer> 1,000,000 kayıtları sahip planlıyorsanız emin tablonun yapısı (örnek için zor olmamalı ki) verimli yapmak ve doğru indeks öyle de olmalıdır.

Memcached önbelleğe uygulamak için en basit yol olarak ve siteniz büyüdükçe ve daha sunucuları gerekli olmadığını ölçekli kolaydır olacaktır.

Düzgün endeksli oy tablo ile, (tabii ki, belli bir noktanın ötesinde, sizin tablo önbellek sığmayacak kadar büyük olacak olursa olsun tablo ne kadar büyük olduğundan makul bir performans tutabilir, ancak bu kullanıcıların çok sayıda sahip dahil ediyorum ve öğeleri).

(Memcached kullanarak $ _SESSION istemci üzerinde,) bazı kullanıcı başına önbelleğe alma ekleyin ve) oldukça hızlı bir "hayır" yanıtı zaman alabilirsiniz.

Memcached bunu yapmak için çok iyi bir yol olurdu. (Ben mysql sunucusu üzerinde cron komut dosyası kullanarak çekme modeli kullanarak bu yapardı) bir süre sonra memcached den senkronize etmek gerekir.