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

Получается два неприятных момента:
1) огромная потеря пространства (кластер ведь 4кб), в файлы всего по несколько байт
2) очешь большое количество самих файлов (и винда начинает очень медленнл работать с ними)

Размер кластера конечно можно уменьшеить до 512, но и это не панацея, ведь файлы в 10 раз меньше кластера. Да и диск 4Тб с кластерами 512 байтов съест ещё больше пространства для таблицы размещения (за счёт десятикратного увеличения маленьких кластеров).

Если попытаться заархивировать этот объём, он пространства становится почти в 1000 раз больше. Это логично, потому что пока кластер в 100 раз больше самих файлов и потом ещё сама архивация (а файлы текстовые и одинаковой структуры). Но чтобы заархивировать такое количество - надо больше суток...

Может есть какие-то виртуальные хранилища (виртуальные диски) которые расчитаны именно на хранение большого количества мелких файлов? Или работающие с архивом как с диском? (пусть даже в ущерб скорости)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334416
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSky1) огромная потеря пространства (кластер ведь 4кб), в файлы всего по несколько байтФайлы размером до, примерно, полутора килобайт NTFS хранит прямо в каталожной записи.2) очешь большое количество самих файлов (и винда начинает очень медленнл работать с ними)Только разбрасывать по подкаталогам.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334422
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyвинда начинает очень медленнл работать с ними
Какие именно операции с ними становятся медленными? Уж не вывод ли на экран полного списка?..
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334474
Фотография k-nike
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может подойдет сжатие папки?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334481
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovКакие именно операции с ними становятся медленными? Уж не вывод ли на экран полного списка?..Создание файлов - тоже.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334483
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovФайлы размером до, примерно, полутора килобайт NTFS хранит прямо в каталожной записи.
Я первый раз такое слышу. Но если глянуть на параметры папки скажем из 8000 таких файлов, то видим:
Размер: 508 КБ (520 678 байт)
На диске: 34.0 МБ (35 753 984 байт)


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

После появления такого количества файлов на компьютере считай что он стал недееспособным:
Антивирусу надо 52 часа чтобы проверить диск.
Заход в папку где около 10 тысячь файлов - занимает около 5 секунд.
Конечно когда у тебя есть путь до файла - то файл откроешь моментально, но ведь чтобы получить путь - программе надо открыть папку (хоть всё и так разнесено на папаки по несколько тысячь файлов)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334494
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyЯ первый раз такое слышу. Но если глянуть на параметры папки скажем из 8000 таких файлов, то видим:
Размер: 508 КБ (520 678 байт)
На диске: 34.0 МБ (35 753 984 байт)Это эвристика.
Спросите чекиста - он лучше разбирается, что чем занято.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334495
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
k-nikeМожет подойдет сжатие папки?
Нет! Файл даже если и сожмётся - всё равно будет занимать по 1 кластеру на файл (ни одного байта не выигрыешь из-за сжатия).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334510
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСоздание файлов - тоже.
За счёт чего? ЕМНИП, в NTFS каталог это двоичное дерево, стоимость операции log2(N).

InterSkyФайл даже если и сожмётся - всё равно будет занимать по 1 кластеру на файл

Да щаззз же. Винда не дура, она объедки в один кластер свалит.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334520
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСпросите чекиста - он лучше разбирается, что чем занято.
Не совсем понял. Это ведь не про CHKDSK говорите?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334529
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
========================================
fsutil fsinfo ntfsinfo c:
  Байтов на кластер:                4096
  Байтов на сегмент FileRecord:     1024
========================================
  23719716 КБ в 112475 файлах.
     66292 КБ в 36892 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93164616 КБ свободно на диске.
         ===============================
Создали: 10001 файлов        680068 байт
         ===============================
  23726548 КБ в 122478 файлах.
     68340 КБ в 36893 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93155736 КБ свободно на диске.


Разница в свободном месте - менее девяти мегабайт, а вовсе не сорок.
Из этих "менее девяти" - два мегабайта на подросшие индексы.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334538
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterSkyФайл даже если и сожмётся - всё равно будет занимать по 1 кластеру на файл

Да щаззз же. Винда не дура, она объедки в один кластер свалит.

