2017-03-25 1 views
0

Symfony 3.2:Lequel est le plus rapide pour sauvegarder des données "STATIQUES"? Tableaux ou tables db mises en cache?

J'ai quelques données comme celui-ci (comme tableau):

$list1 = [ 
    'field-1' => ['id' => 1, 'group' => 'words', 'title' => 'Field 1'], 
    'field-2' => ['id' => 2, 'group' => 'words', 'title' => 'Field 2'], 
    ... 
    ... 
    ... 
    'field-400' => ['id' => 400, 'group' => 'words', 'title' => 'Field 400'], 
]; 

$list2 = [...]; 
... 
$list30 = [...]; 

comme vous le voyez est environ 30 tableaux de 300-400 lignes; mais ils sont Statique tableau (ils ne changeront pas plus tard)

lequel de ces façons sont mieux?

1- 10 et un service Instruire obtenir chaque ligne par une méthode comme ceci:

public function getSome($col) { 
    return $this->list1[$col]; 
} 

2- ou insérer 10 Table (entité) et le thème du cache (en raison de la vitesse élevée)?

Thanx%

Répondre

1

Il n'y a pas de réponse définitive à cette question. Cela dépend de l'ensemble de données exact, des modèles d'accès (combien de fois interrogez-vous la même valeur), du type de cache (fichier ou mémoire), peut-être même des ressources matérielles.

Ce que je peux suggérer, de l'expérience et le bon sens est:

  • en utilisant ORM est généralement plus lent, même si mises en cache
  • en utilisant un service de mémoire cache externe (par exemple memcached) est généralement plus lent que d'avoir la valeur dans une mémoire PHP (par exemple des tableaux)
  • une optimisation plus intéressante pourrait être de re-mapper votre structure afin que vous ayez un tableau plat où chaque clé contient le chemin entier (par exemple $ value ["list1-field-1-id" ])
1

Créez un semoir et stockez ces données dans la base de données. Plus tard, récupérez ces données en tant qu'objet et utilisez selon vos besoins. Oui, vous pouvez stocker dans le cache pour accélérer.

+0

en fait il n'y a pas de semeur dans symfony. mais ce n'est pas mon problème. Ma question concerne la vitesse. données dans le tableau Vs récupérer à partir de DB + cache? –