TXT dosya veya veritabanı?

11 Cevap php

Ben bu durumda ne kullanmalıyım (Apache + PHP)? Database ya da sadece bir TXT file? Benim öncelik # 1 speed.

Operations

  • Yeni ürün ekleme
  • Öğeleri Okuma
  • Max. 1 000 kayıtlar

Teşekkür ederim.

Database (MySQL)

+----------+-----+
| Name     | Age |
+----------+-----+
| Joshua   | 32  |
| Thomas   | 21  |
| James    | 34  |
| Daniel   | 12  |
+----------+-----+

TXT file

Joshua 32
Thomas 21
James 34
Daniel 12

11 Cevap

Diğer DHTs araştırdı mı?

Project Voldemort

Memcached + MySQL

Update 1

Eğer sunucularında memcached ve Voldemort var yoksa, o zaman sizin gibi gömülü anahtar-değer veritabanları için gidebilirsiniz BDB

Hızı ve optimize edilmiş bellek kullanımı için, ben aşağı bir veritabanı eller ile gitmek söyleyebilirim. Yalnız isim sütun üzerinde bir dizin koyarak büyük olasılıkla bir metin dosyası ile ulaşılabilir hiç bir şekilde performansını arttıracak.

Bir veritabanı da bazı sanitasyon (sınırlayıcı hiçbir kırılma, satır atlama vb) ve birden çok örneği tablodan okumaya çalıştığınızda erişim çatışmaların daha az tehlike gibi diğer avantajları vardır - ve bir dosya tabanlı yaklaşımından farklı, çatışmaları yazma için kısıtlı sadece söz rekor.

Önerilen metin dosyası özünde bir veritabanı. Kendiniz işlemek için yazma işlemleri sadece bu yüzden sadece zaten var bir şey kullanmak, tekerleği yeniden icat edilir. 1.000 kayıtları yüzden SQLite gibi basit bir şey kullanarak iyi olurdu oldukça küçük ölçekli olduğunu.

Bir veritabanını kullanarak daha verimli olacaktır. Sen çok daha kolay bir metin dosyasında ise daha verileri seçmek işlemleri sorgulamak ve yapmak mümkün olacak. Metin dosyası sürekli açılacak olurdu, kapalı ve içeriği verileri yineleme veya satırları bulmak için elde patladı - bu kod için bir ağrı yavaş olacak ve.

Metin dosyaları gibi veri depolamak için ama günün sonunda bu yüzden kullanmak istiyorum için veritabanları tasarlanmış ne izin verecek orada sınıflar ve hazır komut vardır.

Sadece isim ve yaş sütunları ihtiva eden 1000 kayıtların maksimum, ben seçenekler arasında hız herhangi anlamlı bir fark olduğunu sanmıyorum; sunucu yükü gibi muhtemel diğer faktörler hız hakim olacak.

Kolay, güvenilir bir erişim için, MySQL biraz daha basit olabilir, ancak bir metin dosyası ile bir MySQL sunucusu kurmak zorunda değilsiniz.

Ben size eğitimli bir cevap vermek için yeterli bilgi yok duygu olsun.

Bazı Yukarıda söylediğimiz gibi, bu sorun için alternatifler vardır. Veritabanının gücü yararlı olabilir (tüm sonra, size başka bir şey yapıyor olabilir zaman bu özellikleri kendiniz kod istemiyorum) ama overkill gitmek istemiyorum.

SQLite bir dosyanın (endişelenecek hiçbir sunucu) olarak tedavi edilebilir ancak size SQL sorgulama gücü verir edilebilir gibi bakarak değer olabilir.

Ayrıca seçim ne olursa olsun veri depolama katmanı üstüne bir önbellek olarak Memcached gibi bir şey deneyebilirsiniz.

Hız gerçekten önemli olan tek şey ise, ben PHP ile yüklü olabilir. Php dosyası yapmak için var_export kullanarak önerebiliriz. Sürece sayısı okur-to-yazar olarak yeterince yüksek olduğunu ve APC yüklüyse, PHP dosyası APC opcode önbellek yararlanmak mümkün olacak. Veri yerine bir ara tabaka (memcache, mysql, vb) üzerinden gitmek zorunda PHP gibi özgün olarak yüklenmiş olacak, çünkü bu her şeyden daha hızlı şekilde olacaktır.

SQLite. Küçük, hızlı veritabanı. http://www.sqlite.org/

Bu gün PHP ile yükler entegre. http://php.net/manual/en/book.sqlite.php

Size farklı seçenekler sunar:

Ve gerçekten hız hızlı-cgi php ile nginx düşünün isterseniz.

Ben kesinlikle düz metin üzerinde bir veritabanı her gün dosyaları öneriyoruz. Biri için, veritabanları verilere erişiminizi optimizasyon bir sürü yapmak, böylece performansı kadar endişelenmenize gerek olmayacaktır. İkincisi, çok daha fazla yetenekleri var. Sen gibi şeyler yapmak için SQL dili kullanabilirsiniz:

  • Yaşları daha büyük ya da 18'e eşit olduğu tüm müşterileri seçiniz
  • Eğer sattım ürünlerin sayısını al
  • Sizin ürünler toplam gelir satılmakta
  • Tüm ürünlerin ortalama fiyat alın
  • Belli bir alanda yaşayan müşterilerin bir listesini alın

... Ve çok, çok daha basit bir SQL ifadeleri ile. Bir metin dosyası için tüm bu kod çalışırken karşı-üretken ve çok daha az esnek olacaktır. Bir veritabanı ile ücretsiz tüm bu olsun.

Bu çok riskli ama dinamik bir PHP dosyası oluşturabilir. Eğer çoğunlukla bu dosyadan okuma olacak o zaman 1000 sınırı ile küçük kayıtlar için hızlı bir yöntem olacaktır.

Sadece 1000 kayıt varsa sadece belleğinde tutmak.