Я проверил перед тем как писать!
Нету выигрыша ни на 1 байт!
С какого перепуга она вдруг должна несколько файлов в один кластер сваливать? Просто компрессирует файлы, но хранятся они как прежде...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334540
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЗа счёт чего? ЕМНИП, в NTFS каталог это двоичное дерево, стоимость операции log2(N).Короткие имена тоже не должны совпадать, а это уже полное сканирование.

P.S. Даже если создание коротких имён отключено на уровне файловой системы, они всё равно могут и (уже) быть и (дополнительно) создаваться. "fsutil file setshortname", например.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334542
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyЭто ведь не про CHKDSK говорите?Про него, родимого.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334549
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПросто компрессирует файлы, но хранятся они как прежде...Не как прежде - пространство под сжатые файлы выделяется посекторно. Что, собственно, и приводит к бешеной фрагментации.
Не помню только - выравнивается ли сжатый файл на границу кластера.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334571
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
========================================
fsutil fsinfo ntfsinfo c:
  Байтов на кластер:                4096
  Байтов на сегмент FileRecord:     1024
========================================
  23719716 КБ в 112475 файлах.
     66292 КБ в 36892 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93164616 КБ свободно на диске.
         ===============================
Создали: 10001 файлов        680068 байт
         ===============================
  23726548 КБ в 122478 файлах.
     68340 КБ в 36893 индексах.
    266655 КБ используется системой.
     65536 КБ занято под файл журнала.
  93155736 КБ свободно на диске.


Разница в свободном месте - менее девяти мегабайт, а вовсе не сорок.
Из этих "менее девяти" - два мегабайта на подросшие индексы.

Не совсем понял как получить такую интересную информацию?
У меня получилось только:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
c:\Архив\101\23\96\77>fsutil fsinfo ntfsinfo c:

Серийный номер тома NTFS:         0xd86cc1426cc11bde
Версия:                           3.1
Число секторов:                   0x000000000995c65a
Всего кластеров:                  0x000000000132b8cb
Свободных кластеров:              0x0000000000030feb
Всего зарезервировано:            0x0000000000000000
Байт на сектор:                   512
Байт на кластер:                  4096
Байт на сегмент FileRecord:       1024
Кластеров на сегмент FileRecord:  0
Допустимая длина данных MFT:      0x000000000c41c000
Начальный LCN таблицы MFT:        0x00000000000c0000
Начальный LCN таблицы MFT2:       0x0000000000995c65
Начало зоны таблицы MFT:          0x0000000000b1ee00
Конец зоны таблицы MFT:           0x0000000000b1f640
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334581
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyНе совсем понял как получить такую интересную информацию?Я же сказал - чекист.
Просто убрал из вывода chkdsk несущественные подробности.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334585
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovНе как прежде - пространство под сжатые файлы выделяется посекторно.
Посекторно или покластерно? Сектор-то 512 байт, а кластер 4кб.
Но ещё раз повторюсь - я реально компресанул несколько папок - и не освободился ни один байт (если берёшь папки где файлы размером по 20-30кб - там сразу идёт увеличение свободного дискового пространства).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334610
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПосекторно или покластерно?Посекторно.Сектор-то 512 байт, а кластер 4кбМожет быть и четыре на четыре :)Но ещё раз повторюсь - я реально компресанул несколько папок - и не освободился ни один байтИ не мог - мелкий файл уже "упакован" в (собственную) каталожную запись.

P.S Другой пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  23731812 КБ в 112489 файлах.
     66292 КБ в 36894 индексах.
    267679 КБ используется системой.
     65536 КБ занято под файл журнала.
  93151496 КБ свободно на диске.
         =================================
Создано: 100000 файлов              0 байт
         =================================
  23736156 КБ в 212489 файлах.
     87028 КБ в 36894 индексах.
    354227 КБ используется системой.
     65536 КБ занято под файл журнала.
  93039868 КБ свободно на диске.

