Tefrika dizi vs MySQL veritabanı JSON veri depolama avantajları ve dezavantajları nelerdir?
Seçim sizin.
Yorumlar belirtmek gibi, JSON bir serialize dizide daha az yer kaplıyor. Ben de JSON veya Dizgeleştirme hızlı olup olmadığını kontrol, ve şaşırtıcı, daha hızlı json encode serialize için daha. Bu olsa json decode daha nesneleştirmek hızlıdır.
Bu ben test etmek için kullanılan script:
<?php
function runTime(){
$mtime = microtime();
$mtime = explode(' ', $mtime);
$mtime = $mtime[1] + $mtime[0];
return $mtime;
}
?>
<pre>
<?php
$start = runTime();
$ser;
for($i=0; $i<1000; $i++){
$a = array(a => 1, x => 10);
$ser = serialize($a);
}
$total = runTime() - $start;
echo "Serializing 1000 times took \t$total seconds";
?>
<?php
$start = runTime();
$json;
for($i=0; $i<1000; $i++){
$a = array(a => 1, x => 10);
$json = json_encode($a);
}
$total = runTime() - $start;
echo "JSON encoding 1000 times took \t$total seconds";
?>
<?php
$start = runTime();
$ser;
for($i=0; $i<1000; $i++){
$a = unserialize($ser);
}
$total = runTime() - $start;
echo "Unserializing 1000 times took \t$total seconds";
?>
<?php
$start = runTime();
$json;
for($i=0; $i<1000; $i++){
$a = json_decode($json);
}
$total = runTime() - $start;
echo "JSON decoding 1000 times took \t$total seconds";
?>
</pre>
Taşınabilirlik: Kazanan JSON. PHP de-serileştirme sadece PHP ile (bildiğim kadarıyla) desteklenir ise JSON platformlarda daha çeşitli desteklenir. Herhangi bir dilde biçimini ayrıştırmak mümkün olsa da, JSON daha önceden oluşturulmuş kütüphaneler vardır.
Gelecek Proof: Kazanan JSON. JSON Javascript bir standart ve gelecekte her zaman değiştirmek olası değildir anlamda, bir "standart" olduğunu. PHP grup hale getirme biçimi geleceği hakkında herhangi bir söz vardır, ve gelecekte değiştirmek mümkün iken, bir tek grup biçimini kontrol ettiği gerçeği okunmaz ileride veri ile sona anlamına gelir.
Fidelity: Kazanan PHP. PHP serileştirme özel sınıflar tarafından tanımlanan nesneler dahil olmak üzere, yerli PHP veri türleri ile veri depolamak için izin verir. JSON sadece, ilkel türleri ("diziler") ve anahtar / değer çifti Nesneler listelerini genel ilkel türlerini saklamak için izin verir. Eğer bir PHP uygulaması geliştirirken eğer PHP Diziselleştirme burada bazı avantajlar sağlayabilir.
Dosya Boyutu: PHP'nin mevcut seri hale getirme biçimi daha ayrıntılı olarak JSON (daha fazla bilgi depoladığını gibi), burada hafif bir kazanca sahip.
Performansı: bilir, bu profili bağlıdır.
Sonuç: Eğer PHP Serile kullanmak için zorlayıcı bir neden olmadıkça JSON ile gidin.
Eğer sadece PHP ile verileri kullanıyor musunuz? JSON: diziler, yok eğer: evet eğer.
Pro Dizi
Pro JSON
youre JSON.stringify (obj) olarak tırnak ve özel karakterler etrafında almaya çalışırken eğer, bunu veritabanına özgü yöntemleri kaçan bulunuyor PHP kullanarak bunu yapabilirsiniz.
<?php
mysql_real_escape_string(htmlspecialchars($value))
?>
artık güvenle saklamak ve bu akşam geri okuduğunuzda bunu deşifre edebilir
Ben sadece php serialize ile bu büyük bir sorun vardı. I i unserialize okumak için kullanılan hangi tek bir alanda çok veri saklanır.
Ne oldu ben bu alanda bazı bozuk verileri var olmasıdır. 'A' gibi kodlar, 's' ve 'N' ile harita verilerini seri hale getirmek. Bozuk veri varsa, harita başarısız oldu. Bu unserialize fonksiyon çünkü bayt kod hatası çalışamayacak durumda olduğunu bir php hata gösterecektir.
Yani benim açımdan önlemek için serialize. JSON, yol daha güvenli ile gidin ve size gelecek binbaşı sorunlarına başını patlama olmaz.
Benim için, artık serialize.
En cevapları zaten işaret olarak JSON serileştirme yener. Ben büyük avantajı platform bağımsız olduğunu düşünüyorum. Sen diğer uygulamaları veritabanı ile iletişim olabilir ve onlar php ile ilgisi olmayabilir.
Ancak, both çözeltiler violate database normalization. Sen veritabanı bile first normal form olmayacak yüzden arama, diyelim ki, gibi herhangi bir veritabanı özelliği yararlanmak olamaz. Daha iyi bir yaklaşım kullanmak için object relational mapping. Iyi kütüphaneler orada vardır - örneğin düşünün doctrine ORM.