powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как лучше хранить данные в БД
70 сообщений из 70, показаны все 3 страниц
Как лучше хранить данные в БД
    #39632983
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Делаю тут приложение для собственных нужд.

В нём будет средних размеров БД на FireBird (выбрал его, потому что с ним есть хоть какой опыт).
В приложении нужно будет хранить некий набор двоичных данных (примерное количество - пара сотен тысяч записей) размером от пары килобайт до пары мегабайт (по факту - документы с картинками). Разумеется не только их, но с остальными вопросов не возникает.

Все эти данные требуется хранить в одной таблице, и тут возник вопрос: как оптимальнее их туда складывать - напрямую данные в BLOB поля таблицы или в таблице хранить только все остальные параметры и имя файла, а сами файлы - в отдельной папке/папках на диске? Как будет правильнее с точки зрения производительности базы данных? Повлияет ли большая таблица с BLOBами на скорость работы всей базы в целом или только на эту таблицу?

P.S: Доступ к этим записям (и файлам) в 99% времени будет только на чтение.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39632992
Фотография DarkMaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,

Блобы вычитываются отдельно, поэтому в общем и целом - на производительность не повлиет. А хранить в отдельной папке - это лишний повод для ошибок - удалили из папки - оставили запись в БД. И наоборот. Со всеми вытекающими.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633007
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DarkMasteralekcvp,
Блобы вычитываются отдельно, поэтому в общем и целом - на производительность не повлиет. Ясно-понятно, спасибо.

DarkMasterА хранить в отдельной папке - это лишний повод для ошибок - удалили из папки - оставили запись в БД. И наоборот. Со всеми вытекающими.Решаемо, если это цена скорость работы :)
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633069
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp> данные в BLOB поля таблицы или в таблице хранить только
alekcvp> все остальные параметры и имя файла, а сами файлы - ... на диске?

Этому флейму сто лет в обед. Храни в БД, не парься.

alekcvp> Повлияет ли большая таблица с BLOBами на скорость
alekcvp> работы всей базы в целом или только на эту таблицу?

Считай, что ни на БД, ни даже на таблицу не повлияет.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633082
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvp,
сейчас вот аналогичным занимаюсь
В общем в меру своих знаний
для меня решающим было то что при хранении в базе
можно без всяких заморочек достать содержимое
(иначе ну насколько я понимаю, или расшаривать папки, или UDF, или еще что-то)
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633083
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня вопрос по этой же теме.
Чтобы не плодить темы - хочу задать его тут:

Планирую в БЛОБе хранить сканы поданых документов: заявления, справки и т.п.
Какой размер страницы для БД лучше всего взять.
Сканы будут храниться не в основной БД, а в отдельной, но по привязки ИД
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633085
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush,

если для хранения сканов хочется разместить их в отдельную БД, то возникает логический вопрос, а на хрена тогда вообще БД, проще в расшаренной папке хранить.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633090
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpнужно будет хранить некий набор двоичных данных (примерное количество - пара сотен тысяч записей) размером от пары килобайт до пары мегабайт (по факту - документы с картинками)типовая БД одна штука с типовым размером странички 16 кб, все это запихнуть в блобы, размер все едино не космический, если не выпендриваться, сервер вполне себе сдюжит.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633097
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисakrush,

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

Есть несколько причин:
1. При каждом обращении человек подает новое заявление и справки. Если хранить в папке - пользователя практически не реально заставить хранить информацию или в структуре или правильно называя файл.
2. Нет прямого доступа к персональным данным на сканах. Понятно что опытный пользователь откроет БД и посмотрит, но таких на 220 коиентов 1-3%
3. При 50тыс. заявителях - это либо дополнительно 50тыс. папок по номерам заявлений и внутри папки по номерам подачи разных заявлений, либо вообще все в одной папке. А это, даже при 5 обращениях+3 документа, 50000*5*3=750 000 файлов/папок. Не думаю что операционка себя будет комфортно чувствовать. Да и поиск в таком количестве усложняется, даже программный поиск.

Готов выслушать (прочитать) возражения. :)
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633104
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m7mдля меня решающим было то что при хранении в базе
можно без всяких заморочек достать содержимое

Количество инструментов, которыми можно достать файл из папки, значительно превосходит
количество инструментов, которыми можно достать файл из блоба, так что лично я не уверен
где больше заморочек.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633150
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushПланирую в БЛОБе хранить сканы поданых документов: заявления, справки и т.п.
Какой размер страницы для БД лучше всего взять.
8к или 16к.

