Как создать "Дырку в файле"
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 11.10.08 09:25
Оценка:
Задача такая:
Хочу создать кеш доступа к мелким объектам (10-100КБ), чтобы не обращаться к куче мелких файлов.
Объектов будет оч. много (возможно миллионы) и хранение их прямо в базе данных думаю что загнет любую БД.

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

Собственно вопрос — как средствами .NET можно сделать в файле "дырку" в нужном месте.
Желательно кросс-платформенная реализация (прога будет работать на Windows и Linux).
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
Re: Как создать "Дырку в файле"
От: игппук Беларусь  
Дата: 11.10.08 09:43
Оценка:
дырка — это могеж быть последовательность нулей, к примеру. а зачем делать дырку то? без нее нельзя?
проклятый антисутенерский закон
Re: Как создать "Дырку в файле"
От: Pavel M. Россия  
Дата: 11.10.08 10:01
Оценка: +2
Здравствуйте, NovaCxarmulo, Вы писали:

NC>Задача такая:

NC>Хочу создать кеш доступа к мелким объектам (10-100КБ), чтобы не обращаться к куче мелких файлов.
NC>Объектов будет оч. много (возможно миллионы) и хранение их прямо в базе данных думаю что загнет любую БД.

Люди годами взращивают БД, так что стоит сначала в эту сторону поглубже копнуть, тесты, может, сделать. Есть бооооольшие сомнения, что трудозатраты на кэш, работающий лучше БД, себя окупят
--------------------------
less think — do more
Re: Как создать "Дырку в файле"
От: TK Лес кывт.рф
Дата: 11.10.08 18:11
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:

NC>Задача такая:

NC>Хочу создать кеш доступа к мелким объектам (10-100КБ), чтобы не обращаться к куче мелких файлов.
NC>Объектов будет оч. много (возможно миллионы) и хранение их прямо в базе данных думаю что загнет любую БД.

миллион это не то число которое прям так сразу загнет любую базу
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Как создать "Дырку в файле"
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 11.10.08 19:08
Оценка:
Здравствуйте, игппук, Вы писали:

И>дырка — это могеж быть последовательность нулей, к примеру. а зачем делать дырку то? без нее нельзя?


дырка нужна чтобы не занималось дискогое пространство — объектов могут быть миллионы и они будут меняться.
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
Re[3]: Как создать "Дырку в файле"
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.10.08 19:24
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:

NC>Здравствуйте, игппук, Вы писали:


И>>дырка — это могеж быть последовательность нулей, к примеру. а зачем делать дырку то? без нее нельзя?


NC>дырка нужна чтобы не занималось дискогое пространство — объектов могут быть миллионы и они будут меняться.


Я правильно понял, что вы хотите сделать так, чтобы при записи в файл нескольких кусков по смещениям
S1 .. F1;
S2 .. F2;
...
SN .. FN,
диапазоны файла между записанными кусками (F1 .. S2, F2 .. S3, ...) отдавались файловой системе, чтобы не занимать дискового пространства?

Если не правильно, опишите, пожалуйста то, что вы понимаете под дыркой в файле.
Re[4]: Как создать "Дырку в файле"
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 11.10.08 19:29
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, NovaCxarmulo, Вы писали:


NC>>Здравствуйте, игппук, Вы писали:


И>>>дырка — это могеж быть последовательность нулей, к примеру. а зачем делать дырку то? без нее нельзя?


NC>>дырка нужна чтобы не занималось дискогое пространство — объектов могут быть миллионы и они будут меняться.


S>Я правильно понял, что вы хотите сделать так, чтобы при записи в файл нескольких кусков по смещениям

S>S1 .. F1;
S>S2 .. F2;
S>...
S>SN .. FN,
S>диапазоны файла между записанными кусками (F1 .. S2, F2 .. S3, ...) отдавались файловой системе, чтобы не занимать дискового пространства?

S>Если не правильно, опишите, пожалуйста то, что вы понимаете под дыркой в файле.


Да правильно, причем не только при первоначальной записи, но и потом чтобы в процессе устаревания данных можно было бы такие дырки делать в уже существующем файле.
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
Re[5]: Как создать "Дырку в файле"
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.10.08 19:37
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:

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


Боюсь, что вам надо обратиться на форум разработчиков файловых систем и объяснить им, как вам сильно нужны дырки в файлах
И надо будет подкинуть им идею о том, как будет происходить адресация в таких файлах.

З.Ы. Пишите свои файлы либо в BLOB поля, либо прямо на диск (только не в один каталог!) и будет вам счастье! Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.
Re[6]: Как создать "Дырку в файле"
От: Lloyd Россия  
Дата: 11.10.08 19:39
Оценка: 4 (2) +3
Здравствуйте, samius, Вы писали:

S>Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.


Про sparse-файлы не слышали?
Re[7]: Как создать "Дырку в файле"
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.10.08 19:41
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, samius, Вы писали:


S>>Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.


L>Про sparse-файлы не слышали?

Нет. Читаю.
Re[6]: Как создать "Дырку в файле"
От: samius Япония http://sams-tricks.blogspot.com
Дата: 11.10.08 19:52
Оценка:
Здравствуйте, samius, Вы писали:

S>Здравствуйте, NovaCxarmulo, Вы писали:


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


S>Боюсь, что вам надо обратиться на форум разработчиков файловых систем и объяснить им, как вам сильно нужны дырки в файлах

S>И надо будет подкинуть им идею о том, как будет происходить адресация в таких файлах.

S>З.Ы. Пишите свои файлы либо в BLOB поля, либо прямо на диск (только не в один каталог!) и будет вам счастье! Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.


