commit 8f08c10a154343eb5629e110ac624fde7785a819
parent 5085827330141efdc218f122f684959391840192
Author: Georges Dupéron <jahvascriptmaniac+github@free.fr>
Date: Fri, 4 Feb 2011 11:20:30 +0100
Difficultés rencontrées (rapport).
Diffstat:
1 file changed, 20 insertions(+), 6 deletions(-)
diff --git a/rapport/rapport.tex b/rapport/rapport.tex
@@ -60,6 +60,7 @@ Un grand nombre de développeurs ont créés des applications pour étendre la f
\section{Conception}
+\begin{verbatim}
NODE(EID integer primary key autoincrement, name string, #type (ref TYPE_NODE.num), weight);
RELATION(RID integer primary key autoincrement, #start (ref NODE.eid), #end (ref NODE.eid), #type (ref TYPE_RELATION.num), weight);
@@ -79,8 +80,8 @@ PLAYED_GAME(PGID integer primary key autoincrement, #gid (ref GAME.gid), #login
PLAYED_GAME_CLOUD(#PGID (ref PLAYED_GAME.pgid), #GID (ref PLAYED_GAME.gid), NUM, type (contrainte : 0 = partie de référence, 1 = réponse d'un joueur), #relation (ref RELATION.rid), weight (contrainte : probabilité estimée de cette réponse pour les bots (robots), réputation du joueur sinon), score (score donné au joueur, 0 pour les bots);
**INT unless otherwise marked
-
-
+\end{verbatim}
+\begin{verbatim}
create table node(eid integer primary key autoincrement, name, type, weight);
create table relation(rid integer primary key autoincrement, start, end, type, weight);
create table type_node(name, num);
@@ -91,15 +92,12 @@ create table game_cloud(gid, num, difficulty, eid_word, totalWeight, probaR1, pr
create table played_game(pgid integer primary key autoincrement, gid, login);
create table played_game_cloud(pgid, gid, type, num, relation, weight, score);
-
-
-
create index i_relation_start on relation(start);
create index i_relation_end on relation(end);
create index i_relation_type on relation(type);
create index i_relation_start_type on relation(start,type);
create index i_relation_end_type on relation(end,type);
-
+\end{verbatim}
TODO: UML, diagrammes de classes, Use cases, etc...
@@ -128,6 +126,22 @@ TODO: UML, diagrammes de classes, Use cases, etc...
\item Caractères non échappés dans le dump de la base.% gd
\end{itemize}
+\subsubsection{Itération 1, semaine 3}
+\begin{itemize}
+\item SQLite3 n'est pas capable d'utiliser un index pour la requête extérieure sur une requête du type
+\begin{verbatim}
+select * from (select * from table where condition) where condition
+\end{verbatim}
+Donc nécessité de ré-écrire certaines requêtes avec des jointures à priori beaucoup moins efficaces, mais qui le sont plus grâce aux index.
+\item SQLite3 tranforme les requêtes de la forme~:
+\begin{verbatim}
+select * from table limit 100 order by random();
+\end{verbatim}
+ en une requête qui récupère tout le set de résultats, ajoute une colonne random(), prend les 100 premiers résultats et les trie. Mais cela
+ l'oblige à récupérer tout le set de résultats, et calculer le random() pour chaque ligne, pour ensuite jeter tout ce qui dépasse la ligne
+ 100. Cela est évidemment très coûteux dans le cadre de requêtes avec beaucoup de résultats, et nous avons donc dû isoler la requête avec
+ \verb!limit! de son \verb!order by! avec des «hacks» assez tordus.
+\end{itemize}
\section{Conclusions}