К слову, про один из вопросов автора топика. Блобы в одной и той же таблице с остальными данными
- в ФБ 2.5 лучше не хранить. Блобы будут "разреживать" данные, данные будут читаться медленее, чем могли бы (больше страниц, чем без блобов). Так что в 2.5 лучше блобы хранить в отдельной таблице, связанной с основной как 1:1
- в ФБ 3 пофиг, блобы можно валить в таблицу. Потому что в формате 3 есть primary и secondary pages. Блобы и прочее хранятся на secondary, записи - в основном на primary.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633187
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush3. При 50тыс. заявителях - это либо дополнительно 50тыс. папок по номерам заявлений и внутри папки по номерам подачи разных заявлений, либо вообще все в одной папке.
А это, даже при 5 обращениях+3 документа, 50000*5*3=750 000 файлов/папок.
Не думаю что операционка себя будет комфортно чувствовать.Насколько мне изменяет склероз, операционка (Windows Server 2003) совершенно нормально чувствует себя при ~11 миллионах файлов в иерархии каталогов.
Это по опыту позапрошлой работы, где проблемой было объём дисков (до полутерабайта), но никак не количество файлов.

Даже если оставить в покое сервера, то "вот это" - Windows 7 x64 SP1+ (один из "развесистых" каталогов):
Код: plaintext
1.
2.
3.
  Общий размер файлов:
  44 159 362 520 байт.
  Всего файлов - 515 721,
  каталогов - 80 354.
На 32-разрядной семёрке с парой гигабайт ОЗУ будет ничуть не хуже.

И, по опыту всё той же позапрошлой работы, могу сказать, что первый вариантом был как раз "блобы в базе".
Сдохло, ибо:
1. Требуется больше места, чем на диске;
2. Сильно дороже по ресурсам.

Вторым вариантом был "свалим все файлы в одном каталоге".
Сдохло ибо сканирование ~65000 файлов в одном каталоге - (сравнительно) очень медленно.

Третьим вариантом было хранение в иерархии каталогов.
Вполне нормально, хотя реализация была далеко не идеальной.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633247
Шавлюк Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я такую задачу не решал, но как подумаю о бекапе базы с большим количеством картинок...
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633385
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийЯ такую задачу не решал, но как подумаю о бекапе базы с большим количеством картинок...
А как бэкап зависит от картинок? 2Гб база с картинками будет бэкапиться медленнее, чем 2Гб база с текстами?
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633407
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нет, он про то, что чем "бэкапить/ресторить" 1Тб БД гораздо удобнее
иметь 10Гб БД + 990Гб папку с файлами (и место на бэкапы сэкономить,
ибо последние вообще можно реже хранить - не ежедневные срезы).

Но в твоём случае по озвученным цифрам бояться особо нечего.
Если ты туда весь каталог фильмов не хочешь запихать, конечно.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633417
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush> Какой размер страницы для БД лучше всего взять.

Максимальный из имеющихся (т.е. 16К в 2.5).
И не забыть писать их тоже большими кусками
(например, 4096). Какую библиотеку доступа
используешь, FIBPlus ?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633464
YuRock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов РустамСчитай, что ни на БД, ни даже на таблицу не повлияет.Ну вообще бывает, что влияет.
И на скорость выборок, и на скорость сборки мусора, и на скорость бэкапов.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633469
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Шавлюк ЕвгенийЯ такую задачу не решал, но как подумаю о бекапе базы с большим количеством картинок...

По опыту - бэкап папки с полмиллионом маленьких картинок - еще сложнее. В операционке файлы одной папки лежат в плоском неиндексированном списке, и тормозит по этой причине очень хорошо. Такие вещи что бы скопировать - приходится сначала закинуть в архив, хоть бы и без сжатия, главное что бы файл получился один вместо полмиллиона. Его копируешь куда надо и там уже разворачиваешь.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633481
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksПо опыту - бэкап папки с полмиллионом маленьких картинок - еще сложнее.Нормальные люди не хранят полляма файлов в одном каталоге.
Правда, как показывает мой опыт, некоторым разработчикам требуется две попытки, чтобы сделать общеизвестные вещи.
  • Кроме того, мой опыт включал:Копирование нескольких десятков гигабайт на локальные диски второго сервера, чтобы хоть как-то дожить до подключения хранилища. В этом случае использование архива просто исключалось, поскольку тупо не было места.
  • Кроме того, не было никакого желания связываться и с потоковыми вариантами: ни на чтении, ни на записи ничего не экономится, а гигабитная сеть, как ни странно - достаточно быстра;
  • Копирование (уже) примерно четверти терабайта на это самое хранилище. Дополнительное место было, но смысла возиться с предварительной архивацией - по прежнему не было.
Другой пример - (мой) домашний компьютер.
Чтобы перенести ~600Гб "разновсякого бутора" со старого диска на новый я, таки, воспользовался потоковым вариантом (утилита, использующая Backup API), но вот архиву и в этой схеме места не нашлось.
По результату могу сказать, что скорость копирования примерно соответствовала скорости линейного чтения/записи дисков. Не на сто процентов, конечно, но без каких-либо катострофических проседаний.
Полумиллиона совсем мелких файлов у меня, конечно, не было, но те же полляма с разбросом размеров от единиц-десятков килобайт до единиц-десятков мегабайт - были. Естественно, не в одном каталоге, а во вполне развесистой иерархии.

