За последние 24 часа нас посетили 63259 программистов и 1743 робота. Сейчас ищут 924 программиста ...

Статичные текстовые базы данных

Тема в разделе "PHP и базы данных", создана пользователем -Vladimir-, 19 окт 2010.

  1. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Есть такая штуковина:
    PHP:
    1. <?
    2. $names = array
    3. (
    4. '1' => 'Контент 1',
    5. '2' => 'Контент 2'
    6. );
    7.  
    8. $name = null;
    9. if (isSet($category) && isSet($names[$category]))
    10. {
    11. $name = $names[$category];
    12. }
    13. else
    14. {
    15. exit("Несуществующая категория");
    16. }
    17. ?>
    $category = "1"; , то $name = "Контент 1"; и т.д.

    Если перенести эту часть
    Код (Text):
    1. '1' => 'Контент 1',
    2. '2' => 'Контент 2'
    в текстовый файл, чтобы получилась такая статичная база, будет ли она создавать большую нагрузку на сервер, если её объём примерно 400 мегабайт?
    Быстро ли она будет работать?
     
  2. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    400мегабайт текстового файла ?
    я не ослышался ? О_О_О
    если да , то (по моему мнению:p ) у клиента будет , мягко говоря - капец , хосту не будет , будет просто метры раздавать клиенту , которому кстати капец
     
  3. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Почему клиенту метры раздавать?

    При запросе $category = "1"; будет $name = "Контент 1"; , а всё остальное, что ниже (2 => Контент 2 и т.д.) никуда не пойдёт.
     
  4. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    верно , я возможно ошибаюсь )

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

    да , но вам ведь прийдётся делать простой инклуд этого файла ?
    попробуйте на локалхосте заинклудить этот файл под браузером который покажет сколько он скушает
     
  5. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    причем здесь инклуд и клиент? скрипт на сервере обрабатывается. клиент может заметить только задержку пока сервер обработает такой файл, ничего ему закачиваться не будет.

    бред какойто.
     
  6. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    ххмм
    верно
    йа перепутал вывод текста в браузер с инклуда (что равносильно загрузке файла) с какой-то херью которую хочет автор
    кароче
    раз ты прав подскажи тс"у ответики на вопросики
    йаху
     
  7. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    -Vladimir-
    Да, будет создавать большую нагрузку.
    Если вам нужен простой способ хранения данных, то SQLite вам поможет.
    Но каждый раз инклудить 400-метровый PHP файл - смерть серверу.
     
  8. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    жопа будет с 400 мб.
     
  9. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    я на локалхосте не могу заинклудить 2.5метровый файл с 66к строками какого-то текста про какую-то реку из индии :D а там символов на 400мб...*shocked*
     
  10. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Если на сервере нет акселератора, то серверу придется каждый раз снова и снова парсить этот 400 метровый PHP файл - представьте себе тормоза.
    А если акселератор есть, то закешированный файл будет весить уже где-то под гигабайт (файлы с готовым опкодом всегда почему-то занимают гораздо больше места, чем исходные скрипты). То есть в любом случае будет жуткая трата времени и оперативной памяти.
     
  11. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    mysql такого рода осваивается за пару часов.
     
  12. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    В том-то и дело, что мне нужен не mysql (хотя все возможности на сервере есть).
    Просто до этого пробовал через mysql, после чего последний стал тормозить (наверно, хостинг такой).

    Хотя, можно снова mysql попробовал. А с текстовыми базами - есть один обходной путь, чтобы 400 мб не делать, а разбить на меньшие файлы.
     
  13. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    я кажется ссылочку дал не для того чтобы показать свою первую тему на этом форуме
    тебе нужно при разбиении подумать над сортировкой , алгоритмом поиска нужного файла и т.д
    да и блин , я параноик насчёт перегруза бд , но даже у меня никогда бд не тормозила
    предполагаю что у вас тормо-хостер и средненький проект иначе вы были бы уверены что у вас грузится бд из-за количества запросов и не предполагали что это хостер
     
  14. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Это очень просто:
    С 1 по 5000 - база1.txt
    С 5001 по 10000 - база2.txt
    и т.д.
     
  15. siiXth

    siiXth Активный пользователь

    С нами с:
    14 мар 2010
    Сообщения:
    1.447
    Симпатии:
    1
    а про разбиение по папочкам подумаем ? ))
    или будем "всё так просто" кидать 100500 файлов в одну дирректорию ?
    это всё блин обсуждали в том линке что я дал *обиделся*
     
  16. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Очевидно, с MySQL следует поступить тем же образом, то есть одна категория - одна запись, а не пихать всё в одну строку.
     
  17. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Не совсем понял, что ты имеешь ввиду.
    В таблицу mysql данные добавляются следующим образом:

    id | category | title | text | dates | views | vote

    Соответственно: id - номер записи, category - категория записи.
    Предлагаешь для каждой категории создавать свою таблицу в базе?
     
  18. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Отнюдь.

    И прекрасно. Осталось поставить индексы на столбцы в соответствии с нужными выборками и всё будет летать.
    Для mysql 400 Мб, это ничто.
     
  19. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Не совсем понял, что ты имеешь ввиду. Сделай скриншот из phpmyadmin пожалуйста.
     
  20. vasa_c

    vasa_c Активный пользователь

    С нами с:
    22 мар 2006
    Сообщения:
    1.760
    Симпатии:
    0
    Адрес:
    гор.Ленинград
    Чем вам поможет скришнот майадмина?
    Я имею ввиду, что 400 Мб для MySQL ничто, используйте MySQL.
    Если говорите, что использовали, но не вышло - расскажите, как это делали.
     
  21. Апельсин

    Апельсин Активный пользователь

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Та ну, одна таблица на 400 мб - совсем не ничто.
     
  22. Dagdamor

    Dagdamor Активный пользователь

    С нами с:
    4 фев 2006
    Сообщения:
    2.095
    Симпатии:
    1
    Адрес:
    Барнаул
    Апельсин
    Ну, для MySQL 400 метров - в гораздо большей степени "ничто", чем для похапэ ;)
     
  23. -Vladimir-

    -Vladimir- Активный пользователь

    С нами с:
    20 сен 2009
    Сообщения:
    139
    Симпатии:
    0
    Я вбил данные в базу, всё нормально.
    Эту сортировку имеешь ввиду:
    [​IMG]