You are here: Links of Interest » HEIG-VD » [PRO] Virtual Comics Library » Rapport » Implémentation » Librarie libVCL » Moteurs de Stockage
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revision | ||
heig:vcl:rapport:implementation:libvcl:stockage [2016/05/30 10:21] – created Laureline David | heig:vcl:rapport:implementation:libvcl:stockage [2016/06/02 16:26] (current) – external edit 127.0.0.1 | ||
---|---|---|---|
Line 3: | Line 3: | ||
La librarie implémente actuellement deux moteurs de stockage: XML et SQLite. Ces deux moteurs se conforment à l'API définie en implémentant les interfaces fournies. | La librarie implémente actuellement deux moteurs de stockage: XML et SQLite. Ces deux moteurs se conforment à l'API définie en implémentant les interfaces fournies. | ||
- | ==== Moteur XML ==== | + | ===== Moteur XML ===== |
Le moteur de stockage XML permet de stocker les métadonnées sous la forme d'un ou plusieurs fichiers XML. Les fichiers de ce moteur peuvent être modifiés à la main par un utilisateur expérimenté. Le moteur de stockage XML se démarque par sa simplicité en terme d' | Le moteur de stockage XML permet de stocker les métadonnées sous la forme d'un ou plusieurs fichiers XML. Les fichiers de ce moteur peuvent être modifiés à la main par un utilisateur expérimenté. Le moteur de stockage XML se démarque par sa simplicité en terme d' | ||
Line 10: | Line 10: | ||
Le catalogue est entièrement chargé en mémoire lors de sa lecture depuis le disque. Le parsing s' | Le catalogue est entièrement chargé en mémoire lors de sa lecture depuis le disque. Le parsing s' | ||
- | L' | + | L' |
//Un exemple de catalogue XML peut être trouvé sur le CD-ROM.// | //Un exemple de catalogue XML peut être trouvé sur le CD-ROM.// | ||
- | ==== Moteur SQLite ==== | + | ===== Moteur SQLite |
- | ... | + | Le moteur SQLite permet d' |
+ | |||
+ | Il se base sur le framework OrmLite. Voici son modèle UML: | ||
+ | |||
+ | < | ||
+ | hide empty fields | ||
+ | hide empty methods | ||
+ | |||
+ | class category { | ||
+ | + id: int {id} | ||
+ | + parent_id: int {fk} | ||
+ | + name: string | ||
+ | } | ||
+ | |||
+ | class series { | ||
+ | + id: int {id} | ||
+ | + parent_id: int {fk} | ||
+ | + metadata_id: | ||
+ | + name: string | ||
+ | } | ||
+ | |||
+ | class series_metadata { | ||
+ | + id: int {id} | ||
+ | + summary: string | ||
+ | + released: int | ||
+ | + author: string | ||
+ | + artist: string | ||
+ | + tag: string | ||
+ | } | ||
+ | |||
+ | class volume_metadata { | ||
+ | + id: int {id} | ||
+ | + series_parent_id: | ||
+ | + category_parent_id: | ||
+ | + number: int | ||
+ | + name: string | ||
+ | } | ||
+ | |||
+ | category -- " | ||
+ | category -- " | ||
+ | |||
+ | series -> series_metadata | ||
+ | |||
+ | category -- " | ||
+ | series -- " | ||
+ | </ | ||
+ | |||
+ | Malheureusement, | ||
+ | |||
+ | Une solution possible est de créer, depuis nos objets actifs SQLite, des objets contenant les informations mais sans liaison à la base de données. Notre application pourrait alors travailler dessus en faisant abstraction de ces problèmes. Puis, lors de la sauvegarde, notre moteur n' | ||
+ | |||
+ | Cette solution n'a pas été utilisée pour ce projet car elle était jugée plus compliquée que de travailler sur des objets actifs. Cependant, il s'est avéré, après avoir résolu les problèmes liés aux objets actifs, qu' | ||
+ | |||
+ | Tout d' | ||
+ | |||
+ | Ensuite, une catégorie doit pouvoir contenir à la fois des séries et d' | ||
+ | |||
+ | Enfin, lorsque l'on modifie des informations sur un enregistrement, | ||
+ | |||
+ | Le dernier problème n'a pas été résolu car le seul moyen de le résoudre est d' | ||
+ | |||
+ | Il en résulte que les catalogues SQLite ne sont accessibles qu'en lecture et qu'il faut redémarrer l' |