opencaching / opencaching-pl

The source code of Opencaching.PL (and some other domains)
https://opencaching.pl/
GNU General Public License v3.0
22 stars 33 forks source link

Unused tables in db #1394

Open rapotek opened 6 years ago

rapotek commented 6 years ago

I've made a simple analysis, lexical and contextless, on db tables usage in code, based on current master contents and opencaching.pl dbstruct dump. The results are:

  1. Total number of tables: 130
  2. Number of tables used and updated in code: 89
  3. Number of tables used but not updated in code: 19, in details:
Table Remarks
cache_attrib important! keep it!
cache_coordinates should be migrated into caches table
cache_countries should be migrated into caches table
cache_status can be migrated into GeoCache object constans
cache_type can be migrated into GeoCache object constans
countries
email_schemas important! keep it!
geodb_coordinates see issue #1148
geodb_hierarchies see issue #1148
geodb_textdata see issue #1148
languages
log_types can be migrated into GeoCacheLog object constans
log_types_text can be migrated into GeoCacheLog object constans
nuts_layer data updates in README instruction
parkipl code for parkipl is unused for years
search_ignore
statpics important! keep it!
user_finds could be removed after code refactor
waypoint_type important! keep it!
  1. Number of tables used in triggers only: 1 (powertrail_progress)
  2. Number of tables occurring in sqlAlters only: 1 (badge_area)
  3. Number of tables not used in code: 20, in details: cache_size - migrated to GeoCacheCommons & Config geodb_areas geodb_changelog geodb_floatdata geodb_intdata geodb_locations geodb_polygons geodb_search geodb_type_names gk_item_type gk_move gk_move_type gk_move_waypoint gk_user import_caches_date pds_send pds_was_sent search_words transaction_test watches_waitingtypes

UPDATE - Tables dropped by sqlAlters since the issue has been created: cache_visits, watches_notified, logentries_types

As I mentioned already, the code itself was not analysed, only table names occurrences searched. Please verify the point 6 especially if listed tables are not used at all, even by external tools. If not, I think they are ready to drop.

Some tables are used in `/xml/ocxml11.php' file only. What is the purpose of this file?

deg-pl commented 6 years ago

Related with #1148

kojoty commented 6 years ago

@rapotek, na szybko:

ja też kiedyś robiłem takie analizy i tutaj spisałem moje "odkrycia": stara analiza bazy

Some tables are used in `/xml/ocxml11.php' file only. What is the purpose of this file?

ocxml jest starym projektem udostępniania danych OC na zewnątrz - teraz w razie takich potrzeb mamy OKAPI i replikację - ocxml używane jest nadal przez serwis geokrety.org

kojoty commented 6 years ago

powertrail_progress to moja robota i ja planuję uzywac tej tabeli przy refaktoringu geościeżek

deg-pl commented 6 years ago

@rapotek I've edited your first post to add some remmarks in table.

kojoty commented 6 years ago

@rapotek, @deg-pl myślę, że warto by może uaktualnić ten mój dokument albo zrobić nowy ja coś-niecoś wiem o niektórych tabelach, ale wpisywanie tego wszystkiego w komentarzach chyba mija się z celem. rapotek, jeśli chcesz dalej ciągnąc temat myślę, że to dobry kierunek.

Ogólnie to sprzątanie bazy jest tak samo trudne (w wielu miejscach) jak kodu - i tak samo niezbędne. Mamy wiele tabel w których sa np. tłumaczenia, albo konfiguracje i warto by to było mieć w kodzie, ale zmiana tego wymaga często rozległych zmian również w kodzie.

rapotek commented 6 years ago

@kojoty zrobić nowy dokument uaktualniając ten stary, ale nie w google docs, tylko w githubie w docs, żeby każdy go miał, mógł dodawać poprawki i było widać jego historię. Nawet, żeby można było bezpiecznie odnieść się do niego w wiki.

Stworzyłem ten temat (nie wiedząc zresztą o poprzednich), bo wygląda na to, że można bazę danych "odchudzić", jeżeli nie objętościowo, to przynajmniej konstrukcyjnie.

To, co jest potrzebne w pierwszym rzucie, to potwierdzenie, że na żadnym z nodów tabele "do usunięcia" faktycznie nie są używane ani w kodzie ani w żadnych zewnętrznych narzędziach.

W przypadku tabel "tylko odczytywanych" przed rozpoczęciem planowania przeniesienia ich zawartości do kodu trzeba sprawdzić, czy ta zawartość na wszystkich nodach jest identyczna. Jeżeli nie, to danej tabeli ruszyć nie można. Ze swojej strony mogę spróbować zrobić zestawienie wszystkich miejsc, w których dana tabela jest odczytywana.

Już teraz widzę, że zrobiłem błędy, gdyż nie uwzględniłem w wyszukiwaniu triggerów już istniejących w deweloperskiej bazie, stąd np. cache_coordinates i cache_countries są aktualizowane ale przy pomocy triggerów.

andrixnet commented 6 years ago

Please continue in english.

All tables marked by @rapotek as "can be migrated" are already subject of issues part of project https://github.com/opencaching/opencaching-pl/projects/2

Furthermore, cache_attrib also must be migrated into the code. See https://github.com/opencaching/opencaching-pl/issues/462 and https://github.com/opencaching/opencaching-pl/issues/878 (at least).

Tables countries and languages contain translations. They have already been (at least in part) migrated into code.

nuts_layer - I have been unable to generate appropriate data for it back in 2014. Also, it must take into account more then Europe. See https://github.com/opencaching/opencaching-pl/issues/865 at least. Generate process must take into account data as polygon instead of linestring. See https://github.com/opencaching/opencaching-pl/issues/120.

npa_areas - instructions update and integration of other continents.

statpics - should be moved to code + config.

waypoint_type should be moved to code, same as cache_type and log_types.

rapotek commented 6 years ago

@andrixnet to be precise: most of current remarks, including the 'should be migrated' and 'can be migrated' are @deg-pl updates

kojoty commented 6 years ago

@rapotek, we can collect info about DB where ever you want - for me Google docs is just the most useful - but if you have a better idea - let's do it!

and yeah! like I told this is complicated - there are a lot of mess in DB structure :)

andrixnet commented 6 years ago

logentries_types removed by https://github.com/deg-pl/opencaching-pl/commit/e0ec9c009b8b7ac78ff81edaa9af24f19297949b

andrixnet commented 6 years ago

See comments by @andrixnet https://docs.google.com/spreadsheets/d/1T45XyjeHRIPu4hSxSTdxOzymZcgAwR9WraJBmuwb_T0

kojoty commented 6 years ago

@andrixnet, feel free to edit this doc according to your knowledge - if some table is removed - just remove it from the doc, etc. - there is full history of changes so anyone is able to watch what was changed.

andrixnet commented 3 years ago

Just noticing: although most of the Geocache related implementation has been modeled, there still are usage instances of cache_type table instead of code based definitions: myroutes_search.php mycaches.php search.php viewprofile.php openchecker.php mycaches_logs.php my_logs.php mobile/newest.php mobile/near.php mobile/geo.php mobile/viewcache.php mobile/mywatches.php graphs/PieGraphustat.php lib/search* modules/openchecker/openchecker_classes.php mobile/lib/findalgo.inc.php util/google-earth/caches.php src/Views/articles/s2.tpl.php src/Utils/I18n/I18n.php