- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Все что нужно знать о DDоS-атаках грамотному менеджеру
И как реагировать на "пожар", когда неизвестно, где хранятся "огнетушители
Антон Никонов
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Мне кажется, ты счас описал NoSQL))) Ну примерно.
Ну там всё сложнее, тот же редис использует разные способы индексации, в некоторых случаях и классический B-Tree
Но правильно я понял - хэши имен файлов нужно где-то хранить?
Нет, хеши вычисляются в момент обращения (чтения/записи)
Нет, хеши вычисляются в момент обращения (чтения/записи)
Тогда я не понимаю как это будет работать.
вот есть на диске условно 10 файлов. 1.txt, 2.txt, 3.txt ... мне нужно обратиться системными средствами к нужному каталогу, вычитать все имена файлов в нем - это уже IO операция. Потом для каждого имени получить MD и уже на его основе построить дерево?
Зачем вы пытаетесь изобрести SQLite? это и так 1 файл и гуляет вместе с проектом.
Но на самом деле, если у ТС небольшой файл, например меньше 10Мб (а это очень много ID, но размер можно подобрать в целом, лучше чтоб он был в размер opcache конфига для файлов, тогда он вообще уже байт кодом ляжет), то наверное лучше было бы его создавать как
А в вызывающем коде сделать что то типа:
вычитать все имена файлов в нем - это уже IO операция. Потом для каждого имени получить MD и уже на его основе построить дерево?
не ВСЕ имена. В одном файле - одно значение. По сути, если значение не нужно (а нужны только ключи), то файл может быть пустым и даже не быть вообще - финальным будет также каталог
вот есть на диске условно 10 файлов. 1.txt, 2.txt, 3.txt ... мне нужно обратиться системными средствами к нужному каталогу
У нас есть 2 задачи:
1) внести имя файла в список
2) узнать, есть ли такое имя файла в списке
в обоих случаях мы вычисляем хеш файла (пусть md5, хотя это не лучший вариант)
то есть файлы лягут в каталоги, и если нам нужен только хеш, то даже файла создавать не будем
$ mkdir -p "./dd/7e/c9/31/17/9c/4d/cb/6a/8f/fb/8b/87/86/d2/0b"
2) узнать, есть ли такое имя файла в списке (опять же вычисляем хеш и проверям есть ли такой каталог)
Зачем вы пытаетесь изобрести SQLite?
Так пятница же :)
mkdir -p "./dd/7e/c9/31/17/9c/4d/cb/6a/8f/fb/8b/87/86/d2/0b"
Не боитесь что у вас inode закончатся в системе?
узнать, есть ли такое имя файла в списке (опять же вычисляем хеш и проверям есть ли такой каталог)
То есть правильно я понял - имя файла соответствует искомому айдишнику? Если я хочу проверить например айди 12345, я вычисляю хэш от него и пытаюсь на диске найти файл с соответствующим именем(хэшем)? А как формируется дерево? Или оно не нужно? Я думал так:
если мне прилетает айди 10010 - я его ищу в каталоге 10000
если 22000 - ищу в каталоге 20000
и так далее,
Или все файлы в одном каталоге?
Не боитесь что у вас inode закончатся в системе?
неа, я осознаю с чем работаю и (по-прежнему) больше боюсь кривой хеш-функции
То есть правильно я понял - имя файла соответствует искомому айдишнику? Если я хочу проверить например айди 12345
что в вашей задаче ключ, и что его значение?
в предложенном решении файл - ключ, содержимое - значение
СУБД - хорошая штука. Они придуманы не зря. Только ну очень долго разворачиваются из бэкапа
Ну так для таких штук насколько я помню, придумали не бекапы уже, а master-slave сервера баз данных. Я после 4гиговых баз уже остро ощущаю как автомайсклбекап ложит сайт на пару минут, что уже напрягает.
Ну и плюс, если не ссд, использование текстового варианта нагружает и растут IOPsы, что влияет на скорость работы с текстовыми файалами.