"Ноль байт" заняли более ста мегабайт :)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334611
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Интересно, а в Windows нет способа примонтировать файл архива как диск/каталог?
В линуксе такое с оговорками, но достижимо.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334612
Фотография Роман Дынник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyМожет есть какие-то виртуальные хранилища (виртуальные диски) которые расчитаны именно на хранение большого количества мелких файлов? Или работающие с архивом как с диском? (пусть даже в ущерб скорости)
hadoop-based решения не рассматриваете? hdfs как распределенную файловую систему или другие аналоги?
Но это будет за пределами одного хоста.
Что вы делаете с этими файлами? Осуществляется ли по ним поиск и т п?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334614
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИнтересно, а в Windows нет способа примонтировать файл архива как диск/каталог?
В линуксе такое с оговорками, но достижимо.Есть. Тоже с оговорками ;)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334777
Фотография Gator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftИнтересно, а в Windows нет способа примонтировать файл архива как диск/каталог?
В линуксе такое с оговорками, но достижимо.ZIP?
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38334786
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovP.S Другой пример:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
  23731812 КБ в 112489 файлах.
     66292 КБ в 36894 индексах.
    267679 КБ используется системой.
     65536 КБ занято под файл журнала.
  93151496 КБ свободно на диске.
         =================================
Создано: 100000 файлов              0 байт
         =================================
  23736156 КБ в 212489 файлах.
     87028 КБ в 36894 индексах.
    354227 КБ используется системой.
     65536 КБ занято под файл журнала.
  93039868 КБ свободно на диске.

"Ноль байт" заняли более ста мегабайт :)

По большому счёту тут нет ничего удивительного - ведь файл это не только РАЗМЕР, но и название, и атрибуты...
Я тут потестировал и получилось следующее:
Мои 8000 файлов размером 40-90 байт уменьшают свободное место на диске на 10290Кб, грубо говоря на 10Мб (проверял через CHKDSK).
Эти цифры практически совпали с тем эксперементом когда Basil A. Sidorov создал 10001 файл размером 1 байи (у него свободное место уменьшилось на 9Мб)
Напомню что Проводник говорил:
Размер: 508 КБ (520 678 байт)
На диске: 34.0 МБ (35 753 984 байт)

