
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.01.2013, 13:19
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Сколько времени я протяну хранить сообщения весом 1кб в файловой системе NTFS, организуя их в дерево каталогов, где один каталог содержит максимально 1000 каталогов или файлов, а индекс - в виде текстового файла в корне, переписываемого заново при добавлении нового сообщения? В день поступает где-то 400 новых сообщений, файл индекса весит 8 МБ. Например сообщение номер 76123 хранится в файле 0/76/76123.txt - простой алгоритм поиска. Доступ к хранящимся сообщениям очень редкий, в основном вида "пройтись по всем раз в день". Это первая реализация, макет. Достаточно переделать класс хранения данных и всё уйдёт в СУБД, но стоит ли? Может пока забить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 13:38
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Школа с философским уклоном.Достаточно переделать класс хранения данных и всё уйдёт в СУБД, но стоит ли?Раз сообщения - то текстовые. Думаю, стОит перейти на СУБД, и хранить это дело в каком-нить TEXT(1024). Всё зависит от того, что разумеется под "пройтись по всем раз в день". Проверить наличие? просуммировать номера? найте те, в которых имеется определённый текст? что-то ещё? В любом случае СУБД выполнит такую задачу ПО МАССИВУ СООБЩЕНИЙ эффективнее, чем программный итеративный код, постоянно дёргающий файловую систему. А ведь на эффективность выполнения этой задачи в рамках СУБД можно влиять, и очень сильно! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 13:42
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
AkinaШкола с философским уклоном.Достаточно переделать класс хранения данных и всё уйдёт в СУБД, но стоит ли?Раз сообщения - то текстовые. Думаю, стОит перейти на СУБД, и хранить это дело в каком-нить TEXT(1024). Всё зависит от того, что разумеется под "пройтись по всем раз в день". Проверить наличие? просуммировать номера? найте те, в которых имеется определённый текст? что-то ещё? В любом случае СУБД выполнит такую задачу ПО МАССИВУ СООБЩЕНИЙ эффективнее, чем программный итеративный код, постоянно дёргающий файловую систему. А ведь на эффективность выполнения этой задачи в рамках СУБД можно влиять, и очень сильно! Пройтись раз в день означает тупо слить всё содержимое, начиная с индекса, на котором остановились вчера, в один большой файл для выдачи наружу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 14:12
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Думаю, это как раз задача, которую СУБД выполнит эффективнее, чем код, работающий с мелочью в файловой системе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 16:43
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Школа с философским уклоном.а индекс - в виде текстового файла в корне, переписываемого заново при добавлении нового сообщенияДумаю, что на этом вы и засыпетесь. А так, NTFS - вполне надёжная файловая система. Мы пару раз наступали на грабли вида "пользователи не могут сохранять файлы" - на диске оставалось 4Кб свободного места, расчищался мусор и всё ехало дальше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 16:55
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Школа с философским уклоном.Доступ к хранящимся сообщениям очень редкий, в основном вида "пройтись по всем раз в день". Для любой БД на файлах есть over 9000 способов придумать как складывать и хранить данные. На самом деле при твоей постановке (как выше) абсолютно пофиг как хранить. Можешь даже в 1 текстовый файл всё слить. А оптимизацией надо заниматься тогда когда ты 100% знаешь где узкое место или прогнозируешь где оно появиться в будущем. Дробить всё множество на каталоги вида 0/76/76123.txt тоже нет смысла. Это было актуально для FAT-систем. В Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:05
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
maytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же."Ню-ню". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:08
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Basil A. SidorovmaytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же."Ню-ню". Нюню - обосновать, все свободны ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:09
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Basil A. SidorovШкола с философским уклоном.а индекс - в виде текстового файла в корне, переписываемого заново при добавлении нового сообщенияДумаю, что на этом вы и засыпетесь. А так, NTFS - вполне надёжная файловая система. Мы пару раз наступали на грабли вида "пользователи не могут сохранять файлы" - на диске оставалось 4Кб свободного места, расчищался мусор и всё ехало дальше. Второе утверждение без обоснований) У вас осталось одно предупреждение (-; (как в анектоде про тёщу). Пейшыте аргументы к утверждениям, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:11
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
maytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же.Увы, при 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:11
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
miksoftmaytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же.Увы, при 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой. Ну речь про точечный доступ, а не про вариант с "особенно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:18
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
miksoftmaytonВ Ntfs ты можешь всё сливать в 1 директорию и скорость точечного доступа будет такой-же.Увы, при 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой. Не нужно его открывать ничем. Такой задачи не стоит. NTFS хорошо масштабируется по количеству файлов и для задачи быстрого извлеченяи файла по маршруту никакого enumerate files не нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:52
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
miksoftпри 6-значных количествах файлов все становится грустно и печально, я пробовал. Особенно, если вдруг захочется открыть этот каталог проводником или подобной GUI-программой.Проводники и прочие гуёвые программы начинают денлать слишком много ненужного, от выцарапывания иконок из файлов и до поиска шареных принтеров по сети "на всякий случай". А вот тупо OpenAsTextStream на каталоге с миллионом файлов отрабатывает достаточно шустро. Правда, один - когда потребуется конкатенировать тысячу файлов, бедный винт башкой обтрясётся... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 17:58
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Конечно по хорошему ему нужна СУБД. Но это приходит с пониманием dirty reads и с методами борьбы с этим явлением в файловой системе. А обычно проектировщики БД на файлах скипают этот пункт или как-то решают что "проскочит само" или "по заданию" такого никогда не будет. А жисть - сложная штука... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:01
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Кроме "точечного доступа" есть ещё и "создать файл". Который обязан убедиться в уникальности имени. Деревья, конечно, рулят и всё такое, но даже если создание коротких имён отключено, короткие имена всё равно могут существовать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:03
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
У него в день поступает 400 сообщений. Для современных систем - это смешные цифры. Затык 100% будет в другом. Это идеология. Возможность роста и развития и этот загадочный файл индекса в 8 Мб который там непонятно зачем и что в нем внутри тоже непонятно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:14
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
maytonУ него в день поступает 400 сообщений. Для современных систем - это смешные цифры.Если "смешная цифра" будет приводить к четырём сотням подвисонов в день по десятку-полтора секунд каждый - это перебор. Отсюда вопрос - если уж выбрана изначально кривая архитектура, то зачем дополнительно усугблять ситуацию? Балансировка в дереве каталогов по дате/ключу - вполне нормальная практика. Можно сказать - проверенная временем и освящённая традициями. И, что характерно, в ней есть здравый смысл. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:23
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
maytonКонечно по хорошему ему нужна СУБД. Но это приходит с пониманием dirty reads и с методами борьбы с этим явлением в файловой системе. А обычно проектировщики БД на файлах скипают этот пункт или как-то решают что "проскочит само" или "по заданию" такого никогда не будет. А жисть - сложная штука... Что за dirty reads? Неблокируемый множественный доступ к одним и тем же данным? Што я, дурак штоле? ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:25
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
maytonУ него в день поступает 400 сообщений. Для современных систем - это смешные цифры. Затык 100% будет в другом. Это идеология. Возможность роста и развития и этот загадочный файл индекса в 8 Мб который там непонятно зачем и что в нем внутри тоже непонятно. Файл индекса текстовый. В нём на каждой строке содержится идентификатор файла и различная метаинформация для него. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:26
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Мы использовали подобную технику при разработке XML-хранилищ. Но там был другой смысл. Это symbolic links на каталоги. Несколько индексов - несколько подкаталогов с линками. Если автор осилит - то пускай делает. Но для Xml-storage c over (1.5 млн. документов с индесами) была другая проблема. Это чистка. И мы ее решали не совсем файловыми операциями. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:28
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Школа с философским уклоном.Файл индекса текстовый. В нём на каждой строке содержится идентификатор файла и различная метаинформация для него. Я промолчу. Ничего нельзя сказать без статистики. Что. Сколько. Какая нагрузка. Без цифр - художественный свист. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:28
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Basil A. SidorovmaytonУ него в день поступает 400 сообщений. Для современных систем - это смешные цифры.Если "смешная цифра" будет приводить к четырём сотням подвисонов в день по десятку-полтора секунд каждый - это перебор. Отсюда вопрос - если уж выбрана изначально кривая архитектура, то зачем дополнительно усугблять ситуацию? Балансировка в дереве каталогов по дате/ключу - вполне нормальная практика. Можно сказать - проверенная временем и освящённая традициями. И, что характерно, в ней есть здравый смысл. Мой "здравый смысл" основывался только на том, чтобы не создавать проблем человеку, который решил зачем-то заглянуть в какой-нибудь каталог проводником. Знаний о том, что происходит при открытии конкретного файла функцией open на Python нет было (например читает ли Python зачем-нибудь список записей в каталоге или не читает, если читает - то лучше пусть он будет покороче). Плюс на память пришло устройство кеша squid - папочки, 00, 01, 02, 03..., fe, ff :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 18:39
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Школа с философским уклоном.Мой "здравый смысл" основывался только на том, чтобы не создавать проблем человеку, который решил зачем-то заглянуть в какой-нибудь каталог проводником. Если эта разработка будет работать на рабочей станции то человек должен быть проиструктирован что здесь - хранилище и не стоит туда лазить просто так из любопытства (dirty reads тоже сюда включим). Короче это идёт через инструкцию. Если это сервер то там вобщем-то никто не лазит. И это правильно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 19:05
|
|||
|---|---|---|---|
|
|||
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
maytonШкола с философским уклоном.Мой "здравый смысл" основывался только на том, чтобы не создавать проблем человеку, который решил зачем-то заглянуть в какой-нибудь каталог проводником. Если эта разработка будет работать на рабочей станции то человек должен быть проиструктирован что здесь - хранилище и не стоит туда лазить просто так из любопытства (dirty reads тоже сюда включим). Короче это идёт через инструкцию. Если это сервер то там вобщем-то никто не лазит. И это правильно. А что за dirty reads? Перевод на русский мне ни о чём не говорит. Какие ёще грязные чтения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2013, 19:15
|
|||
|---|---|---|---|
Хранить тысячи сообщения длиной 1kб в файловой системе. |
|||
|
#18+
Школа с философским уклоном.А что за dirty reads? Перевод на русский мне ни о чём не говорит. Какие ёще грязные чтения? Можно здесь почитать. Но это так. Мелочи. Может это и не коснётся твоей системы. В файловых системах не предусмотрено механизма отката к началу транзакции. Под (Т). я подразумеваю не файловую операция write(...), fwrite(...) уровня API OS а цельное логические действие выполняемое твоим приложением. Update статуса для физ-лиц например. Или какие-то начисления которые надо (!) выполнить 1 раз для каждой записи в выборке. Например фактически невозможно после сбоя определить дописан файл до конца или нет. DBMS решает эти возможности коробочно а файловое хранилище не решает никак. Или нужна тотальная валидация всех файлов в хранилище по своим собственным прикладным (!) неизвестно каким алгоритмам. Но если у тебя все файлы - R/O то может быть этот артефакт тебе не грозит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1341950]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
148ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
31ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 400ms |

| 0 / 0 |
