Index: topia/doc/Fonctionnement.rst diff -u topia/doc/Fonctionnement.rst:1.1 topia/doc/Fonctionnement.rst:1.2 --- topia/doc/Fonctionnement.rst:1.1 Tue Jul 19 12:56:08 2005 +++ topia/doc/Fonctionnement.rst Mon Jul 25 17:14:55 2005 @@ -357,3 +357,31 @@ La méthode **cleanHistory** lorsqu'elle s'exécute doit faire attention à ne pas supprimer des objets qui serait encore utile pour les transactions. +Gestion des relations entre classe +================================== + +Pour homogénéisé et avoir une implantation la plus simple possible, toutes les relations entre deux objets sont gérées de la même façon. Il est donc aussi possible de faire évoluer simplement au niveau du schéma de données le type de relation entre deux entités. + +Il y a deux types de relation principal, les relations qui ont une classe d'association, et ceux qui n'en ont pas. + +Dans l'implantation choisi on utilise toujours une classe d'association, soit en uutilisant la classe d'association définie dans le schéma, soit en créant une classe spécifique durant la génération. + +Cette classe est responsable du maintient du lien entre les deux entités. Cette classe est en fait une entité normal que le Storage peut conserver comme n'importe quel autre entité. Mais il est préférable que la recherche d'une entité relation soit rapide. + +Les différents types de relations +--------------------------------- + +Voici la liste de toutes les relations possibles entre deux entités. + +- 0-1 +- 0-(0-M) +- 0-(N-M) +- 1-1 +- 1-(0-M) +- 1-(N-M) +- (0-M)-(0-M) +- (N-M)-(N-M) + +Pour toutes les relations autre que 0, il est possible d'avoir une navigation, une aggregation, une composition. Pour l'instant l'aggregation et la composition sont gérées de façon identique. + + Index: topia/doc/perf.sxc Index: topia/doc/perf.txt diff -u /dev/null topia/doc/perf.txt:1.1 --- /dev/null Mon Jul 25 17:15:00 2005 +++ topia/doc/perf.txt Mon Jul 25 17:14:55 2005 @@ -0,0 +1,458 @@ +----------------- Mckoi ---------------------- +time to create(100): 24 +10%(1399/1399) 20%(1044/2443) 30%(968/3411) 40%(724/4135) 50%(950/5085) +60%(954/6039) 70%(724/6763) 80%(631/7394) 90%(686/8080) 100%(709/8789) time +to store: 8789 +time to commit: 3264 +-- Total time: 12077 +time_storeList: 0 +time_storeOne: 8781 +time_store: 3933 +time_managementExists: 329 +time_saveManagement: 337 +time_saveData: 3266 +time_objectToDatabase: 78 +time_databaseToObject: 0 +----------------- Mckoi ---------------------- +time to create(1000): 74 +10%(4300/4300) 20%(4089/8389) 30%(4351/12740) 40%(4923/17663) +50%(4537/22200) 60%(4671/26871) 70%(5262/32133) 80%(5384/37517) +90%(6013/43530) 100%(5892/49422) time to store: 49422 +time to commit: 22806 +-- Total time: 72302 +time_storeList: 0 +time_storeOne: 49413 +time_store: 18173 +time_managementExists: 1747 +time_saveManagement: 1719 +time_saveData: 14677 +time_objectToDatabase: 574 +time_databaseToObject: 0 +----------------- Mckoi ---------------------- +time to create(5000): 222 +10%(23019/23019) 20%(28325/51344) 30%(34543/85887) 40%(49313/135200) +50%(60210/195410) 60%(93402/288812) 70%(75058/363870) 80%(83023/446893) +90%(102262/549155) 100%(108693/657848) time to store: 657849 +time to commit: 693762 +-- Total time: 1351833 +time_storeList: 0 +time_storeOne: 657763 +time_store: 318237 +time_managementExists: 9613 +time_saveManagement: 13393 +time_saveData: 295046 +time_objectToDatabase: 3137 +time_databaseToObject: 0 + + + +----------------- Mysql ---------------------- +time to create(100): 15 +10%(141/141) 20%(92/233) 30%(69/302) 40%(84/386) 50%(82/468) 60%(73/541) +70%(86/627) 80%(61/688) 90%(64/752) 100%(62/814) time to store: 814 +time to commit: 111 +-- Total time: 940 +time_storeList: 0 +time_storeOne: 812 +time_store: 721 +time_managementExists: 164 +time_saveManagement: 76 +time_saveData: 479 +time_objectToDatabase: 39 +time_databaseToObject: 0 +----------------- Mysql ---------------------- +time to create(1000): 76 +10%(822/822) 20%(562/1384) 30%(491/1875) 40%(487/2362) 50%(505/2867) +60%(459/3326) 70%(447/3773) 80%(495/4268) 90%(450/4718) 100%(477/5195) time +to store: 5195 +time to commit: 699 +-- Total time: 5970 +time_storeList: 0 +time_storeOne: 5184 +time_store: 4465 +time_managementExists: 758 +time_saveManagement: 540 +time_saveData: 3142 +time_objectToDatabase: 304 +time_databaseToObject: 0 +----------------- Mysql ---------------------- +time to create(5000): 639 +10%(3227/3227) 20%(2553/5780) 30%(2490/8270) 40%(2172/10442) 50%(2090/12532) +60%(2187/14719) 70%(2093/16812) 80%(2133/18945) 90%(2161/21106) +100%(2079/23185) time to store: 23185 +time to commit: 3755 +-- Total time: 27579 +time_storeList: 0 +time_storeOne: 23094 +time_store: 20020 +time_managementExists: 2838 +time_saveManagement: 2682 +time_saveData: 14442 +time_objectToDatabase: 1085 +time_databaseToObject: 0 +----------------- Mysql ---------------------- +time to create(10000): 508 +10%(7713/7713) 20%(6465/14178) 30%(6295/20473) 40%(6512/26985) +50%(5735/32720) 60%(5935/38655) 70%(5711/44366) 80%(5662/50028) +90%(6740/56768) 100%(6138/62906) time to store: 62906 +time to commit: 8849 +-- Total time: 72263 +time_storeList: 0 +time_storeOne: 62754 +time_store: 55040 +time_managementExists: 7930 +time_saveManagement: 7484 +time_saveData: 39506 +time_objectToDatabase: 2638 +time_databaseToObject: 0 + + + + +----------------- Postgresql ---------------------- +time to create(100): 11 +10%(207/207) 20%(119/326) 30%(129/455) 40%(128/583) 50%(112/695) +60%(125/820) 70%(142/962) 80%(108/1070) 90%(109/1179) 100%(124/1303) time to +store: 1303 +time to commit: 189 +-- Total time: 1503 +time_storeList: 0 +time_storeOne: 1302 +time_store: 1050 +time_managementExists: 169 +time_saveManagement: 118 +time_saveData: 761 +time_objectToDatabase: 48 +time_databaseToObject: 0 +----------------- Postgresql ---------------------- +time to create(1000): 716 +10%(1668/1668) 20%(1517/3185) 30%(1420/4605) 40%(1373/5978) 50%(1361/7339) +60%(1314/8653) 70%(1663/10316) 80%(1392/11708) 90%(1327/13035) +100%(1552/14587) time to store: 14587 +time to commit: 2334 +-- Total time: 17637 +time_storeList: 0 +time_storeOne: 14572 +time_store: 11424 +time_managementExists: 1453 +time_saveManagement: 1283 +time_saveData: 8643 +time_objectToDatabase: 451 +time_databaseToObject: 0 +----------------- Postgresql ---------------------- +time to create(5000): 518 +10%(5652/5652) 20%(5233/10885) 30%(5104/15989) 40%(7908/23897) +50%(7382/31279) 60%(7267/38546) 70%(7157/45703) 80%(7078/52781) +90%(7099/59880) 100%(7643/67523) time to store: 67523 +time to commit: 16808 +-- Total time: 84849 +time_storeList: 0 +time_storeOne: 67400 +time_store: 52214 +time_managementExists: 6132 +time_saveManagement: 5523 +time_saveData: 40475 +time_objectToDatabase: 1200 +time_databaseToObject: 0 +----------------- Postgresql ---------------------- +time to create(10000): 1155 +10%(15034/15034) 20%(14515/29549) 30%(14752/44301) 40%(13946/58247) +50%(13653/71900) 60%(13326/85226) 70%(13733/98959) 80%(18714/117673) +90%(14144/131817) 100%(14364/146181) time to store: 146181 +time to commit: 35826 +-- Total time: 183162 +time_storeList: 0 +time_storeOne: 146024 +time_store: 109912 +time_managementExists: 12939 +time_saveManagement: 11962 +time_saveData: 84875 +time_objectToDatabase: 2574 +time_databaseToObject: 0 + + + + + + + + + + + + + + + +sans index, 1000 objets, 7 champs +time to create: 11653 +time to commit: 221 + +sans index, 10000 objets, 7 champs +time to create: 229375 +time to commit: 5471 + +avec index, 10000 objets, 7 champs +time to create: 976 +time to store: 113984 +time to commit: 18728 + +time to create: 1010 +time to store: 307597 +time to commit: 13651 + +avec index, 10000 objets, 7 champs, avec 10000 objet deja present +time to create: 1006 +time to store: 308502 +time to commit: 15125 + +avec index, 10000 objets, 7 champs, avec 20000 objet deja present +time to create: 718 +time to store: 296730 +time to commit: 15218 +time_store: 296618 +time_saveData: 52723 +time_databaseToObject: 0 + +avec index, 10000 objets, 7 champs, avec 30000 objet deja present +time to create: 979 +time to store: 305617 +time to commit: 16067 +time_store: 305487 +time_saveData: 57353 +time_objectToDatabase: 3599 + +avec index, 10000 objets, 7 champs, avec 40000 objet deja present +time to create: 957 +time to store: 307976 +time to commit: 15349 +time_store: 280596 +time_saveData: 56736 +time_objectToDatabase: 3728 +time_databaseToObject: 0 + +avec index, 10000 objets, 7 champs, avec 50000 objet deja present, en commit en list +time to create: 934 +time to store: 281410 +time to commit: 19988 +time_storeList: 281410 +time_storeOne: 0 +time_store: 281154 +time_saveData: 57737 +time_objectToDatabase: 3085 +time_databaseToObject: 0 + +avec index, 10000 objets, 7 champs, avec 60000 objet deja present, en commit en list +time to create: 986 +time to store: 276003 +time to commit: 17358 +time_storeList: 276002 +time_storeOne: 0 +time_store: 275686 +time_managementExists: 209696 +time_saveManagement: 10438 +time_saveData: 55456 +time_objectToDatabase: 2866 +time_databaseToObject: 0 + +avec index, 10000 objets, 7 champs, avec 70000 objet deja present, en commit en list +time to create: 979 +time to store: 284788 +time to commit: 17460 +time_storeList: 284788 +time_storeOne: 0 +time_store: 284550 +time_managementExists: 218219 +time_saveManagement: 10791 +time_saveData: 55405 +time_objectToDatabase: 2926 +time_databaseToObject: 0 + +avec index, 10000 objets, 7 champs, avec 0 objet deja present, en commit en list +time to create: 989 +time to store: 219181 +time to commit: 16418 +time_storeList: 219181 +time_storeOne: 0 +time_store: 218855 +time_managementExists: 147869 +time_saveManagement: 11200 +time_saveData: 59646 +time_objectToDatabase: 2755 +time_databaseToObject: 0 + + +avec index, 10000 objets, 1 champs String +time to create: 481 +time to store: 55539 +time to commit: 3276 + +avec index, 10000 objets, 1 champs ArrayList +time to create: 926 +time to store: 60048 +time to commit: 3833 + + + + +avec index, 10000 objets, 7 champs, avec primary key +time to create: 1000 +time to store: 86898 +time to commit: 23849 +time_storeList: 86898 +time_storeOne: 0 +time_store: 85893 +time_managementExists: 11856 +time_saveManagement: 12309 +time_saveData: 61585 +time_objectToDatabase: 2665 +time_databaseToObject: 0 + + +mysql, avec index, 10000 objets, 7 champs, avec primary key +time to create: 920 +time to store: 41480 +time to commit: 5919 +time_storeList: 41478 +time_storeOne: 0 +time_store: 41282 +time_managementExists: 6149 +time_saveManagement: 5873 +time_saveData: 29139 +time_objectToDatabase: 2577 +time_databaseToObject: 0 + +time to create: 1021 +time to store: 54480 +time to commit: 9480 +time_storeList: 54478 +time_storeOne: 0 +time_store: 54266 +time_managementExists: 7157 +time_saveManagement: 7495 +time_saveData: 39501 +time_objectToDatabase: 2394 +time_databaseToObject: 0 + +time to create: 954 +time to store: 48134 +time to commit: 9392 +time_storeList: 48133 +time_storeOne: 0 +time_store: 47912 +time_managementExists: 6026 +time_saveManagement: 6285 +time_saveData: 35494 +time_objectToDatabase: 2436 +time_databaseToObject: 0 + +time to create: 943 +time to store: 49797 +time to commit: 8682 +time_storeList: 49797 +time_storeOne: 0 +time_store: 49611 +time_managementExists: 6266 +time_saveManagement: 6336 +time_saveData: 36914 +time_objectToDatabase: 2347 +time_databaseToObject: 0 + +mckoi(c/s), 1000 objet +time to create: 98 +time to store: 49809 +time to commit: 40122 +time_storeList: 49809 +time_storeOne: 0 +time_store: 34528 +time_managementExists: 3145 +time_saveManagement: 3045 +time_saveData: 28306 +time_objectToDatabase: 622 +time_databaseToObject: 0 + +mckoi(embeded), 1000 objets +time to create: 52 +time to store: 27777 +time to commit: 29126 +time_storeList: 27776 +time_storeOne: 0 +time_store: 16096 +time_managementExists: 1310 +time_saveManagement: 1247 +time_saveData: 13513 +time_objectToDatabase: 448 +time_databaseToObject: 0 + +mysql +time to create(10000): 671 +10%(5245) 20%(10225) 30%(14342) 40%(18446) 50%(22517) 60%(26575) 70%(30650) 80%(35115) 90%(39810) 100%(43922) time to store: 43922 +time to commit: 5299 +time_storeList: 0 +time_storeOne: 43792 +time_store: 37912 +time_managementExists: 4714 +time_saveManagement: 4683 +time_saveData: 28413 +time_objectToDatabase: 2145 +time_databaseToObject: 0 + +time to create(10000): 647 +10%(5215/5215) 20%(4367/9582) 30%(4025/13607) 40%(3987/17594) 50%(3923/21517) 60%(3954/25471) 70%(3966/29437) 80%(3995/33432) 90%(3961/37393) 100%(3941/41334) time to store: 41334 +time to commit: 6120 +time_storeList: 0 +time_storeOne: 41234 +time_store: 35838 +time_managementExists: 4470 +time_saveManagement: 4695 +time_saveData: 26588 +time_objectToDatabase: 1948 +time_databaseToObject: 0 + +time to create(100000): 5305 +10%(37930/37930) 20%(51868/89798) 30%(53187/142985) 40%(53865/196850) +50%(53671/250521) 60%(53786/304307) 70%(54035/358342) 80%(55909/414251) +90%(55579/469830) 100%(54628/524458) time to store: 524458 +time to commit: 91086 +-- Total time: 620849 +time_storeList: 0 +time_storeOne: 523923 +time_store: 462066 +time_managementExists: 53368 +time_saveManagement: 61677 +time_saveData: 346186 +time_objectToDatabase: 20389 +time_databaseToObject: 0 + + +postgresql +time to create(10000): 741 +10%(11813) 20%(27480) 30%(44012) 40%(62268) 50%(88702) 60%(113161) 70%(139235) 80%(176917) 90%(227575) 100%(279342) time to store: 279342 +time to commit: 25028 +time_storeList: 0 +time_storeOne: 279211 +time_store: 247272 +time_managementExists: 188005 +time_saveManagement: 9202 +time_saveData: 49981 +time_objectToDatabase: 2384 +time_databaseToObject: 0 + +time to create(10000): 898 +10%(14701/14701) 20%(17943/32644) 30%(24083/56727) 40%(29406/86133) 50%(30963/117096) 60%(35385/152481) 70%(37992/190473) 80%(42258/232731) 90%(49827/282558) +100%(49618/332176) time to store: 332176 +time to commit: 25752 +-- Total time: 358826 +time_storeList: 0 +time_storeOne: 332028 +time_store: 293766 +time_managementExists: 217757 +time_saveManagement: 11350 +time_saveData: 64592 +time_objectToDatabase: 3587 +time_databaseToObject: 0 + +time to create(100000): 6858 +10%(117168/117168) 20%(113583/230751) 30%(112219/342970) 40%(113951/456921) +50%(113362/570283) 60%(111418/681701) 70%(112486/794187) 80%(112108/906295) +90%(113400/1019695) 100%(111035/1130730) time to store: 1130730