- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Это не максимально эффективное решение, при том, что в структуре есть данные, которые нужно разделить - их правильнее разделять построчно, если уж их пишете все в один файл и читать так же построчно. Построчное чтение легче, проще, может быть завершено по результату найденного вхождения и не потребует постоянной загрузки всего файла в память с последующим циклом проверки этих данных.
Еще раз - это ВООБЩЕ не оптимальное решение! цль была - примерно оценить скорость чтения записи в сравнении с БД. И даже в таком варианте я признаю, что это сопоставимо. Если грамотно организовасть файловую систему, оптимизировать запись и чтение - это может быть быстрее, чем использовать БД. По крайней мере на небольших обьемах и сопоставимо по потреблению памяти. Так понятнее? Не в рамках вопроса пытаться написать оптимальный скрипт на базе кода который я привел - он не для этого был написан.
Какое отношение роллбэк имеет к статично размещенному в директории файлу?
Я могу затереть занные в файле, могу многократно писать одно и тоже, могу удалить случайно файл, могу записать в него недопустимые символы и он перестанет читаться.... Все это нужно предусматривать. А при работе с SQL все это уже есть
Организация правильности БД никаким образом не влияет на отказоустойчивость базы
Влияет. все то что я написал выше. Например достаточно тип поля сделать уникальным и я избавляюсь от необходимости каждый раз проверять, есть ли такой айди в таблице. Добавление в CONSTRAIN ONDELETE Cascade - упростит мне очистку базу от ненужных данных. То есть вся та работа, которяа должна будет сделана при работе с файлами при работе с БД УЖЕ реализована. Да банальный бэкап обычно есть на любом хостинге. Наверное, давно не работал но сомневаюсь, что я ошибаюсь.
Так что никакой гипотетичности. Все это пройдено собственными граблями на проектах с месячными бюджетами за который этот форум можно купить десяток раз. Поэтому я так критически отношусь к идее работы с файлами в данном случае.
Ну как показала практика, разницы практически нет. +-10% роли не играют при примерно одинаковых итоговых объёмах.
Поэтому я так критически отношусь к идее работы с файлами в данном случае.
Чет я понаписал, понаписал в ответ аргументы. А теперь подумал, да какой смысл. Вы просили поделиться реальным опытом, я поделился. В ответ, начинается выдумывание гипотетически возможных проблем там, где они могут быть при любой технологии в силу кривых ручонок не специалистов и тех, кто просто напросто не знает другие технологии и не пробовал их на практике. Так что нет, спасибо, я пас в таком обсуждении, где разумное объяснение извращается до бессмысленного даже с точки зрения банальной логики.
Чет я понаписал, понаписал в ответ аргументы. А теперь подумал, да какой смысл. Вы просили поделиться реальным опытом, я поделился. В ответ, начинается выдумывание гипотетически возможных проблем там, где они могут быть при любой технологии в силу кривых ручонок не специалистов и тех, кто просто напросто не знает другие технологии и не пробовал их на практике. Так что нет, спасибо, я пас в таком обсуждении, где разумное объяснение извращается до бессмысленного даже с точки зрения банальной логики.
Ваше право. В любом случае, спасибо за интересную дискуссию и что пошарили свой опыт. Лично мне было интересно и полезно.
Результат выполнения для поиска по файлу с примерно полмиллиона записей:
Это локально, без всяких HTTP запросов, на 4-х ядерном core i5 10gen 16RAM
Мне кажется, сопоставимо со скоростью запроса в БД. Может и имеет место быть такой подход
Подытоживая, нашел время проверить поиск по аналогичной БД на этой же машине. Стэк - Postrgesql 14, проиндексированная таблица, коннект с помощью SQLAlchemy. Скорость поиска в таблице с 1100000 строковых записей длиной 30 символов:
То есть в худшем случае результат сопоставим, в лучшем - на порядок быстрее при количестве записей в 2 раза большем
Все-таки база побеждает) Да и кода там меньше получается.
И кстати, JOIN еще одной таблицы, например, если я хочу добавить еще описание, хранящееся отдельно - не сильно увеличивает скорость
Результат выполнения такого кода
что генерит запрос типа
SELECT blocked_id.id, blocked_id.ip_id, blocked_id.title, description.url
FROM blocked_id LEFT JOIN description ON description.blocked_id = blocked_id.id
WHERE blocked_id.ip_id = 'wHx0pgTK4kOoI9nc7dp9b9NV7uBqnn';
Для миллиона записей совсем некритично. Сам HTTP запрос будет занимать намного больше времени, Получение результата - малая часть в процентном отношении ко всему времени.
В итоге получаю очень простой код, хорошую надежность, простой бэкап данных, чем в случае работы с файлами
Все-таки база побеждает) Да и кода там меньше получается.
А если при этом всем еще вместо постгри взять например keydb?
А если при этом всем еще вместо постгри взять например keydb?
Думаю будет вообще летать)
На семинаре от компании Postgres Professional очень обижались на постгри вместо правильного "постгре(и)с"
Почему то все считают что раз PostgreSQL то надо отбрасывать 3 буквы, но это не совсем верно) Да и несильно к делу относится. На noSQL базах не проверял, впрочем очевидны их преимущества по скорости. SQL и файлы в одной лиге, поэтому интересно было их сравнить