Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Хранить тысячи сообщения длиной 1kб в файловой системе. / 25 сообщений из 37, страница 1 из 2
17.01.2013, 13:19
    #38113801
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Сколько времени я протяну хранить сообщения весом 1кб в файловой системе NTFS, организуя их в дерево каталогов, где один каталог содержит максимально 1000 каталогов или файлов, а индекс - в виде текстового файла в корне, переписываемого заново при добавлении нового сообщения? В день поступает где-то 400 новых сообщений, файл индекса весит 8 МБ.

Например сообщение номер 76123 хранится в файле 0/76/76123.txt - простой алгоритм поиска.

Доступ к хранящимся сообщениям очень редкий, в основном вида "пройтись по всем раз в день".

Это первая реализация, макет. Достаточно переделать класс хранения данных и всё уйдёт в СУБД, но стоит ли? Может пока забить?
...
Рейтинг: 0 / 0
17.01.2013, 13:38
    #38113861
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Школа с философским уклоном.Достаточно переделать класс хранения данных и всё уйдёт в СУБД, но стоит ли?Раз сообщения - то текстовые. Думаю, стОит перейти на СУБД, и хранить это дело в каком-нить TEXT(1024).

Всё зависит от того, что разумеется под "пройтись по всем раз в день". Проверить наличие? просуммировать номера? найте те, в которых имеется определённый текст? что-то ещё? В любом случае СУБД выполнит такую задачу ПО МАССИВУ СООБЩЕНИЙ эффективнее, чем программный итеративный код, постоянно дёргающий файловую систему. А ведь на эффективность выполнения этой задачи в рамках СУБД можно влиять, и очень сильно!
...
Рейтинг: 0 / 0
17.01.2013, 13:42
    #38113864
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
AkinaШкола с философским уклоном.Достаточно переделать класс хранения данных и всё уйдёт в СУБД, но стоит ли?Раз сообщения - то текстовые. Думаю, стОит перейти на СУБД, и хранить это дело в каком-нить TEXT(1024).

Всё зависит от того, что разумеется под "пройтись по всем раз в день". Проверить наличие? просуммировать номера? найте те, в которых имеется определённый текст? что-то ещё? В любом случае СУБД выполнит такую задачу ПО МАССИВУ СООБЩЕНИЙ эффективнее, чем программный итеративный код, постоянно дёргающий файловую систему. А ведь на эффективность выполнения этой задачи в рамках СУБД можно влиять, и очень сильно!
Пройтись раз в день означает тупо слить всё содержимое, начиная с индекса, на котором остановились вчера, в один большой файл для выдачи наружу.
...
Рейтинг: 0 / 0
17.01.2013, 14:12
    #38113954
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Думаю, это как раз задача, которую СУБД выполнит эффективнее, чем код, работающий с мелочью в файловой системе.
...
Рейтинг: 0 / 0
17.01.2013, 16:43
    #38114268
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Школа с философским уклоном.а индекс - в виде текстового файла в корне, переписываемого заново при добавлении нового сообщенияДумаю, что на этом вы и засыпетесь.
А так, NTFS - вполне надёжная файловая система. Мы пару раз наступали на грабли вида "пользователи не могут сохранять файлы" - на диске оставалось 4Кб свободного места, расчищался мусор и всё ехало дальше.
...
Рейтинг: 0 / 0
17.01.2013, 16:55
    #38114282
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Школа с философским уклоном.Доступ к хранящимся сообщениям очень редкий, в основном вида "пройтись по всем раз в день".
Для любой БД на файлах есть over 9000 способов придумать как складывать и хранить данные.
На самом деле при твоей постановке (как выше) абсолютно пофиг как хранить. Можешь
даже в 1 текстовый файл всё слить. А оптимизацией надо заниматься тогда когда ты 100%
знаешь где узкое место или прогнозируешь где оно появиться в будущем.

