Jump to content
  • 0

Что быстрей поиск по БД или файл в папке


Jey Val Star
 Share

Question

Здравствуйте, такой вопрос - что быстрей отработает поиск по слову (например: trybu_pvh) в таблице состоящей из 1000 записей. Или поиск файла с таким названием (trybu_pvh) в папке содержащей 1000 файлов?

 

PS скрипт пишется на PHP

 

Заранее спасибо

Link to comment
Share on other sites

Recommended Posts

  • 0

маленький нюанс - если искать файл с названием trybu_pvh в папке, в которой 1000 файлов, проще проверить лишь наличие файла в этой папке :), такой вид поиска будет быстрее чем в БД, но такой поиск данного файла по "trybu" ни к чему не приведет.

А вообще как правило, правильно составленная БД будет отрабатывать быстрее + дает ряд дополнительных возможностей, по сравнению с файлами.

Link to comment
Share on other sites

  • 0

поиск по файлам - однозначно быстрее!

я не буду спорить тут и кому-то что-то доказывать, но на практике не раз в этом убеждался.

к тому же, железо и параметры сервера тоже играет роль...

Link to comment
Share on other sites

  • 0

Всё неоднозначно. Например, если у вас ватный диск и он под нагрузкой, то это может быть медленнее, чем, например, дёрнуть из какого-нибудь редиса или memSQL. Ну и всё зависит от задачи — смотря что вы хотите делать. Почему-то мне кажется, что вы зря заморачиваетесь. А если и правда нужно, напишите простейший бенчмарк и всё.

Link to comment
Share on other sites

  • 0

Задача такая, хочу на сайте сделать чпу (как в joomla) задающееся из админки. И чтобы исбежать дублей, т.к. уровень вложенности неограниченный, продублировать адреса к страницам в отдельную таблицу. А потом при открытии страницы проверять ее полный путь от домена и если нет такой записи - 404. Вот и думаю как быстрей сработает - в виде записи в таблице хранить, или в виде названия файлов. Обращение в таблице будет только по слову из url.

Link to comment
Share on other sites

  • 0

чпу? а что вам мешает сделать все в файловой системе как оно есть?

http://site.ru/раздел/категория/

тупо грузить index.php из /раздел/категория/

А редактировать из админки как? Или править внешний вид? получиться +100500 файлов и редактирование внешнего вида - самоубийство

Link to comment
Share on other sites

  • 0
А редактировать из админки как? Или править внешний вид? получиться +100500 файлов и редактирование внешнего вида - самоубийство

а как по вашему устроены cms системы? :)

Link to comment
Share on other sites

  • 0

внешний вид - это что? html верстка страницы или css файлы?

css обычно общие файлы, но ни чего не мешает подгружать их из этой же папки

шаблон грузить тоже не проблема, если у вас есть такая система

у меня вообще любой запрос обрабатывается /index.php он проверяет, есть ли по запрошенному адресу информация, если да, то отдает сформированную страницу.

Link to comment
Share on other sites

  • 0

внешний вид - это что? html верстка страницы или css файлы?

css обычно общие файлы, но ни чего не мешает подгружать их из этой же папки

шаблон грузить тоже не проблема, если у вас есть такая система

у меня вообще любой запрос обрабатывается /index.php он проверяет, есть ли по запрошенному адресу информация, если да, то отдает сформированную страницу.

Я бы тоже смотрел в сторону роутинга.

Link to comment
Share on other sites

  • 0

Тогда я вас не совсем корректно понял.

Если у меня есть страница "водопровод" (site.ru/vodoprovod), "Трубы" (site.ru/vodoprovod/trybu), "Трубы из ПВХ" (site.ru/vodoprovod/trybu/pvh) то под каждую страницу создавать папку vodoprovod/trybu/pvh и в каждом index.php? (vodoprovod/.index.php, vodoprovod/trybu/index.php, vodoprovod/trybu/pvh/index.php)

 

PS в любых CMS точка входа - одна (корневой index.php) а он уже инклудит все необходимые файлы для работы...)))

Link to comment
Share on other sites

  • 0

Смысл вы поняли правильно. Файл у вас может называться как угодно, не обязательно index.php. В нем должна быть контентная информация.

Я так понимаю у вас /vodoprovod - это раздел, в котором выводится список трубы, краны.... /trybu имеет свой список, и в вашем файлике будут инструкции по получению и выводу этой информации. Удобство в том, что каждый обработчик находится в своем файлике, а шаблон они могут использовать общий. Хотим изменить что-то в трубах идем в /vodoprovod/trybu/index.php

В вашем случае можно сделать не много иначе:

