Алеандр

Алеандр
Рейтинг
208
Регистрация
08.12.2010
141c18
NoMoreContent #:
На то мы и программисты, чтобы постоянно экспериментировать. 
До тех пор, пока не выходишь на большие объемы, когда у тебя или с пол миллиона файлов для хранения данных или, когда у тебя во входящем разборе прилетает .xml на 300-500Мб одним файлом и нужно максимально эффективно использовать ресурсы сервера, чтобы не пришлось ради разбора этих разовых данных покупать тариф за оверпрайс денюжек ) А так, да, пока там условно 100 записей - разницы он не почувствует. Ну или, если есть возможности платить за более ресурсный сервер, не экономя свои средства.
Sly32 #:
файл пишется все в одну строку -нет смысла читать построчно

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

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

Ps: я уж не говорю о том, что часть задач по работе с данными в файлах можно выполнять более эффективными grep, sed, awk и т.д. и возвращать результат в оболочку сайта.

Sly32 #:

Я например могу накидать вам кучу трудностей, которые вы даже не отследите. Например, у вас будет бэкапится файл с ошибкой и вы даже не будете понимать что не так: просто он будет исключен их поиска, соответственно  результат не нарантирован. А найти ошибку - ну я даже не представляю навскидку как.
При правильной организации БД это будет исключено. Роллбэк неправильно транзакции нарантирует что у вас БД будет  D-  устойчивой. Опять же правильно нстроенный бэкап позволяет хранить кучу версий базы на промежуток времени. 

Вы накидали в одну корзину совершенно разные ситуации без особого понимания этих ситуаций. Какое отношение роллбэк имеет к статично размещенному в директории файлу? Почему вдруг при бэкапе может быть ошибка и ее не может быть в базе данных? Не говоря уже о том, что база данных - это те же файлы на диске. Более того, если какой-то файл изменился в процессе создания бэкапа - об этом будет уведомление. Если он по какой-то причине не сохранился - так же.

Ничего не может быть исключено, вообще. Организация правильности БД никаким образом не влияет на отказоустойчивость базы, файлов на сервере и, тем более, на возможное физическое повреждение сервера.

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

В общем, последний ваш комментарий - это вообще обо всем сразу и ни о чем конкретном и никакого отношения к обсуждаемой теме не имеет.

Shelton724 #:

Про миллион не знаю, но есть у меня один "странный" проект, где файлов больше 400 000 (ну так исторически сложилось), сервер с ним бэкапится примерно за то же время, что и соседний, где файлов в 100 раз меньше, файл бэкапа не раздут.

Если вы делаете снапшот всего сервера - разницы не будет, факт. Если же вы делаете бэкап, условно, через tar gzip папки, то 400 000 будут собираться дольше, чем 400 файлов именно в силу того, что нужно значительное время на поштучный обход и добавление каждого файла в архив. По крайней мере, у меня именно так.
Sly32 #:

Высказывались опасения - как себя будет вести файловая система с миллионом файлов, насколько легко это все будет забэкапить. Поделитесь опытом.

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

Т.е., если нет задачи найти искомый id в папке, а уже зная этот id проверить его наличие - это быстро. Если же в задаче, по какой-то причине, нужно делать листинг каталога и потом искать подходящие файлы - вот это будет ооооочень медленно на больших объемах файлов.

Чтобы уменьшить нагрузку на поиск и построение дерева каталогов и файлов - оптимально хранить id не в одной папке, а в нескольких, например id "11112222333" хранить в папке 1/11/, а id "222333444" в папке 2/22. Тут вариантов вложений может быть сколь угодно, сильно зависит от того, какие именно id и группы повторов у них есть, чтобы выбрать оптимальный путь каталогов. Тогда и проблем с построением папок будет значительно меньше, поскольку одна папка будет содержать список не в сотни тыс файлов, а в сотни-тысячи, что позволяет работать гораздо быстрее.

С бэкапом так же проблем нет. Основная проблема тут в том, что, конечно, самих файлов много и будет значительно дольше собираться сам архив, но, кроме этого - никаких трудностей.

Может быть, невнимательно прочитал все ответы, но по искомой задаче: зачем все id хранить в одном файле? У меня полно сайтов-самописов, с похожими задачами, решаю  элементарно - создаю файл с нужным id в структуре папок. Проверка на наличие этого id не требует каких-либо ресурсов, кроме того, чтобы проверить, есть ли такой файл в системе. Причем, если нужно зачем-то отмечать, от кого именно блок этого id - в сам файл записывать эту информацию. На проверку наличия файла это никак не влияет, а если нужна расширенная информация - она есть в самом файле. И, собственно, все.
Sanek0929 :
новый вид мошенечества 
Этому "новому" виду - уже сто лет в обед. Выше верно написали, иногда, если есть желание, можно сделать несколько задач и получить на виртуалку пару сотен рублей. А дальше слиться. Но, в целом, проще сразу заблочить контакт и не морочить себе голову.
Kamysh #:

И такой вопросик: то, что они предлагают - реклама в самом начале, такое разрешено ютубом или за это что-нибудь может прилететь?

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

serval #:
Что за проблемы?
Спам, постоянно требуемая модерация, отсутствие контента, если контент есть, то он выражается в коротких и, зачастую, глупых вопросах, на которые нужно давать ответы, чтобы форум жил. Кроме прочего, если тема форума проходная, что-то по типу вопрос-ответ, то сформировать ядро постоянных посетителей будет крайне трудно, многие приходят, регаются, задают один вопрос, получают или нет ответ - и больше никогда не возвращаются. Выше верно все сказали, юзеры перетекли в группы социалок и то, даже там, админы постят день и ночь, чтобы клиент не растекался. Ну и, кстати, в группы мессенджеров даже больше ушло, чем в социалки, мне кажется. Короче, форумы могут жить, факт, но для этого надо попыхтеть и найти нишу, которая важна, нужна и максимально популярна и потом еще побороться под Солнцем с теми, кто давно в этой нише. Как обычно, в общем )
У адсенса можно вызывать рекламу не прямым кодом на странице, а вызовом в теле функции или вложенном js-файлике? Если да, то сделать небольшую javascript обертку, которая будет проверять метку в url и вызывать тот или иной блок, который будет назначен тому или иному автору. А уже по блокам смотреть и делить доход.
Всего: 1471