Дробить всё множество на каталоги вида 0/76/76123.txt тоже нет смысла. Это было
актуально для FAT-систем. В Ntfs ты можешь всё сливать в 1 директорию и скорость
точечного доступа будет такой-же.
...
Рейтинг: 0 / 0
17.01.2013, 17:05
    #38114301
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
maytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же."Ню-ню".
...
Рейтинг: 0 / 0
17.01.2013, 17:08
    #38114308
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Basil A. SidorovmaytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же."Ню-ню".
Нюню - обосновать, все свободны )
...
Рейтинг: 0 / 0
17.01.2013, 17:09
    #38114311
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Basil A. SidorovШкола с философским уклоном.а индекс - в виде текстового файла в корне, переписываемого заново при добавлении нового сообщенияДумаю, что на этом вы и засыпетесь.
А так, NTFS - вполне надёжная файловая система. Мы пару раз наступали на грабли вида "пользователи не могут сохранять файлы" - на диске оставалось 4Кб свободного места, расчищался мусор и всё ехало дальше.
Второе утверждение без обоснований) У вас осталось одно предупреждение (-; (как в анектоде про тёщу). Пейшыте аргументы к утверждениям, пожалуйста.
...
Рейтинг: 0 / 0
17.01.2013, 17:11
    #38114313
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
maytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость
точечного доступа будет такой-же.Увы, при 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой.
...
Рейтинг: 0 / 0
17.01.2013, 17:11
    #38114314
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
miksoftmaytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость
точечного доступа будет такой-же.Увы, при 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой.
Ну речь про точечный доступ, а не про вариант с "особенно".
...
Рейтинг: 0 / 0
17.01.2013, 17:18
    #38114328
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
miksoftmaytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость
точечного доступа будет такой-же.Увы, при 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой.
Не нужно его открывать ничем. Такой задачи не стоит. NTFS хорошо масштабируется
по количеству файлов и для задачи быстрого извлеченяи файла по маршруту
никакого enumerate files не нужно.
...
Рейтинг: 0 / 0
17.01.2013, 17:52
    #38114389
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
miksoftпри 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой.Проводники и прочие гуёвые программы начинают денлать слишком много ненужного, от выцарапывания иконок из файлов и до поиска шареных принтеров по сети "на всякий случай". А вот тупо OpenAsTextStream на каталоге с миллионом файлов отрабатывает достаточно шустро. Правда, один - когда потребуется конкатенировать тысячу файлов, бедный винт башкой обтрясётся...
...
Рейтинг: 0 / 0
17.01.2013, 17:58
    #38114401
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Конечно по хорошему ему нужна СУБД. Но это приходит с пониманием dirty reads и с методами
борьбы с этим явлением в файловой системе. А обычно проектировщики БД на файлах
скипают этот пункт или как-то решают что "проскочит само" или "по заданию" такого никогда
не будет. А жисть - сложная штука...
...
Рейтинг: 0 / 0
17.01.2013, 18:01
    #38114406
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Кроме "точечного доступа" есть ещё и "создать файл".
Который обязан убедиться в уникальности имени.
Деревья, конечно, рулят и всё такое, но даже если создание коротких имён отключено, короткие имена всё равно могут существовать.
...
Рейтинг: 0 / 0
17.01.2013, 18:03
    #38114410
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
У него в день поступает 400 сообщений. Для современных систем - это смешные цифры.
Затык 100% будет в другом. Это идеология. Возможность роста и развития и этот загадочный
файл индекса в 8 Мб который там непонятно зачем и что в нем внутри тоже непонятно.
...
Рейтинг: 0 / 0
17.01.2013, 18:14
    #38114423
Basil A. Sidorov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
maytonУ него в день поступает 400 сообщений. Для современных систем - это смешные цифры.Если "смешная цифра" будет приводить к четырём сотням подвисонов в день по десятку-полтора секунд каждый - это перебор.
Отсюда вопрос - если уж выбрана изначально кривая архитектура, то зачем дополнительно усугблять ситуацию?
Балансировка в дереве каталогов по дате/ключу - вполне нормальная практика.
Можно сказать - проверенная временем и освящённая традициями.
И, что характерно, в ней есть здравый смысл.
...
Рейтинг: 0 / 0
17.01.2013, 18:23
    #38114434
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
maytonКонечно по хорошему ему нужна СУБД. Но это приходит с пониманием dirty reads и с методами
борьбы с этим явлением в файловой системе. А обычно проектировщики БД на файлах
скипают этот пункт или как-то решают что "проскочит само" или "по заданию" такого никогда
не будет. А жисть - сложная штука...
Что за dirty reads? Неблокируемый множественный доступ к одним и тем же данным? Што я, дурак штоле? )
...
Рейтинг: 0 / 0
17.01.2013, 18:25
    #38114436
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
maytonУ него в день поступает 400 сообщений. Для современных систем - это смешные цифры.
Затык 100% будет в другом. Это идеология. Возможность роста и развития и этот загадочный
файл индекса в 8 Мб который там непонятно зачем и что в нем внутри тоже непонятно.
Файл индекса текстовый. В нём на каждой строке содержится идентификатор файла и различная метаинформация для него.
...
Рейтинг: 0 / 0
17.01.2013, 18:26
    #38114437
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Мы использовали подобную технику при разработке XML-хранилищ. Но там был
другой смысл. Это symbolic links на каталоги. Несколько индексов - несколько
подкаталогов с линками. Если автор осилит - то пускай делает.

