Difficultés rencontrées (rapport).
This commit is contained in:
parent
5085827330
commit
8f08c10a15
|
@ -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}
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user