2 NovaCxarmulo
Прошу прощения, погорячился с советами
Re[2]: Как создать "Дырку в файле"
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 11.10.08 21:15
Оценка:
Здравствуйте, TK, Вы писали:

TK>Здравствуйте, NovaCxarmulo, Вы писали:


NC>>Задача такая:

NC>>Хочу создать кеш доступа к мелким объектам (10-100КБ), чтобы не обращаться к куче мелких файлов.
NC>>Объектов будет оч. много (возможно миллионы) и хранение их прямо в базе данных думаю что загнет любую БД.

TK>миллион это не то число которое прям так сразу загнет любую базу


миллион это число объектов, а не строк таблицы... 100КБ * 1 млн это примерно 100Гб...

нужен кеш для хранения мелких файлов на сервере виртуального хостинга кеш будет использоваться для регулярной проверки содержимого файлов, чтобы не нагружать диск лишними операциями поиска мелких файлов.
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
Re[7]: Как создать "Дырку в файле"
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 11.10.08 22:17
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, samius, Вы писали:


S>>Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.


L>Про sparse-файлы не слышали?


Спасибо за информацию — не знал как они правильно называются, поэтому не мог найти инфу.

Нашел обертку для работы с разряженными файлами из .NET
http://blogs.msdn.com/codedebate/archive/2007/12/18/6797175.aspx
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
Re[8]: Как создать "Дырку в файле"
От: BOleg Россия  
Дата: 12.10.08 06:38
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:

NC>Нашел обертку для работы с разряженными файлами из .NET

NC>http://blogs.msdn.com/codedebate/archive/2007/12/18/6797175.aspx

Только аккуратнее: в этом примере выделяют память через AllocHGlobal, а освобождают при помощи DestroyStructure.
Да и вообще, дядя пишет:

This is my first attempt at interop, so ...

В человечишке все должно быть прекрасненьким: и одёжка, и душенка, и мордочка, и мыслишки.
Re[7]: Как создать "Дырку в файле"
От: NovaCxarmulo Россия http://timofey.koolin.ru
Дата: 12.10.08 14:30
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>Здравствуйте, samius, Вы писали:


S>>Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.


L>Про sparse-файлы не слышали?


Нашел утилиту коммандной строки fsutil — с её помощью можно как сделать файл разряженным, так и пометить в уже существующем файле разрященные области, в прямых вызовах API решил пока не копаться — этот вариант меня вполне устраивает.

Остается вопрос — как реализовать тоже самое в Linux.
Задача: есть файл и в нем (уже существующем) нужно сделать "дырку".
Сражение выигрывает тот, кто твердо решил его выиграть
(с) Л.Н. Толстой
Re[8]: Обоснуйте
От: Pavel M. Россия  
Дата: 12.10.08 15:36
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:

NC>Здравствуйте, Lloyd, Вы писали:


L>>Здравствуйте, samius, Вы писали:


S>>>Про дырки в файлах никому не говорите на работе, боюсь, что не оценят идею.


L>>Про sparse-файлы не слышали?


NC>Нашел утилиту коммандной строки fsutil — с её помощью можно как сделать файл разряженным, так и пометить в уже существующем файле разрященные области, в прямых вызовах API решил пока не копаться — этот вариант меня вполне устраивает.


NC>Остается вопрос — как реализовать тоже самое в Linux.

NC>Задача: есть файл и в нем (уже существующем) нужно сделать "дырку".

Давайте немного порассуждаем.

Посмотрел про разряженные файлы здесь:
туточки

Обоснуйте, почему разряженный файл на 100 гигабайт и Ваша система кеша будет работать быстрее БД? Ну, пару аргументов?

--------------------------
less think — do more
Re[3]: Как создать "Дырку в файле"
От: Sinclair Россия https://github.com/evilguest/
Дата: 13.10.08 03:45
Оценка:
Здравствуйте, NovaCxarmulo, Вы писали:
NC>нужен кеш для хранения мелких файлов на сервере виртуального хостинга кеш будет использоваться для регулярной проверки содержимого файлов, чтобы не нагружать диск лишними операциями поиска мелких файлов.
Крайне рекомендую собраться с мыслями и рассказать здесь, какую именно задачу хочется решить. Вполне возможно, что вы реализуете не то решение.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Как создать "Дырку в файле"
От: nauro Украина  
Дата: 13.10.08 05:34
Оценка:
NC>миллион это число объектов, а не строк таблицы... 100КБ * 1 млн это примерно 100Гб...
100 Гб тоже не предел.
Для таких гиганотов как Oracle или Sybase (эти вообще затачивали под большущие обьемы) эт не проблема.
-----------------------------------------
тут может быть ваша реклама
Re[9]: Обоснуйте
От: koandrew Канада http://thingselectronic.blogspot.ca/
Дата: 09.07.09 14:23
Оценка:
Здравствуйте, Pavel M., Вы писали:

PM>Обоснуйте, почему разряженный файл на 100 гигабайт и Ваша система кеша будет работать быстрее БД? Ну, пару аргументов?


PM>


Велосипедист обыкновенный Все программисты в начале своего пути считают себя умнее разработчиков ФС, СУБД, ОС и т.д., и уверены, что их велосипеды будут работать лучше... Это пройдёт
[КУ] оккупировала армия.
Re[4]: Как создать "Дырку в файле"
От: Smarty Россия  
Дата: 09.07.09 14:59
Оценка: :)
Здравствуйте, nauro, Вы писали:

NC>>миллион это число объектов, а не строк таблицы... 100КБ * 1 млн это примерно 100Гб...

N>100 Гб тоже не предел.
N>Для таких гиганотов как Oracle или Sybase (эти вообще затачивали под большущие обьемы) эт не проблема.

MS SQL в списке не вижу!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.