Temat: Połączenie bazy danych z wyszukiwarką zdjęć
No zależy od engine bazy danych i ich możliwości i wyboru sposobu przechowywania.
1. Jeżeli wyszukiwanie na stronie to na pewno zasoby w postaci foto muszą być serwowane usługą www czyli muszą leżeć na serwerze web na skonfigurowanym do czytania udziale.
2. Dane z pliku excel przekładam do tabeli lub tabel w bazie zachowując zasadę zachowania postaci normalnej. Zakładam, że w pliku excel jest nazwa pliku jakiego dotyczy w związku z tym w momencie czytania excel szukam pliku zrodlowego i wyliczam z niego md5 i zapisuje przy danych o pliku
3. Przy dużej liczbie foto (np 1 mln) przechowywanie na systemie plików jest problemem:
Przy dużej liczbie plików na każdym systemie plików problem będzie z indeksowaniem oraz wyszukiwaniem położenia danych wewnątrz systemu plików. Z doświadczenia wiem, że bardzo duże czasy dostępu do plików są nawet na systemach z journalingiem. Po prostu stworzenie indeksu dla dużej liczby plików zajmuje bo przeskanowania wymaga każdy plik.
Aby tego uniknąć przydałoby się foto pogrupować w jakąś sensowną strukturę. Stworzył bym sobie katalogi o dwuznakowych nazwach od 00 do FF i w każdym z tych katalogów jeszcze raz od 00 do FF (tak tak system szesnastkowy). Dla każdego pliku wyliczyłbym md5 z treści a następnie ulokował w odpowiednim katalogu. np. plik o moj_psiak.jpg ma sumę md5 16c487716e6ed76f6cc5150d8bc15127 co oznacza, że plik znajdzie się w katalogu 16 w podkatalogu c4 (oczywiście nazwę pliku zmieniam na sumę md5) :)
To załatwia szyki dostęp do pliku ponieważ przy np mln zdjęć w jednym katalogu średnio wypadnie 15 szt (1000000 / 65525 ~ 15).
4. Tworzę prosty formularz www + obsługę wyszukiwania plików w bazie. Same miniatury zaciągane w formie <img scr="" /> bezpośrednio z serwera.
Z drugiej strony może zamiast kombinować rozważyłbym użycie niemodelowej bazy / indeksera np. Elasticsearch, który zapewniłby mi przechowywanie zasobów wraz z danymi dodatkowymi oraz odpowiednio zindeksowałby zasoby pozwalając na szybkie wyszukiwanie :)
Ten post został edytowany przez Autora dnia 26.06.17 o godzinie 22:34