В общем, если у вас или очень медленная среда передачи (100МБит и менее) или очень быстрые диски (200МБайт/с и более), то использование потокового сжатия позволит сэкономить время на передачу.
Отдельно подчеркну, что в нормальном сценарии, время чтения/записи сэкономлено быть не может.
Вариант "делаем архив на том/раздел архивируемых данных" из нормальных сценариев бэкапа - исключаем.
Ну вот в реальной жизни такое быть может, но нормальным положением вещей считаться не может.

Ну и файловые системы, у которых нет индекса для записей каталога это какой-то оксюморрон.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633484
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovfraksПо опыту - бэкап папки с полмиллионом маленьких картинок - еще сложнее.Нормальные люди не хранят полляма файлов в одном каталоге.
Набралось со временем :)
Это картинки товаров к справочнику товаров.
Сейчас это занимает примерно 3,5 гига.

Закачивание этих файликов поштучно через ftp на другой комп занимает немеряно времени.
Закачивание всего этого в одном файле архива, без сжатия - вполне адекватное.
В проводнике скопировать такую папку - тоже не дождешься.
В консоли - не помню, но там непонятно сколько прошло и сколько осталось ждать у моря погоды.
С некоторых пор я использую для этого FreeFileSync.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633485
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksНабралось со временем :)И это время ничему не учит ...

Ну не нужно никому "realname" файла в служебном каталоге.
Взяли монотонно растущий идентификатор из базы, преобразовали в строку, дополнили ведущими нулями до девяти цифр, взяли две первые группы по три цифры и получили чёткую балансировку по каталогам и предельно однозначную идентификацию местонахождения файла.

Совершенно несложным способом эта схема расширяется на вариант "у нас много точек хранения", если (когда) вам потребуется разнести хранилище по нескольким физическим томам.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633486
m7m
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakovm7mдля меня решающим было то что при хранении в базе
можно без всяких заморочек достать содержимое

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

Процитирую себя полностью и выделю ключевую фразу
m7mВ общем в меру своих знаний
для меня решающим было то что при хранении в базе
можно без всяких заморочек достать содержимоеи таки для меня легче достать из блоба
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633495
Rinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как сделать так что бы бэкап базы и бэкап папки не расходились?
Например: Делаю бэкап базы, затем или одновременно делаю бэкап папки при этом пользователь удаляет/добавляет/меняет данные и файлы
в бэкап папки могут не попасть те файлы которые удалились и попадут которые добавились
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633499
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovfraksНабралось со временем :)И это время ничему не учит ...

Ну не нужно никому "realname" файла в служебном каталоге.
Взяли монотонно растущий идентификатор из базы, преобразовали в строку, дополнили ведущими нулями до девяти цифр, взяли две первые группы по три цифры и получили чёткую балансировку по каталогам и предельно однозначную идентификацию местонахождения файла.

Совершенно несложным способом эта схема расширяется на вариант "у нас много точек хранения", если (когда) вам потребуется разнести хранилище по нескольким физическим томам.

Имя файла у меня сейчас - ID товара в базе. Нулями не добиваю.
Переделать как бы можно, но есть несколько НО.
Этой папкой-первоисточником пользуются еще несколько программ, которые уже не мной написаны. Их тоже придется переделывать.
Так же она зеркалируется в инет-магазин и просто в инет, и на эти картинки делаются ссылки в прайсе.
Изменим систему хранения - отвалится старое.
Вот такая селяви.

Если по твоим словам, в файловой системе каталоги индексируются, то при большом количестве файлов в папке проблема в основном одна - клиентские программы типа проводника очень хреново с ними работают.
Ну и пофиг. Туда через проводник лазить незачем.
Для копирования и синхронизации есть "более другие" (с) средства.
Живем дальше.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633502
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечно, тем кто начинает разрабатывать систему где потенциально может быть много файлов - лучше заранее продумать ситуацию с многими файлами.

Вспоминаются грабли когда я "сэкономил" и под ID справочника контрагентов отвел smallint.
И под справочник авторов отвел диапазон в 10000 кодов.
И то и другое довольно быстро уперлось в потолок.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633514
akrush
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

Да, FIBPlus
Но ввиду безвременной кончины оного задумываюсь о переходе на FireDAC

Тут многие говорят - хранить отдельно, в файлах.
Можете в нескольких словах описать принцип.
Хочется так чтобы у простого пользователя не было доступа к хранилищу.
Понятно что если хранить файлы на диске, значит в БД хранится ссылка на файл.
Но подскажите как можно лучше всего структурировать хранилище.
Условия возьмем те же (чуть-чуть изменив): 75тыс. клиентов, 3 обращения по 5 сканов
Просто я пока ума не приложу как лучше. Создавать по отдельной папке на клиента - 75тыс. папок. не будут ли операции с файлами подвисать при входе в эту папку. Если нет - то тогда решение есть:
1. На каждого клиента по папке по его уникальному номеру
2. Внутри папки по обращениям
3. в папке обращения сканы.

