powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как хранить миллионы файлов размером меньше 40-90 байт?
25 сообщений из 58, страница 2 из 3
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334789
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эээ... Может быть, на внешнем диске?
С подобранными опытным путём ФС, кластером и прочее.

А если их объединять по к.-н. признаку (а-ля дата, клиент)
в один большой txt или bin файл "с разделителями-метаданными"?

Ну, приблуду написать, которая бы их склеивала по расписанию и выдавала on demand.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334810
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле я искал решение на подобии того о чём написал miksoft .

Процитирую свой первый поста (а то тема ушла в сторону от моего вопроса):
Может есть какие-то виртуальные хранилища (виртуальные диски) которые расчитаны именно на хранение большого количества мелких файлов? Или работающие с архивом как с диском? (пусть даже в ущерб скорости)

И ещё раз повторюсь - единственная пока идея которая у меня была в мыслях - это использовать сжаты образы.
Можно сделать образ диска в .ISO, а у UltraISO есть режим - "Опция сжать ISO". Полученный образ будет иметь расширение .ISZ.
Но я не смогу дописать файлы в такой фал :(
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334815
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПроцитирую свой первый поста (а то тема ушла в сторону от моего вопроса):

Ты лучше процитируй в чём твоя проблема. В занимаемом месте или медленной работе?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334821
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky,

а почему вы не хотите использовать СУБД под эту задачу?
и экономия места будет, и всякие дополнительные плюшки появятся...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334862
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftа почему вы не хотите использовать СУБД под эту задачу?
и экономия места будет, и всякие дополнительные плюшки появятся...
Как человек более 13 лет работающий с MySQL, я первым же делом перегнал все данные в базу данных. И если мне самому среди этих 10 миллионов надо найти какие-нибудь данные (по содержимому или по дате или по названию) - я ищу в базе данных...
Но программа-обработчик работает только с физическими файлами (это я говорил в первом посте).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334865
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GatorЭээ... Может быть, на внешнем диске?
С подобранными опытным путём ФС, кластером и прочее.

А если их объединять по к.-н. признаку (а-ля дата, клиент)
в один большой txt или bin файл "с разделителями-метаданными"?

Ну, приблуду написать, которая бы их склеивала по расписанию и выдавала on demand.

Очень не хотелось бы упираться в железо и брать отдельные диски только для хранения файлов. Думал что есть виртуальные контейнеры. Но народ здесь вроде как написал что под Windows есть тоже самое как под UNIX, но названия не прозвучало...

А если держать всё соединённом в файле (у меня сейчас паралельно в базе данных хранится) а потом в нужный для программы период это опять превращать в физические файлы - то будет уходить жутко много времени на самих дисковых операциях. Попробуй удалить 10 тысячь файлов - это пол минуты займёт, а объём-то всего в пол мегабайта.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334872
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovТы лучше процитируй в чём твоя проблема. В занимаемом месте или медленной работе?
А зачем цитировать второй раз? Я ведь говорил - проблема в занимаемом месте и медленном формировании списка файлов. Если заходим в архив, то список создаётся тысячекратно быстрей. Ну и тоже самое если скажем данные перекидываю на SSD (причём у меня ХР, по этому потоковая скорость чтения с SSD OCZ Vertex 3 составляет всего 35Мб/с, но за счётс нулевой скорости доступа - просто летаю), следовательно и если данные хранились бы в каком-нибудь контейнере - скорость тоже была многократно выше.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334882
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyЯ ведь говорил - проблема в занимаемом месте и медленном формировании
списка файлов. Если заходим в архив, то список создаётся тысячекратно быстрей. Ну и тоже
самое если скажем данные перекидываю на SSD (причём у меня ХР, по этому потоковая скорость
чтения с SSD OCZ Vertex 3 составляет всего 35Мб/с, но за счётс нулевой скорости доступа -
просто летаю)
Ну вот видишь: скорость решается переходом на SSD. А объём... Миллион файлов по 4к каждый
это четыре гигабайта. Десять миллионов файлов это всего 40 гигабайт. На твоём "OCZ Vertex
3" это не больше половины свободного объёма. Повторяю: в чём проблема-то?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334890
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky, Собственно, я предлагал своеобразную "буферизацию"

Т.е. не плодить много мелких "входящих" файлов.
А периодически или по количеству (FileNotification) грузить их в хранилище:
- БД (miksoft) - много "служебной MySQL" инфы для каждого файлика, даже если он в varbinary)
Зато плюшки SQL и можно легко раскидать метаинфу по полям.

- Склеивать файлики в несколько больших файлов с "разделителями файликов"
Места будет меньше, но не будет плюшек SQL. Только последовательный поиск.

