Bir veritabanında büyük bir dizi saklanması

7 Cevap php

Ben tamsayı değerleri ile güzergah öğelerin gerçekten uzun bir liste var. Ben elli gibi sütunlar ile bu öğelerin her biri ile bir veritabanı oluşturma hakkında düşünüyordum ama bu biraz uzun soluklu gibiydi, ve güzergah değişebilir. Bir veritabanında => değer çiftleri bu adını depolamak için daha iyi bir yolu var mı? Serileştirme Ben sadece isim, değer sütunlu bir itinerary_items db oluşturma ve orada verileri yapışmasını düşünüyordum, biraz ham görünüyor. En iyi çözüm nedir?

7 Cevap

Neden bir tablo gibi özellikleri gibi onları kurtaramaz. olmasıdır

| id| name       | value        |
+---+------------+--------------+
| 1 | array_key  | array_value  |
| 2 | array_key2 | array_value2 |

Bir dizinin birden çok örneğini istiyorsa, hep örneklerini izleyebilmek için ekstra bir anahtar ekleyebilirsiniz:

| id| name       | value        | instance_key |
+---+------------+--------------+--------------+
| 1 | array_key  | array_value  | 1            |
| 2 | array_key2 | array_value2 | 1            |
| 3 | array_key  | array_value  | 2            |
| 4 | array_key2 | array_value2 | 2            |

Çözümleri bu tür kullanarak yaklaşımı ile sorun veriler insan-okunabilir daha az olma eğilimindedir ve bir nesne üzerinde birçok özelliği varsa ekstra bir sürü katıldı edilecek olmasıdır.

Kaç kayıtları var? Yüzlerce? Binlerce mi?

Lütfen kayıt sayısı 500'ün altında ise o zaman hiç bir veritabanını almak gerektiğini düşünmüyorum. Bir XML dosyasında olduğunu saklamak olabilir. Bunlar NoSQL :) zamanlardır.

Ben hareketini destekleyen, ancak bir veritabanı ihtiyaçlarınız için overambition gibi görünüyor değil.

Bahsettiğiniz gibi oldukça fazla, değer için anahtar için bir sütun ve bir sütun var ve kayıtları eklemek istiyorum.

Depoladığınız verileri veritabanında arama için kullanılmaz, sadece uygulama kodu güncelleme ise, o zaman sadece bir damla olarak saklamak doğru eğilmek istiyorum. Bunun bölümlerini güncellemek ve anlamlı güncellemeler yapmak için verilerin tam set okumak gerekmez olasılığı varsa, o zaman id gibi sütunlar ile ayrı bir tablo, User_id, anahtar, değer gitmek için yol olacaktır.

Yazmak bir for döngüsü sonra sadece anahtar ve değer sütunları olan bir tabloya dizi kaydetmek için sorguyu yürütmek, deyimi INSERT oluşturmak için. Diziyi yeniden oluşturmak için, masaya çağırın ve bir diziye değerleri yeniden takın döngü için başka kullanın.

Ben kurulum bu tür görebilirsiniz tek sorun dizinin birden çok örneği var planlıyoruz, ve tüm bu örnekleri kaydedilmiş olması durumunda, veritabanı tablosu olarak sadece dizinin bir örneğini temsil edebilir olmasıdır.

Planlama birden çok örneği var, en iyi yolu, seri ve bir damla veya METİN sütunda saklamak olacaktır.

http://uk.php.net/json_encode: Ben PHP5 en json_encode() ve json_decode() fonksiyonları kullanarak geçmişte bu tür bir şey için JSON kullandım

Yapmanız gereken tüm veritabanındaki bir metin alanı var ve bunun içine json kodlanmış dizi takmaktır. Eğer gerektiği gibi kolayca ve hızlı bir PHP dizi ve çıkış geri JSON dizesi dönüştürebilir çünkü veri depolamak oldukça etkili bir yoldur saklıyorsanız verileri aramak için bir ihtiyaç yoksa.

 http://railsforphp.com/2008/01/08/php-meet-yaml/

En iyi ve en basit yolu, serialize kullanmaktır.