Осталось только понять как сохранять картинки так чтобы пользователь не имел доступа к папке хранилища.
Распределение доступа, увы не предлагать, т.к. у многих клиентов БД сеть настроена без домена.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633569
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
fraksКонечно, тем кто начинает разрабатывать систему где потенциально может быть много файлов - лучше заранее продумать ситуацию с многими файлами.

Вспоминаются грабли когда я "сэкономил" и под ID справочника контрагентов отвел smallint.
И под справочник авторов отвел диапазон в 10000 кодов.
И то и другое довольно быстро уперлось в потолок.

Я обычно BigInt под ID отвожу, если нет других требований. ИМХО не то место, где имеет смысл экономить.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633572
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushПросто я пока ума не приложу как лучше. Создавать по отдельной папке на клиента - 75тыс. папок. не будут ли операции с файлами подвисать при входе в эту папку. Если нет - то тогда решение есть:
1. На каждого клиента по папке по его уникальному номеру
2. Внутри папки по обращениям
3. в папке обращения сканы.
Тут выше уже приводили, на мой взгляд, удобное решение с хранением файлов по ID и разделение на папки по классам.

akrushОсталось только понять как сохранять картинки так чтобы пользователь не имел доступа к папке хранилища.
Распределение доступа, увы не предлагать, т.к. у многих клиентов БД сеть настроена без домена.Ну в моём случае трёхзвенка будет, так что с точки зрения клиента - без разницы как будут хранится документы.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633579
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВзяли монотонно растущий идентификатор из базы, преобразовали в строку, дополнили ведущими нулями до девяти цифр, взяли две первые группы по три цифры и получили чёткую балансировку по каталогам и предельно однозначную идентификацию местонахождения файла.

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

Так что... нет единого решения для всех. И это хорошо :)
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633651
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
RiniumДелаю бэкап базы, затем или одновременно делаю бэкап папки при этом пользователь удаляет/добавляет/меняет данные и файлы в бэкап папки могут не попасть те файлы которые удалились и попадут которые добавилисьУдаление должно быть логическим, с отдельной процедурой очистки, которая исполняется вместе с регламентными процедурами.
Изменений быть не должно: логическое удаление и создание нового файла.
Таким образом, если в хранилище добавляется новый файл, то он получает новый идентификатор.
Логика использования этого идентификатора в базе - отдельная тема, которая никак не связана с организацией файлового хранилища.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633657
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrushСимонов Денисakrush,

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

Есть несколько причин:
1. При каждом обращении человек подает новое заявление и справки. Если хранить в папке - пользователя практически не реально заставить хранить информацию или в структуре или правильно называя файл.
2. Нет прямого доступа к персональным данным на сканах. Понятно что опытный пользователь откроет БД и посмотрит, но таких на 220 коиентов 1-3%
3. При 50тыс. заявителях - это либо дополнительно 50тыс. папок по номерам заявлений и внутри папки по номерам подачи разных заявлений, либо вообще все в одной папке. А это, даже при 5 обращениях+3 документа, 50000*5*3=750 000 файлов/папок. Не думаю что операционка себя будет комфортно чувствовать. Да и поиск в таком количестве усложняется, даже программный поиск.

Готов выслушать (прочитать) возражения. :)
а чего это юзеры столько всего решают, а не вы?
и название файлам таки можно же дать самому, а юзерам алиас отдавать

Basil A. SidorovИ, по опыту всё той же позапрошлой работы, могу сказать, что первый вариантом был как раз "блобы в базе".
Сдохло, ибо:
1. Требуется больше места, чем на диске;
2. Сильно дороже по ресурсам.

Вторым вариантом был "свалим все файлы в одном каталоге".
Сдохло ибо сканирование ~65000 файлов в одном каталоге - (сравнительно) очень медленно.