AFAIU основная проблема - отдать файлики ИЗ хранилища.
По сколько за раз?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334892
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В порядке легкого бреда - видел я где-то туториал по системному программированию под Windows на примере написания своего драйвера файловой системы. Вот его и написать, а вместо физического хранения пусть в MySQL лазит :)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334901
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А если замапить на внeшний сторож, типа ZFS/FreeNAS через smb?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334905
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Relic HunterА если замапить на внeшний сторож, типа ZFS/FreeNAS через smb?Тогда уж на тот самый архив примонтированный в линуксе (например, в виртуалке).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334916
Фотография Relic Hunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftТогда уж на тот самый архив примонтированный в линуксе (например, в виртуалке).Дак я о том-же. Ставим FreeNAS под vmware. Мапим диск...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334949
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
К сожалению пока единственный толковым предложением из всей ветки было про WM c линусом...
Но не ужели ничего подобного под винду нету?

Ну нету желания ради этого отдельный диск (тем более SSD) покупать.
Всякими драйверами типа STACKER ещё в 1993-ем году пользовался, которые под DOS'ом виртуальный диск с компрессией из файла делали. Не ужели за 20 лет не продвинулась тема?

А по поводу собственного файла контейнера - это конечно оптимальнейший способ с точки зрения экономи пространства, но ещё раз повторю - превращать блоки информации в файлы, это гиблое дело по времени (даже без учёта того что под это придётся софт писать). Просто зайди у себя в папку c:\document and settings\user\cookies и посмотри сколько она открывается (а у тебя там и 10 тысячь файлов нету), а потом попробуй её стереть... А теперь представь что из 10 миллионов...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334957
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyВсякими драйверами типа STACKER ещё в 1993-ем году пользовался, которые под DOS'ом виртуальный диск с компрессией из файла делали. Не ужели за 20 лет не продвинулась тема?Сейчас жив близкий класс ПО - шифрованные диски ( TrueCrypt и прочие ).
Возможно, что-нибудь из них вам подойдет.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38335011
Damien
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky(тем более SSD) покупать

не "тем более", а - только SSD
Они как раз нужны там, где работа идет с множеством мелких файлов. Скорость работы в таких условиях - как минимум на порядок выше, чем на HDD. Или, приобретение нового диска - обрушит годовой бюджет организации?
Другие, может еще и к RAM-дискам присмотрелись бы, для доведения скорости до максимальной.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38335019
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftСейчас жив близкий класс ПО - шифрованные диски ( TrueCrypt и прочие ).
Возможно, что-нибудь из них вам подойдет.Так там же весь смысл в шифровании, а "унутре" - та же самая "обычная" ФС (ntfs, например). Чем это ТСу может помочь?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38335057
Мишган-кабанчик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А чем, автора не устраивает vhd-диск положенный на ntfs-том с сжатием?
2008, Win7 такое умеют - гугл знает.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38335095
Vladimir Baskakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНо программа-обработчик работает только с физическими файлами (это я говорил в первом посте).
всеми сразу? может ей пакет ссыпать из базы, обработать и назад всосать? это раз.
Сколько стоит ее замена. Что такого суперуникального она делает?Если это все распарсено и лежит грудой в удобной базе?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38335265
Guest_otorva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
InterSky, а как именно программа работает с файлами? Если имя файла передается ей в качестве параметра в командной строке, то несложно написать оболочку, которая будет извлекать данные из СУБД, формировать файл и подсовывать вашей программе. Если программа открывает файл через GUI, можно опять-таки извлекать из СУБД необходимый набор файлов и подсовывать его программе. Аналогичные действия можно выполнять при создании таких файлов, т.е. после создания файла программой с помощью оболочки записывать его в СУБД.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38335310
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tanglirmiksoftСейчас жив близкий класс ПО - шифрованные диски ( TrueCrypt и прочие ).
Возможно, что-нибудь из них вам подойдет.Так там же весь смысл в шифровании, а "унутре" - та же самая "обычная" ФС (ntfs, например). Чем это ТСу может помочь?"Унутре" там один файл-контейнер.
По крайней мере, обслуживающие операции (скопировать/перенести/удалить) можно будет выполнять с одним файлом, а не с миллионами.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336008
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Расскажу вначале что нового у меня за эти сутки (думаю будет очень интересно тем кто собирается иметь много мелких файлов).

Начну с того что в поисках контейнеров я наткнулся на ImDisk Virtual Disk Driver .
Программа бесплатная и занимает 300кб, по этому решил попробывать.
Стало гораздо легче контролировать занимаемые размеры...
Напомню что тестирую на одном каталоге в котором 8000 текстовых файлов размером 40-90 байт. Сам каталог занимает 508кб, при этом виндоус говорит что физически на диске занимает 34Мб, однако как вчера выяснилось - физически занимает чуть больше 10Мб.

Теперь просто расскажу тезисно что меня удивило в ходе тестов:

1) Изначально создал контейнер размером 5Мб - в него вместилось 1900 файлов.
Увеличил контейнер до 10Мб - в него поместилось более 6000 файлов.
Тоесть не пропорционально.
Всё влезло только в контейнер размером 13Мб (именно с ним дальше и проводились все экперементы)
При этом практически никакой разницы от размера кластера: 512 или 4096 байт
Если кластер 512 байт - то после заполнения остаётся 268кб свободного места.
Если кластер 4096 байт - то после заполнения остаётся 280кб свободного места.
Значит прав Basil A. Sidorov , говоря что Файлы размером до, примерно, полутора килобайт NTFS хранит прямо в каталожной записи.

2) Вчера на предложение пользователя k-nike поставить в виндоусе галочку "Сжимать данные" я говорил что это ни как не влияет (свободное место не увеличилось ни на байт). Хотя пользователь Dimitry Sibiryakov говорил что Винда не дура, она объедки в один кластер свалит.
На самом деле оказалось НАОБОРОТ!
Если ставить галочку на существующий каталог - то действительно изменений нет (очевидно виндоус просто видит что лучше не будет и не трогает файлы)
Но ситуация меняется если я вначале создам каталог, поставлю ему галочку "Сжимать данные" и потом начну копировать туда файлы (или сразу при формате скажу что этот диск со сжимаемыми данными).
Вы думаете будет больше свободного места? Нет! Всё наоборот.
В контейнер размером 13Мб влезает всего 1300 файлов (если размер кластера 512 байт).
В контейнер размером 13Мб влезает всего 180 файлов (если размер кластера 4096 байт).
После этого Total Commander говорит что диск переполнен.
Однако если мы после этого будем нажимать на кнопку "Обновить", то увидим, что свободное место на диске в течении 5 секунд будет увеличиваться и с нуля байт поднимется до 9Мб, после чего можно опять дописывать файл (он опять скажет что место кончилось, потом ждём 5-7 секунд и дописываем файлы).
Предпологаю что когда идёт копировани в область где данные должны сжиматься - виндоус налету пытается сжимать файлы что связано с выделением под это дело дополнительных объёмов или дописывания специальных шапок. Но после того как копирование прекратилось, у виндоуса появляется возможноть работы над ошибками, он проверяет что записал и понимает что там небыло смысла сжимать и возвращает файлы к первоначальной форме или освобождает зарезервированное пространство (удивительно что ему на это надо более 5 секунд).

3) Если на диск 13Мб записать 8000 файлов и удалить их, то на диске останется только 3Мб свободного места! (в не зависимости от размера кластера). Туда можно будет опять записать эти 8000 файлов (поскольку они занимают всего 508кб) но записать файл размером 4Мб туда уже не выйдет (тотал коммандер скажет что нет свободного места).
Я попробывал сделать полное заполнение свободного места через разбиение на части (которое есть в тотал коммандере) и оно создало только 2 файла - один на 3Мб, второй 0 байт. Удаляешь их, и видим что диск пустой, свободно 3Мб из 13Мб.
Если зайти на диск через Auslogics Disk Defrag Professional, то видишь что там есть:
$MFT - 8Mb
$MFT::BITMAP - 1Kb
$LogFile - 2Мб

3)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336029
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftInterSkyВсякими драйверами типа STACKER ещё в 1993-ем году пользовался, которые под DOS'ом виртуальный диск с компрессией из файла делали. Не ужели за 20 лет не продвинулась тема?Сейчас жив близкий класс ПО - шифрованные диски (TrueCrypt и прочие).
Возможно, что-нибудь из них вам подойдет.
В этом плане мой ImDisk (Virtual Disk Driver) оказался гораздо лучше, потому что он ничего не шифрует и если взглянуть на соедержимое самого контейнера, то он состоит из пустот и текста, тоесть сам контейнер можно по крайней мере сжать как средствами виндоуса (и тогда он "На диске" занимает 3Мб вместо 13Мб), так и заархивировать при переносе и тогда он занимает вообще около 1Мб. Тоесть это уже прогресс в плане занимаемого места.
В то время как контейнер шифрованного диска уже не сжать...

Но просто домумал - Если фриварные контейнеры занимают 300кб, неужели никто за столько лет не повторил аналог STACKER?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336040
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyТеперь просто расскажу тезисно что меня удивило в ходе тестов:

Если уж начал экспериментировать, то попробуй ещё и это: http://habrahabr.ru/post/46935/
Напихай все свои файлы в один.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336052
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyНачну с того что в поисках контейнеров я наткнулся на ImDisk Virtual Disk Driver.На оригинальном сайте (на который там есть ссылочка) лежит версия посвежее.

Кстати, там рядом рекламируется DAEMON Tools Lite. Он много форматов образов поддерживает. Из них ничего не подойдет?
...
Рейтинг: 0 / 0
25 сообщений из 58, страница 2 из 3
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как хранить миллионы файлов размером меньше 40-90 байт?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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