JeuWeb - Crée ton jeu par navigateur
Données sockées en base ou dans un fichier - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : Données sockées en base ou dans un fichier (/showthread.php?tid=5214)

Pages : 1 2


Données sockées en base ou dans un fichier - popayan - 02-02-2011

Bonjour,

Je me demandais d'un point de vue performance quelle était la meilleur façon de faire pour le stockage de beaucoup de données statiques?

Par exemple, imaginons un générateur aléatoire de prénom, il vaut mieux créer une table avec tous les prénoms ou stocker tout dans un tableau dans une classe?

sinon, un peu hors-sujet, pour ceux qui connaissent le ruby, y a-t-il une fonction toute faite qui permettrait de sortir une donnée aléatoire d'un tableau?

pour info ce que j'ai fait:

class Pname < ActiveRecord::Base

def self.random_name
names = ['Frédéric', 'Benoit', 'Thomas']
names.at(rand(names.count))
end
end



RE: Données sockées en base ou dans un fichier - Sephi-Chan - 02-02-2011

Tu peux stocker une telle liste dans un fichier en la serialisant en JSON ou YAML.

Et pour retourner un élément aléatoire d'un tableau, tu peux utiliser la méthode sample. Et sample(2) pour récupérer 2 éléments aléatoires.

Et ton nom de modèle me parait bancal. Pourquoi Pname ?


Sephi-Chan


RE: Données sockées en base ou dans un fichier - popayan - 02-02-2011

Faut pas regarder le nom... C'est juste un test, mon modèle s'appelle bien name :$


RE: Données sockées en base ou dans un fichier - Sephi-Chan - 02-02-2011

Un modèle qui s'appelle Name, ça me paraît fumeux. Je vois plus name comme un attribut de la classe Person ou Character.

Voilà ce que j'ai en tête :


class Player < ActiveRecord::Base

def self.random_name
names_as_yaml = File.read(Rails.root.join('config', 'character_names.yml'))
names = YAML.load(names_as_yaml)

names.sample
end

end


Sephi-Chan


RE: Données sockées en base ou dans un fichier - popayan - 02-02-2011

Oui pourquoi pas, j'avais envie "d'externaliser" les noms mais c'est clairement pas nécessaire en fait! Merci pour l'idée Smile


RE: Données sockées en base ou dans un fichier - Amrac - 02-02-2011

La base de données a l'avantage de stocker ta requête en cache immédiatement (puisque tes données sont statique) et y accède donc directement sur la RAM.

Ca me semble pas mal, pas besoin d'ouvrir un fichier sur le disque dur.


RE: Données sockées en base ou dans un fichier - php_addict - 02-02-2011

si ce sont des données statique mais que tu auras besoin d'utiliser dans des jointures LEFT JOIN par exemple, mieux vaut les garder en base de données, mais tes données statiques peuvent être par exemple des variables de configuration du site comme par exemple le nombr de MP à afficher par page...


RE: Données sockées en base ou dans un fichier - Holy - 02-02-2011

(02-02-2011, 05:20 PM)Amrac a écrit : La base de données a l'avantage de stocker ta requête en cache immédiatement (puisque tes données sont statique) et y accède donc directement sur la RAM.

Ca me semble pas mal, pas besoin d'ouvrir un fichier sur le disque dur.
T'es sûr que MySQL utilisent la RAM avec tous les types de table ? :o
T'aurais une source ? ^^

Perso, je préfère la gestion de fichiers pour les données statiques. Ca permet éventuellement de les éditer à la main et ça restera dans tous les cas plus rapides qu'une requête, même si celle-ci est mise en cache.


RE: Données sockées en base ou dans un fichier - Sephi-Chan - 02-02-2011

Moi, ça me ferait chier d'avoir une table juste pour stocker des noms. Smile
En ce moment, je joue un peu avec Redis et je trouve ça plutôt rigolo (et ça décalque tout en terme de performances).


Sephi-Chan


RE: Données sockées en base ou dans un fichier - niahoo - 02-02-2011

Riak FTW!