Bonjour à tous,

Mon application va devoir charger des données de l'utilisateur qu'il aura lui même configuré via un éditeur en indiquant les le type de base de données, ses coordonnées ainsi que les tables et champs à charger.

Par la suite, il se servira de mon application pour les manipuler.

Par exemple il va définir :
- ip base
- port
- base
- t_clients (id, name)

Une fois configuré j'ai un module qui va être capable d'aller chercher ces données et les transmettre à mon application. Je me pose la question de "comment les stocker".

Intuitivement je verrais bien une structure comme celle-ci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
data["t_clients"][0]["id"] = 1
data["t_clients"][0]["name"] = "Pierre"
data["t_clients"][1]["id"] = 2
data["t_clients"][1]["name"] = "Paul"
data["t_clients"][2]["id"] = 3
data["t_clients"][2]["name"] = "Jacques"
J'avais implémenté ça en C++, mais le fait d'allouer des chaines de caractères "id", "name" pour chaque client faisait exploser la mémoire.

La solution retenue était alors d'utiliser des pointeurs de membres, ce qui revenait plus ou moins (en code approximatif) à ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
// données
data["t_clients"][0] = [1, "Pierre"];
data["t_clients"][1] = [2, "Paul"];
data["t_clients"][2] = [3, "Jacques"];
 
// meta
data["t_clients"].meta["id"] = 0
data["t_clients"].meta["name"] = 1
 
// accès
function getEntityById(entity, field, id)
{
   var index = data[entity].meta[field];
   foreach(c in data[entity])
   {
      if(c[index] == id)
         return c;
   }
   return null;
}
Et ainsi on alloue autant de chaînes de caractères qu'il n'y a de champ par type de donnée et non par données, ce qui réduisait considérablement la mémoire utilisée.

Est-ce que je dois me soucier de cela en javascript ?

Question secondaire, est-il possible de gérer toute une multitude de données en javascript au sein d'un navigateur ? Par exemple si j'ai 3 millions de clients qui chacun possèdent une 10ène d'ordres , ça va pas faire planter le navigateur de charger tout ça ?

Merci pour vos réponses,

A bientôt