Третьим вариантом было хранение в иерархии каталогов.
Вполне нормально, хотя реализация была далеко не идеальной.
о5 25 (
если вы сложите всё в одну папку, ОНО УМРЁТ. Потому что МУХ всё содержимое каталога СКАНИРУЕТ каждый раз, когда туда идёт запрос.
Поэтому не кладите 50000 файлов в один каталог , это я вам как админ говорю. Каталоги != таблицы, в них нельзя хранить триллионы строк!

А вот если вы сложите свои файлы так: /in/di/vi/individual.php
то у вас всё будет летать даже при миллионах файлов, ибо каждый слот даёт 26 букв + 10 цифр, итого 36 ** 6 = 2176782336 (кол-во дир, НЕ файлов! В каждой штук по 500 файлов себя вполне нормально чувствовать будут)
главное цифрами названия не делать, а то из-за ограничения int там на 1-2 будет сильно больше, чем на остальных

alekcvpВсе эти данные требуется хранить в одной таблице, и тут возник вопрос: как оптимальнее их туда складывать - напрямую данные в BLOB поля таблицы или в таблице хранить только все остальные параметры и имя файла, а сами файлы - в отдельной папке/папках на диске? Как будет правильнее с точки зрения производительности базы данных? Повлияет ли большая таблица с BLOBами на скорость работы всей базы в целом или только на эту таблицу?

P.S: Доступ к этим записям (и файлам) в 99% времени будет только на чтение.
ну вот пару мыслей на этот счёт:
авторfacebook оптимизировали свой сервис после возросшей нагрузки:

Кеширование более часто используемых миниатюр изображений в памяти на оригинальных серверах для масштабируемости, надежности и производительности
Распределение их по CDN для уменьшения сетевых задержек
Возможно сделать еще лучше:
Хранение изображений в больших бинарных файлах (blob)
Сервис, отвечающий за фотографии имеет информацию о том, в каком файле и с каким отступом от начала расположена каждая фотография (по ее идентификатору)
Этот сервис в Facebook называется Haystack и он оказался в 10 раз эффективнее «простого» подхода и в 3 раза эффективнее «оптимизированного»
и:
YouTube Video
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633661
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpakrushПросто я пока ума не приложу как лучше. Создавать по отдельной папке на клиента - 75тыс. папок. не будут ли операции с файлами подвисать при входе в эту папку. Если нет - то тогда решение есть:
1. На каждого клиента по папке по его уникальному номеру
2. Внутри папки по обращениям
3. в папке обращения сканы.
Тут выше уже приводили, на мой взгляд, удобное решение с хранением файлов по ID и разделение на папки по классам.

нельзя их по ID хранить, потому что из-за ограничения на int, файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальных
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633668
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78нельзя их по ID хранить, потому что из-за ограничения на int, файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальныхКто сказал, что нужно распределять файлы по папкам "в лоб" ?
Простейший способ - рассматривать двоичное представление ID, начиная с младших бит (а не со старших)
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633682
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78МУХ всё содержимое каталога СКАНИРУЕТ каждый раз

Это в FAT/FAT32 где директории - простой несортированный массив

В других системах это деревья

http://spider.seds.org/spider/OS2/HPFS/dirs.html
http://ext2.sourceforge.net/2005-ols/paper-html/node3.html
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633686
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальных

content-addressed storage обычно на хэшах делается

а хэши распределяются равномерно
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633719
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochtip78МУХ всё содержимое каталога СКАНИРУЕТ каждый раз

Это в FAT/FAT32 где директории - простой несортированный массив

В других системах это деревья

http://spider.seds.org/spider/OS2/HPFS/dirs.html
http://ext2.sourceforge.net/2005-ols/paper-html/node3.html
да хоть кусты, суть не в названии, а в ресурсах. На линухе это всё так же прекрасно виснет и падает.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633721
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Эта... Надо бы отличать запросы на открытие одного конкретного файла и на сканирование
списка файлов...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633742
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78нельзя их по ID хранить, потому что из-за ограничения на int, файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальныхВы, мопвашуять, когда думать научитесь???
Когда число преобразуется в строку, строку эту надо дополнять ведущими нулями до заданной длины.
У п(р)ограммиста такие вещи вообще должны быть на уровне условного рефлекса.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633746
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

ну будет у него в начале нулей больше, чем единиц

он же не про это, а про равномерность распределения "элементов" по "корзинам"

если он будет как в примере рубить по две буквы
А вот если вы сложите свои файлы так: /in/di/vi/individual.php

то тогда миллионы файлов "00000000.txt" .... "00999999.txt" все лягут в корзину 00/* и никто не ляжет в 01/, 02/ и т.д.


tip78На линухе это всё так же прекрасно виснет и падает.

Вот реально смотря что и как и с чем делается. Тот же третий ReiserFS был известен именно оптимизацией для работы с директориями, в которых много мелких файлов. Для сборки программ из исходников например.

Конечно, если обращение к конкретному файлу по заранее известному пути и имени делается полным перебором всех файлов на диске - тогда все ляжет конечно.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633747
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochВ других системах это деревьяПоскольку, как я уже отмечал, второй вариант файлового хранилища реальной системы был "все файлы в один каталог", то могу совершенно определённо заявить, что даже 65000 файлов в каталоге NTFS-диска - "байтораздирающее зрелище".
В целом, оно, конечно, и не такое сдюжит, но делать так не надо.

P.S. "Специально подготовленный" SP1 для Windows 7 x64 - 100738 файлов и 16004 каталога (не считая вложенны).
Открывается такой каталог около пяти секунд в 64-разрядном TotalComander-е.
"Могу обоснованно предположить", что при конкурентном доступе всё станет сильно грустнее.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633752
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovЭта... Надо бы отличать запросы на открытие одного конкретного файла и на сканирование списка файлов...

на некоторых ФС - проще всего вспомнить FAT - разницы реально нет.
Потому что там записи о файлах лежат несортированным списком.

Если заранее в памяти метаинформация этого файла не закэширована - то файловая система будет o(n/2) вычитывать всё содержимое директории, пока не наткнётся.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633756
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovОткрывается такой каталог около пяти секунд в 64-разрядном TotalComander-е.

Здраствуйте, я ваша тётя.

В данном случае происходит

1) чтение информации ОБО ВСЕХ файлах в каталоге
2) загрузка дополнительной информации о КАЖДОМ файле из сторонних источников - files.bbs, descript.ion, COM Shell Extensions, WDX-плагины
3) загрузка всей этой фигни в Windows Common Controls ListView

И где-то внутри этого нетривиального процесса всё тормозит.

Если уж реально хочется протестировать, сделай одну папку на 100738 файлов. Отдельно сделай список на 100 или тысячу названий файлов. И сделай скрипт/программу, которая по этому списку (и только по нему) будет открывать файлы (а не каталоги!!!) и читать из каждого первый килобайт.

Перезагрузи компьютер (чтобы сбросить кэш диска в ОЗУ) и запусти.

PS. кстати, NTFS насколько помню по интеллектуальности метода хранения файловых записей в общем-то от HPFS вернулась на полшага назад к FAT. Так что, возможно, это не лучший пример. Но уверять не буду, давно читал и только праздного интереса ради.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633758
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch1) чтение информации ОБО ВСЕХ файлах в каталоге
2) загрузка дополнительной информации о КАЖДОМ файле из сторонних источников - files.bbs, descript.ion, COM Shell Extensions, WDX-плагины
3) загрузка всей этой фигни в Windows Common Controls ListView
4) для файлов ещё и иконки считываются грузятся, либо из самого файла, либо из другого, ассоциированного через реестр.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633759
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochну будет у него в начале нулей больше, чем единицВы когда научитесь целиком читать???

Минимально разумный уровень вложения - два каталога от базового.
В этом случае миллиард файлов распределятся по иерархии, где в каждом каталоге будет не более тысячи объектов .

Просто в каждом каталоге верхнего уровня будет не более тысячи (вложенных) каталогов , а в каждом каталоге второго уровня - не более тысячи файлов .

Схема, блин, незатейливая как редис и простая как грабли, но, блин, мы всё равно найдём ветряных мельниц, с которыми можно побороться.

P.S. Можно конвертировать число в шестнадцатиричную строку, тогда всё теже девять символов позволят сохранять до 65 миллиардов файлов.
Можно для каждого файла сохранить расширение, если хочется. Просто для того, чтобы быстро понимать где архив, где pdf, а где - doc какой-бынить.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633764
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напоминаю исходный тезис. Откуда вообще разговор про "нули" вылез.

Basil A. Sidorovнельзя их по ID хранить, потому что из-за ограничения на int, файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальныхВы, мопвашуять, когда думать научитесь???
Когда число преобразуется в строку, строку эту надо дополнять ведущими нулями до заданной длины.

дополнение нулями было предложено (и мною обсуждалось) как лекарство от заявленного перекоса "файлов с 1-2 в начале будет сильно больше"

и только в этом контексте

не про тысячи и миллиарды, а только и исключительно про равномерное или неравномерное распределение

всё
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633768
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochне про тысячи и миллиарды, а только и исключительно про равномерное или неравномерное распределениеОбъясните, каким образом в предложенной мною схеме может возникнуть значимая неравномерность?
Если, конечно, исключить патологический случай, когда мы случайным образом теряем девяносто процентов идентификаторов монотонной последовательности.

P.S. Пофигу общее количество файлов - для балансировки существенно, чтобы ни в одном каталоге не было "слишком много объектов".
Предельное количество файлов определяет лишь глубину дерева хранения.
Два, максимум, три уровня закрывают любые потребности, включая самые запредельные.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633777
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,

оттуда же, откуда у tip78 в 21354526

ВК - верхнего уровня корзина
tip78 B.A.S. ВК по tip78 ВК по B.A.S.1.txt 00000001.txt 1 002.txt 00000002.txt 2 003.txt 00000003.txt 3 004.txt 00000004.txt 4 005.txt 00000005.txt 5 00.....11.txt 00000011.txt 1 0012.txt 00000012.txt 1 0013.txt 00000013.txt 1 0014.txt 00000014.txt 1 0015.txt 00000015.txt 1 00.....


Будет ли неравномерность проблемой или нет - вопрос отдельный.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633780
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovОбъясните, каким образом в предложенной мною схеме может возникнуть значимая неравномерность?
Если, конечно, исключить патологический случай, когда мы случайным образом теряем девяносто процентов идентификаторов монотонной последовательности.
ну в hex int = 7FFFFFFF
т.е половина (8-F) будет в меньшинстве
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633781
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochBasil A. Sidorov,

оттуда же, откуда у tip78 в 21354526

ВК - верхнего уровня корзина
tip78 B.A.S. ВК по tip78 ВК по B.A.S.1.txt 00000001.txt 1 002.txt 00000002.txt 2 003.txt 00000003.txt 3 004.txt 00000004.txt 4 005.txt 00000005.txt 5 00.....11.txt 00000011.txt 1 0012.txt 00000012.txt 1 0013.txt 00000013.txt 1 0014.txt 00000014.txt 1 0015.txt 00000015.txt 1 00.....

Будет ли неравномерность проблемой или нет - вопрос отдельный.
эта тема с каталогами не для файлов 1.txt, а 127627334.txt
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633782
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

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

21354188
21354256

ЕСЛИ вообще распределение по папкам будет реально нужно.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633785
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78эта тема с каталогами не для файлов 1.txt, а 127627334.txt

вот как раз в случае 127627334.txt перед ним будут 99627334.txt и 98627334.txt и 97627334.txt
а до того будут 9927334.txt , 9827334.txt , 9727334.txt
а до того будут 997334.txt , 987334.txt , 977334.txt

но все равно не надо рубить на части счетчик, или если уж рубить - то справа, а не слева
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633798
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вы минималку в генераторе поставьте на 1000000 и будет счастье
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633799
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochtip78файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальных

content-addressed storage обычно на хэшах делается

а хэши распределяются равномерно
чё за хеши то?
эти: 7fffffff ?
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633846
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochоттуда же, откуда у tip78А подумать?
Если ведущих нулей много, то файлов мало.
Мало файлов размещаются в малом числе каталогов.

P.S. Ещё раз повторю: задача балансировки ограничить количество объектов в отдельно взятом каталоге.
Задачу построения "красивого" дерева каталогов не требуется решать вообще.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633881
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78Ariochпропущено...


Это в FAT/FAT32 где директории - простой несортированный массив

В других системах это деревья

http://spider.seds.org/spider/OS2/HPFS/dirs.html
http://ext2.sourceforge.net/2005-ols/paper-html/node3.html
да хоть кусты, суть не в названии, а в ресурсах. На линухе это всё так же прекрасно виснет и падает.

Мои поллимона файлов (в трех папках) лежат на самбовой шаре на линухе.
Ничего не виснет и не падает.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633884
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78alekcvpпропущено...
Тут выше уже приводили, на мой взгляд, удобное решение с хранением файлов по ID и разделение на папки по классам.

нельзя их по ID хранить, потому что из-за ограничения на int, файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальных

А можно развернуть эту мысль поподробнее? А то не понял про ограничение и что такое 1-2
Кроме того вопрос кажется стоял не в равномерном распределении файлов по папкам а об ограничении максимального количества в одной папке.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633899
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
akrush...
Условия возьмем те же (чуть-чуть изменив): 75тыс. клиентов, 3 обращения по 5 сканов
Просто я пока ума не приложу как лучше. Создавать по отдельной папке на клиента - 75тыс. папок. не будут ли операции с файлами подвисать при входе в эту папку...
Ты хоть все файлы один каталог можешь свалить, без разницы (были ограничения на число корневых элементов тома, да и то кажись лишь для FAT*). Ну, и если ты "короткие" (8.3) имена использовать не станешь.
Ничего "подвисать" не будет, да и нет такого понятия "при входе в эту папку". Да, всякие там эксплореры-проводники могут подписать, но ведь ты не собираешься ими пользоваться.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39633932
Фотография Дегтярев Евгений
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78ну вот пару мыслей на этот счёт:
авторfacebook оптимизировали свой сервис после возросшей нагрузки:

Кеширование более часто используемых миниатюр изображений в памяти на оригинальных серверах для масштабируемости, надежности и производительности
Распределение их по CDN для уменьшения сетевых задержек
Возможно сделать еще лучше:
Хранение изображений в больших бинарных файлах (blob)
Сервис, отвечающий за фотографии имеет информацию о том, в каком файле и с каким отступом от начала расположена каждая фотография (по ее идентификатору)
Этот сервис в Facebook называется Haystack и он оказался в 10 раз эффективнее «простого» подхода и в 3 раза эффективнее «оптимизированного»

у меня почему то отложилось, что они вообще отказались от файловой системы
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634005
Rinium
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как добиться консистентности данных в базе и в папке с файлами если их более 100 гб
Начался бэкап в базе транзакция зафиксирована, а как с этим в файловой системе например (windows 2008r2, 2012, 2016)
сколько займет времени копирование файлов без сторонних приблуд
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634028
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
frakstip78пропущено...

нельзя их по ID хранить, потому что из-за ограничения на int, файлов с 1-2 в начале будет сильно больше (~5 раз), чем всех остальных

А можно развернуть эту мысль поподробнее? А то не понял про ограничение и что такое 1-2
Кроме того вопрос кажется стоял не в равномерном распределении файлов по папкам а об ограничении максимального количества в одной папке.
равномерное распределение само-собой подразумевается иначе какой в этом всём смысл, если все файлы всё-равно окажутся в одной папке

ограничение 2147483647 для рандома означает, что на цифры 1-2 приходятся миллиарды вариантов, а на все остальные - сотни миллионов
т.е. помимо 1-999 миллионов у 1-2 есть ещё дополнительные 1-999 миллионов
а у 3-9-0 - нет
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634029
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну точнее у двойки меньше, там ещё ограничение опять же
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634040
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

В UInt32 помещается FFFFFFFF значений. Бьём по папкам: '0', '1', '2', '3', внутри каждой из этих папок еще два уровня вложенности от '000' до '3FF', а в последнем - файлы с именами так же от '000' до '3FF'. В итоге мы запихиваем 4 лярда файлов в папки 3х уровней вложенности, с максимум 1024 элементов в одной папке. При этом по ID файла сразу вычисляется путь. Если взять 4 уровня вложенности, то там вообще будет максимум 256 элементов и элементарное вычисление пути.

Пример: для файла с ID 28C5E1A3 путь будет 0\28C\178\1A3, а для D56BA781 - 3\156\2E9\381.

Ещё раз: задача не распределить файлы по папкам равномерно , задача - ограничить количество файлов в папках.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634041
alekcvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На самом деле я вообще туплю: D56BA781 бьётся на 3 уровня вложенности безо всяких извращений как D5(1)\6B(2)\A8(3)\81(файл) - всё. Мы можем хранить 4 с лишним миллиарда файлов, при этом не складывая более 256 штук в одну папку.
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634042
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что ж вы такие трудные-то ...

Файлы:
Код: plaintext
1.
2.
  000000 000
  000001 000
  001000 000

будут размещены как:
Код: plaintext
1.
2.
 basedir/ 000 / 000 /000000000
 basedir/ 000 / 001 /000001000
 basedir/ 001 / 000 /001000000

В двухуровневой иерархии, при ограничении до тысячи объектов на каталог, можно разместить до миллиарда файлов (десятичное основание).

При использовании шестнадцатиричной системы будет до 4096 объектов на каталог и более 65 миллиардов файлов во всё той же двухуровневой иерархии.

Всё же тривиально (даже) в уме считается ...
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634046
Фотография Старый плюшевый мишка
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovЧто ж вы такие трудные-то ...

Спёр в блокнотик
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39634048
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvptip78,

В UInt32 помещается FFFFFFFF значений. Бьём по папкам: '0', '1', '2', '3', внутри каждой из этих папок еще два уровня вложенности от '000' до '3FF', а в последнем - файлы с именами так же от '000' до '3FF'. В итоге мы запихиваем 4 лярда файлов в папки 3х уровней вложенности, с максимум 1024 элементов в одной папке. При этом по ID файла сразу вычисляется путь. Если взять 4 уровня вложенности, то там вообще будет максимум 256 элементов и элементарное вычисление пути.

Пример: для файла с ID 28C5E1A3 путь будет 0\28C\178\1A3, а для D56BA781 - 3\156\2E9\381.

Ещё раз: задача не распределить файлы по папкам равномерно , задача - ограничить количество файлов в папках.
где бы взять uint, в postgres вот нет 'u' (

Basil A. SidorovЧто ж вы такие трудные-то ...

Файлы:
Код: plaintext
1.
2.
  000000 000
  000001 000
  001000 000

будут размещены как:
Код: plaintext
1.
2.
 basedir/ 000 / 000 /000000000
 basedir/ 000 / 001 /000001000
 basedir/ 001 / 000 /001000000

В двухуровневой иерархии, при ограничении до тысячи объектов на каталог, можно разместить до миллиарда файлов (десятичное основание).

При использовании шестнадцатиричной системы будет до 4096 объектов на каталог и более 65 миллиардов файлов во всё той же двухуровневой иерархии.

Всё же тривиально (даже) в уме считается ...

я же про это писал уже тут
tip78А вот если вы сложите свои файлы так: /in/di/vi/individual.php
то у вас всё будет летать даже при миллионах файлов, ибо каждый слот даёт 26 букв + 10 цифр, итого 36 ** 6 = 2176782336 (кол-во дир, НЕ файлов! В каждой штук по 500 файлов себя вполне нормально чувствовать будут)
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39645606
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чё-то нагородили премудростей... \inttostr(ID mod 1000)\inttostr(ID)+'.jpg'
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39645751
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alekcvpШавлюк ЕвгенийЯ такую задачу не решал, но как подумаю о бекапе базы с большим количеством картинок...
А как бэкап зависит от картинок? 2Гб база с картинками будет бэкапиться медленнее, чем 2Гб база с текстами?
база с текстами определённо будет раз в 10-20 меньше
jpg-картинки вообще не жмутся, например
может от этого и скорость будет выше, не тестил
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39645827
Котовасия
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78alekcvpпропущено...

А как бэкап зависит от картинок? 2Гб база с картинками будет бэкапиться медленнее, чем 2Гб база с текстами?
база с текстами определённо будет раз в 10-20 меньше
jpg-картинки вообще не жмутся, например
может от этого и скорость будет выше, не тестил
В fb бэкапы уже сжимаются?
...
Рейтинг: 0 / 0
Как лучше хранить данные в БД
    #39645836
fraks
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
КотовасияВ fb бэкапы уже сжимаются?

А что может помешать сжать бэкап любым архиватором?
...
Рейтинг: 0 / 0
70 сообщений из 70, показаны все 3 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как лучше хранить данные в БД
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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