Я тестирую плоский дизайн, который будет использоваться вместо sql db, он использует структуру вложенных каталогов с файлами. Сначала я думал хранить данные внутри файла, но это не более 40 знаков на файл, так зачем открывать файл, когда все можно прочитать по его имени .. но теперь я не могу узнать, какова будет реальная разница в пространстве для хранения по сравнению с таблицей sql. Я попробовал du и find, и он всегда показывает только размеры каталогов и 0B для файлов ..
Есть ли способ узнать фактический размер файлов? Или, по крайней мере, рассчитал их вручную, или предположил?
Не уверен, какую файловую систему использует мое облако, я полагаю, ext4 .. ОС - ubuntu 14.04
РЕДАКТИРОВАТЬ:
Единственное, что я понял из ответов которое будет использовать дисковое пространство, - это сам каталог. Это минимум 4 Кбайт. В каждом каталоге должно быть около 300 пустых файлов. Если один индексный дескриптор потребляет минимум 256 ББ, это должно раздуть каталог до 76,8 КБ, но размер каталога по-прежнему составляет всего 4 КБ.
Еще я пытаюсь понять разницу между таблицей sql и этой простой настройкой. Когда я выполнил
SELECT pg_size_pretty(pg_total_relation_size('table_name'));
в таблице с 300 записями (вместо одной строки для имени было 5 полей - 6 с pk: 1x ForeignKey, 1xCharfield max 20 len, 2x FloatField, 1x IntegerField), в ответе был указан размер 16 КБ. Это postgresql 9.3 и django 1.8.6. Может ли действительно быть разница в 60 КБ между хранением этих данных в таблице SQL и в имени пустого файла? Или каталог вообще не будет раздуваться inodes, и я сэкономлю 12Kb?
Если вы задаетесь вопросом, почему я так много думаю о нескольких килобайтах, то позже установка должна содержать до 100 тысяч пользователей с 100x300 пустыми файлами или записями в БД ... так что это действительно вопрос гигабайт данных ..: -)
Если файл используется только для его имени, оставив его пустым, единственное, что имеет реальный размер, - это сам каталог.
Ключевым моментом, который нужно понять, является то, что каталог является чем-то особенным вид файла - файл, который можно выполнить ( cd / dirname
), прочитать ( ls / dirname
) и записать / изменить ( touch / dirname / filename
и rm /dirname/filename
.
Вообще говоря, добавление файлов в каталог увеличивает занимаемое пространство, а удаление файлов уменьшает его. Однако, поскольку каталоги представляют собой «особый вид» файлов, файловые системы часто угрожают им особым поведением.
Для получения дополнительной информации вы можете прочитать здесь и здесь
вы можете cd
в каталог и запустить ls -lha
, тот, который называется .
это ваш локальный каталог. Имейте в виду, что этот подход, который вы применяете, потребует много inodes
EDIT 1:
Вы увидите, что файлы имеют размер 0B, но вы сможете увидеть, что локальная папка фактически увеличивается по мере добавления файлов проверяйте .
каталог, в котором вы находитесь.
Macbook-Pro: / tmp / test $ ls -lha
всего 0
drwxr-xr-x 6 DiegoVelez wheel 204B 26 окт 20:07.
drwxrwxrwt 43 root wheel 1.4K 27 окт, 09:33 ..
-rw-r - r-- 1 DiegoVelez wheel 0B 26 октября 20:06 файл
-rw-r - r-- 1 DiegoVelez wheel 0B 26 октября 20:06 file2
-rw-r - r-- 1 DiegoVelez wheel 0B 26 октября 20:06 file3
-rw-r - r-- 1 DiegoVelez wheel 0B 26 октября 20:07 file4