Хотя дальше я наткнулся на необъяснимую ситуацию: Я написал небольшой скрипт, который увеличил размер каждого файла в 2 раз (просто открывал файл и два раза копировал его в самого себя).
В результате мои 8000 стали весить не 508 КБ, а 0.99 МБ (так написал Проводник, ведь в одном Мб у нас 1024Кб)
Я ожидал что такая папку будет занимать не 10Мб, а на пол мегабайта больше (так как имя файла и атрибуты не изменились, а объём вырос на пол мегабайта. Однако чекдиск показал мне что дисковое пространство уменьшилось всего на 3928Кб (4Мб).
Я удивился и для чистоты экперемента даже форматнул диск. Но и повторная проверка (запускаю чекдиск, копирую, запускаю чекдиск) опять показала такие же цифры - 3928Кб. Почему увеличение файлов в 2 раза привело к УМЕНЬШЕНИЮ занимаемого пространства - я не полнял.

Ну и ещё раз подтвержу: сжатие файлов средством операционной системы не изменило свободное место ни на 1 байт. Пытался и директорию сжимать (это моментально происходило), и выделял в ней все файлы (тогда в течении минуты он визуально как бы каждый файл сжимал). Разници небыло никакой...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 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
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336057
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Vladimir BaskakovавторНо программа-обработчик работает только с физическими файлами (это я говорил в первом посте).
всеми сразу? может ей пакет ссыпать из базы, обработать и назад всосать? это раз.
Сколько стоит ее замена. Что такого суперуникального она делает?Если это все распарсено и лежит грудой в удобной базе?

и

Guest_otorvaInterSky, а как именно программа работает с файлами? Если имя файла передается ей в качестве параметра в командной строке, то несложно написать оболочку, которая будет извлекать данные из СУБД, формировать файл и подсовывать вашей программе. Если программа открывает файл через GUI, можно опять-таки извлекать из СУБД необходимый набор файлов и подсовывать его программе. Аналогичные действия можно выполнять при создании таких файлов, т.е. после создания файла программой с помощью оболочки записывать его в СУБД.

Ребята, ну я же уже 3 раза писал об этом выше... Создание/удаление файлов дико тяжолая операция с точки зрения операционной системы. Жутко не выгодно создавать ту область файлов которая нужна программе. Я вначале должен придумать что программа запросит, создать это, а потом войти и запросить в ней тоже самое. А из результатов хочу перейти в анализ по одному параметру, и опять заходишь в свою программу и делаешь чтобы программа несколько минут создавала файлы нужные файлы.
Это не говоря о том что тогда надо изучить какие файлы использует программа для анализа, какие для контроля целостности информации...

Да - Можно купить новый SSD под каждую машину где стоит такая программа...
Да - Можно нанаять программистов которые изучат как работает программа и создадут аналог который работает с MySQL.
А можно просто найти сжимающиеся контейнеры (если они есть под линуксом, то и под виндой должны быть), просто я понимаю из тех кто принял участие в дискуссии никто с такими не работал (хотя я упомянул о STACKER под MS DOS, и о .ISZ от UltraISO)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336065
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyДа - Можно купить новый SSD под каждую машину где стоит такая программа...

А купить один SSD на файловый сервер? Программа может стоять где угодно, файлы не обязаны
быть рядом с ней.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336077
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мишган-кабанчикА чем, автора не устраивает vhd-диск положенный на ntfs-том с сжатием?
2008, Win7 такое умеют - гугл знает.
О, похоже я уже реализовал и описал выше твою идею, взяв ImDisk Virtual Disk Driver и указав виндоусу что контейнер должен сжиматься. Хотя почитав в википедии про vhd-диск я не встретил упоминание о ImDisk (которая работает и на ХР).
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336094
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyпочитав в википедии про vhd-диск я не встретил упоминание о ImDiskЛогично, они друг к другу никакого отношения не имеют.
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336097
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovInterSkyДа - Можно купить новый SSD под каждую машину где стоит такая программа...

А купить один SSD на файловый сервер? Программа может стоять где угодно, файлы не обязаны
быть рядом с ней.


И опять упираемся в железо... Каждому клиенту покупаем по файловому серверу или проводим им интернет чтобы они могли соединиться с главным файловым сервером... Зачем траты когда наверняка всё решается простенькой програмкой...

Что самое интересное - когда несколько лет назад в разделе "Hardware" задавал вопрос - "Какой SSD диск взять чтобы ускорить работу программы?", то народ наоборот придумывал 1000 аргументов дескать нафиг железом ускорять когда можно программами. А в этом разделе наоборот. Загадочные люди... :)
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336104
InterSky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftInterSkyНачну с того что в поисках контейнеров я наткнулся на ImDisk Virtual Disk Driver.На оригинальном сайте (на который там есть ссылочка) лежит версия посвежее.

Кстати, там рядом рекламируется DAEMON Tools Lite. Он много форматов образов поддерживает. Из них ничего не подойдет?

Я тоже думал какую ссылку тут дать оригинальную (где мне ничего не понятно) или на русский сайт где в двух предложениях объясняется что это за продукт и что он делает. Всё же чувствуется что это не коммерческое ПО - они не стараются заинтересовать своей программой тех кто заходит им на сайт...

А про DAEMON Tools - он у меня стоит. Но он не создаёт контейнеры, а лишь работает с ними. Тоесть заранее надо знать что именно может дать тебе то что (это я уже наверно третий раз говорю о формате "сжатого .ISO" под расширением .ISZ)
Буду пытаться, искать, перебирать...
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336114
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyнаоборот придумывал 1000 аргументов дескать нафиг железом ускорять когда
можно программами.
Очевидно, ты там забыл упомянуть, что ты не программист, и исходников программы нет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как хранить миллионы файлов размером меньше 40-90 байт?
    #38336165
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
InterSkyПочему увеличение файлов в 2 раза привело к УМЕНЬШЕНИЮ занимаемого пространства - я не полнялПроцитирую себя, любимого и выделю ключевые слова:Из этих "менее девяти" - два мегабайта на подросшие индексы Если индекс смог вырасти, то почему бы ему не смочь уменьшиться?
Вы точно все числа сравнили?
...
Рейтинг: 0 / 0
58 сообщений из 58, показаны все 3 страниц
Форумы / Windows [игнор отключен] [закрыт для гостей] / Как хранить миллионы файлов размером меньше 40-90 байт?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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