|
jlmrafael
|
 |
« on: February 24, 2011, 12:25:30 AM » |
|
Witam Tajemnicą poliszynela jest, że w miarę jak rośnie liczba filmów, Griffith znacznie zwalnia i jego użytkowanie nie cieszy już tak bardzo jak na początku. Można byłoby to usprawnić oszczędzając kilkadziesiąt bezcennych milisekund przerabiając bazę danych, a właściwie tabelę "movies". Utrzymywania tak dużej tabeli i tak nie ma większego sensu więc czemu by jej nie podzielić.
Kontrolka\tabelka (nie wiem jak to nazywacie w Pythonie) w Griffith zawiera tylko kilka podstawowych pól takich jak: numer, plakat gatunek, obejrzany, czas trwania, tytuł oryginalny, reżyser, rok, ocena, czy niedawno dodane utworzony i uaktualniony. Łącznie 12. Uprzedzę może wątpliwości, spowolnienie jest duże nawet przy włączonych tylko kilku polach oczywiście pomijając plakat. W bazie danych tych kolumn (wybacz że nie wymienię) jest 39.
Warto rozważyć w przyszłej wersji podzielenie tej tabeli. Wystarczy na dwie. Podstawowa miał by tylko i wyłącznie dane takie jak w kontrolce. Reszta przeżucona byłaby do drugie tabeli i oczywiście powiązana kluczem z tabelą podstawową (klucz na kolumnie movie_id). Dzięki temu nie trzeba utrzymywać jednej tak dużej tabeli i takiej ilości danych co znacznie usprawniłoby wyszukiwanie w kontrolce\tabeli w programie. W przypadku, gdy klikniemy na film lepiej będzie wówczas wykonać złączenie na tych dwóch tabelach, tak aby pobrać niezbędne do wyświetlenia w programie(z prawej strony) dane. Nie wiem jakie Python obsługuje zapytania, zapewne te najbardziej podstawowe SELECT, FROM, WHERE, ORDER BY więc nie będzie z tym problemu. Jeżli chodzi o złączenia to możecie wykorzystać tzw. alternatywną składnie, poniżej przedstawię przykład (w miarę realistyczny dla przyszłej bazy)
SELECT * --(tu oczywiście kolumny, które są nam potrzebne) FROM movies, movies_ext --załóżmy że movies_ext to nowa nazwa nowej tabeli WHERE movies.movie_id = movies_ext.movie_id AND movies_ext.movie_id = 44 -- przykłąd alternatywnego złączenia przed AND, po AND liczba 44 reprezentuje ID filmu którego dane chcemy pobrać
Wykonanie skryptu nowej bazy też nie będzie trudne. Do dwóch tabel tymczasowych (odpowiadającym nowym tabelą) wpisujemy dane z aktualnej tabeli movies. następnie kasujemy tą tabelę i tworzymy dwie nowe, do których wpisujemy dane z tabel tymczasowych.
Na razie to chyba na tyle. Liczę na rozważenie propozycji.
Pozdrawiam
|