Деректер базасы және файлдық жүйе бойынша сұрыптау

Менде URL мекенжайында сақталған бірнеше сурет бар: /uploads/hash/IMAGE001.jpg . jQuery интерфейсінің sortable() параметрін пайдалану арқылы суреттерді ретпен синхронды түрде сұрыптап, сақтауды қалаймын.

Мен мұны істеудің екі жолымен келдім және ең жақсы әдіс қандай болатынын білемін.

/hash/ каталогтарының әрқайсысы үшін 3 бағанмен (ID, IMAGE_URL, IMAGE_INDEX) SQL кестесін жасай аламын және кез-келген кестенің _INDEX мәндерін жаңарта аламын. Содан кейін, IMAGE_URL тізімінің сұрыпталған тізімін ORDER BY IMAGE_INDEX дерекқорымен сұрыптауға болады.

Мен бұрынғы 0000 деген файлды атауға болатын тағы бір идея болды (мысалы: /uploads/hash/0000IMAGE001.jpg). PHP-дегі файлдарды кез-келген түрде қайта атасам, PHP-дегі суреттердің /hash/ каталогын opendir() секілді SQL үстемесінсіз ұстап аламын, содан кейін файл атауына тапсырыс беремін клиенттің немесе сервердің соңында.

Бір мезгілде файл атын өзгертудің көптігі (кез-келген SQL кесте жаңартуларына қарсы) кез-келген бөгет мәселелеріне жүгіре аламын ба? PHP-нің каталогтар тізімін алу өнімділігі ORDER BY-мен SQL-ні сұраудан қалай ерекшеленеді?

1

3 жауаптар

Бұл жағдайда дерекқормен сұрыптау керек,

  1. Дерекқор B-tree индексін құрастырады және жылдам іздеу және жаңарту үшін сұрыпталған болады.
  2. Сіз файлдағы ауқымды сұрауларды жасай аласыз.
  3. Нақты файлдың сақталуын іздеумен біріктірусіз өзгерте аласыз.
  4. Memcachd бар көптеген кескіндерді масштабтауға және бірнеше машинада сіңіруге болады

Өзгерістерді сұрыптау және басқару үшін файл жүйесі әзірленбеген .

  1. Файл саны аз болғанша жылдам болса да, сұрыптауға көбірек уақыт кетеді.
  2. Кескіннің өзі идентификаторға тығыз байланысты, бұл икемділікті шектейді.
  3. Сізді бір машинаға, бір каталогқа және ОЖ шектеулеріне шектеу қою үшін, сіз өзіңізді жалған деректер базасын құрастыра отырып, оны көбейтіп, масштабтауыңыз керек.
  4. Серверде бұл дөрекілік болады, OS құлыптары мен параллельді басқару дБ сияқты күрделі емес.

ДБ-ны пайдалану - кез-келген «нақты» бағдарлама үшін, файлдық жүйені қолдану арқылы жылдам жою.

3
қосылды

Егер сіз PHP-дің opendir() файлдар тізімін алсаңыз, бірнеше техниканы пайдалана отырып, жыртылуға жол бермеуге болады.

Алдымен opendir() арқылы қайтарылатын тізімге тапсырыс беретін файлды өзгерту уақыттарын жаңарту үшін touch() арқылы алдын ала сұрыпталған тізіміңізді сақтай аласыз.

Қосымша оңтайландыру үшін, сұрыптауды жеделдету үшін каталогтарды шелек ретінде пайдаланыңыз. Мысалы, IMAGEDIR/a/, IMAGEDIR/b/ және т.б.

Жүйе каталогтары арқылы шелек сұрыптауды қолдану арқылы, сұрыпталмаған элементтерге бөлек қалтаны сақтауға және партиялардағы барлық партияны сұрыптауға оңтайландырылатын болады. Сұрыпталатын нысандардың жиынтығының жиынтығы бар шелектерді пайдалану кез келген сұрыптау әрекетін азайту арқылы тізімді сұрыптауға қажетті уақытты жеделдетеді және сұрыптауды сақтау үшін touch() пайдалануды азайтады Сұрыптау алгоритмі бірнеше рет орындалатын болады.

0
қосылды

Деректер базасы деректерді сақтау және алу үшін жасалған және оңтайландырылған. Деректерді сақтау үшін файл атауын өзгерту (сұрыптау реті сияқты), әдетте, ең жақсы таңдау емес. Өнімділік файлдық жүйеге байланысты өнімділік күрт өзгереді, ал глотоклар апатты болады. Дерекқормен белгілі бір жерде барыңыз.

0
қосылды