- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Мне кажется, ты счас описал 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ы, что влияет на скорость работы с текстовыми файалами.