Но для Xml-storage c over (1.5 млн. документов с индесами) была другая
проблема. Это чистка. И мы ее решали не совсем файловыми операциями.
...
Рейтинг: 0 / 0
17.01.2013, 18:28
    #38114440
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Школа с философским уклоном.Файл индекса текстовый. В нём на каждой строке содержится идентификатор файла и различная метаинформация для него.
Я промолчу. Ничего нельзя сказать без статистики. Что. Сколько. Какая нагрузка.
Без цифр - художественный свист.
...
Рейтинг: 0 / 0
17.01.2013, 18:28
    #38114441
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Basil A. SidorovmaytonУ него в день поступает 400 сообщений. Для современных систем - это смешные цифры.Если "смешная цифра" будет приводить к четырём сотням подвисонов в день по десятку-полтора секунд каждый - это перебор.
Отсюда вопрос - если уж выбрана изначально кривая архитектура, то зачем дополнительно усугблять ситуацию?
Балансировка в дереве каталогов по дате/ключу - вполне нормальная практика.
Можно сказать - проверенная временем и освящённая традициями.
И, что характерно, в ней есть здравый смысл.
Мой "здравый смысл" основывался только на том, чтобы не создавать проблем человеку, который решил зачем-то заглянуть в какой-нибудь каталог проводником. Знаний о том, что происходит при открытии конкретного файла функцией open на Python нет было (например читает ли Python зачем-нибудь список записей в каталоге или не читает, если читает - то лучше пусть он будет покороче). Плюс на память пришло устройство кеша squid - папочки, 00, 01, 02, 03..., fe, ff :)
...
Рейтинг: 0 / 0
17.01.2013, 18:39
    #38114458
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Школа с философским уклоном.Мой "здравый смысл" основывался только на том, чтобы не создавать проблем человеку, который решил зачем-то заглянуть в какой-нибудь каталог проводником.
Если эта разработка будет работать на рабочей станции то человек
должен быть проиструктирован что здесь - хранилище и не стоит туда лазить
просто так из любопытства (dirty reads тоже сюда включим). Короче
это идёт через инструкцию.

Если это сервер то там вобщем-то никто не лазит. И это правильно.
...
Рейтинг: 0 / 0
17.01.2013, 19:05
    #38114476
Школа с философским уклоном.
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
maytonШкола с философским уклоном.Мой "здравый смысл" основывался только на том, чтобы не создавать проблем человеку, который решил зачем-то заглянуть в какой-нибудь каталог проводником.
Если эта разработка будет работать на рабочей станции то человек
должен быть проиструктирован что здесь - хранилище и не стоит туда лазить
просто так из любопытства (dirty reads тоже сюда включим). Короче
это идёт через инструкцию.

Если это сервер то там вобщем-то никто не лазит. И это правильно.
А что за dirty reads? Перевод на русский мне ни о чём не говорит. Какие ёще грязные чтения?
...
Рейтинг: 0 / 0
17.01.2013, 19:15
    #38114488
mayton
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хранить тысячи сообщения длиной 1kб в файловой системе.
Школа с философским уклоном.А что за dirty reads? Перевод на русский мне ни о чём не говорит. Какие ёще грязные чтения?
Можно здесь почитать. Но это так. Мелочи.
Может это и не коснётся твоей системы.

В файловых системах не предусмотрено механизма отката к началу транзакции. Под (Т).
я подразумеваю не файловую операция write(...), fwrite(...) уровня API OS а цельное
логические действие выполняемое твоим приложением. Update статуса для физ-лиц
например. Или какие-то начисления которые надо (!) выполнить 1 раз для каждой записи в выборке.
Например фактически невозможно после сбоя определить дописан файл до конца или нет. DBMS
решает эти возможности коробочно а файловое хранилище не решает никак. Или нужна тотальная валидация
всех файлов в хранилище по своим собственным прикладным (!) неизвестно каким
алгоритмам. Но если у тебя все файлы - R/O то может быть этот артефакт тебе не грозит.
...
Рейтинг: 0 / 0
Форумы / Программирование [игнор отключен] [закрыт для гостей] / Хранить тысячи сообщения длиной 1kб в файловой системе. / 25 сообщений из 37, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]