у вас все три ваших адреса будут обрабатываться одним скриптом, т.к. судя по всему у вас там будет однотипный вывод, из папки /vodoprovod. Данный скрипт будет проверять какие и сколько дополнительных параметров передается и исходя из этого формировать нужные данные. Но в таком случае у вас получится 3 обработчика в одном файле. Но, если вам захотелось что-то изменить в трубах, нужно идти в /vodoprovod/index.php и возможно это изменит что-то и в водопроводе и пвх. Ну и естесно лишняя проверка.

Любой из способов можно использовать, выбирайте какой вам будет удобнее, но мне кажется в первом проще будет разобраться стороннему человеку.

 

Точка входа у вас может быть одна, которая будет инклудить нужный файлик из нужной папки.

Почему именно разные папки:

в них будет удобно хранить другие файлы относящиеся к определенной страничке, они не будут все в куче в одной папке или в одном файле

Link to comment
Share on other sites

  • 0

А если у меня в водопроводе буде порядка 50 страниц (трубы, краны, фильтры, насосы, и прочее) и каждый из них тоже содержит несколько страниц. Тогда как? Писать кучу обработчиков под каждую страницу?

Ps /vodoprovod - это просто страница.

Link to comment
Share on other sites

  • 0

решений может быть много, в вашем случае можно попробовать сделать один обработчик для всех страниц раздела /vodoprovod

нюансы только в формате вывода/хранения данных.

Link to comment
Share on other sites

  • 0

Спасибо большое, но вопрос все равно остается открытым: что быстрей подключиться к БД и сделать поиск по таблице urls (id,url,id_page_parent) где url - уникальный адрес запрашиваемой страницы (если есть - выводим, нет - 404), id_page_parent - перечень id самой страницы и родителей (56 - сама страница,10 - родитель,4 - родитель родителя).

или же поиск файла в папке urls (если нашел считал данные файла, затем конект бд и вывод страницы, нет - 404).

Как-то так.

Link to comment
Share on other sites

  • 0

Спасибо большое, но вопрос все равно остается открытым: что быстрей подключиться к БД и сделать поиск по таблице urls (id,url,id_page_parent) где url - уникальный адрес запрашиваемой страницы (если есть - выводим, нет - 404), id_page_parent - перечень id самой страницы и родителей (56 - сама страница,10 - родитель,4 - родитель родителя).

или же поиск файла в папке urls (если нашел считал данные файла, затем конект бд и вывод страницы, нет - 404).

Как-то так.

это не верный подход, хранить урлы в бд и по ним делать поиск-сравнение... проще и эстетичнее как сказали выше сделать роутинг на .php файл, который будет преобразовывать страницы в чпу.

посмотрите в сторону битрикс, там сделано именно так.

Link to comment
Share on other sites

  • 0
посмотрите в сторону битрикс

Не слушайте его. Не смотрите в сторону битрикс никогда. Лучше посмотрите в сторону Yii или ещё какого-нибудь приличного фреймворка.

Link to comment
Share on other sites

  • 0

смотрел codeigniter, но мне ссылки вида /контроллер/метод/доп_параметры не особо подходят.

Может кто из вас знает как в codeigniter сделать более динамичные ссылки?

Link to comment
Share on other sites

  • 0
Не слушайте его. Не смотрите в сторону битрикс никогда. Лучше посмотрите в сторону Yii или ещё какого-нибудь приличного фреймворка.

:rofl: чего так категорично то? что плохого он тебе сделал?

согласен что это монстр, но я ведь имел ввиду организацию чпу, она что, плохо организованна у битрикс?

можешь объяснить свое поведение? :)


По поводу битрикса, работал на нем. Платная и с глюками. Тогда уже джумла - теже глюки, но бесплатно)))

у вас (не у вас конкретно, а как пример) может глючить любая cms если руки сами знаете откуда растут.

Link to comment
Share on other sites

  • 0
смотрел codeigniter, но мне ссылки вида /контроллер/метод/доп_параметры не особо подходят.

А почему не подходят?


чего так категорично то? что плохого он тебе сделал?

Ох знал бы ты как много он мне плохого сделал. Я его админка шаблон шатал :)

Link to comment
Share on other sites

  • 0
может глючить любая cms если руки сами знаете откуда растут.

Я в курсе про кривизну рук, но в данном примере я просто сравнил платную и бесплатную (особо без разницы). 

 

 

Ох знал бы ты как много он мне плохого сделал. Я его админка шаблон шатал

Это еще раз про глюки и прочее)))

Edited by Jey Val Star
Link to comment
Share on other sites

  • 0

Кстати, если кому интересно, вчера решил проверить на практике и протестировал.

0,0002 сек - поиск по файлу (в папке 1728 файлов) 

0,005 сек - поиск по базе (строк в таблице 1728)

Результат, в данном случае, очевиден.

 

PS тест производился локально, windows 7, 2.4 Ггц, 2 Гб ОЗУ, DENWER

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy