Где лучше хранить кэш?

1 234
Mik Foxi
На сайте с 02.03.2011
Offline
1183
#31

Для равномерного распределения 1 млн файлов - берем md5 имени файла.

далее $folder_name = substr(md5($file), 0, 2); (получаем первые 2 знака md5 хеша)

итого получаем 256 директорий, в которых вполне равномерно разместилось по 3800-4100 файлов...

Антибот, антиспам, веб фаервол, защита от накрутки поведенческих: https://antibot.cloud/ (Зеркало: https://антибот.рф/ ) Форум на замену серчу: https://foxi.biz/
ssochi.com
На сайте с 24.09.2007
Offline
184
#32

Извините, перепутал окна...

P
На сайте с 08.03.2007
Offline
250
#33

Когда-то был такой сервис - nntp. У него было много файлов. Как решался вопрос хранения: есть один огромный файл, в него последовательно пишутся данные, позиции сохраняются. При достижении конца файла запись начинается сначала, уничтоженные индексы удаляются. Преимущества - максимально плотная упаковка файлов, предсказуемый размер файла на диске, нет фрагментации, доступ к данным быстрый. Вопрос только с индексами - где их хранить можно придумать в зависимости от задачи. Например, в перле 4000000 индексов будут занимать 80 мегабайт плюс длины имён файлов (а имена понятие тут относительное, на них нет ограничений) минимум, ну и плюс ещё сколько-то на упрощения.

Это если нет желания задействовать nginx для отдачи статики

D
На сайте с 05.06.2007
Offline
155
#34
Pilat:
Когда-то был такой сервис - nntp. У него было много файлов. Как решался вопрос хранения: есть один огромный файл, в него последовательно пишутся данные, позиции сохраняются. При достижении конца файла запись начинается сначала, уничтоженные индексы удаляются. Преимущества - максимально плотная упаковка файлов, предсказуемый размер файла на диске, нет фрагментации, доступ к данным быстрый. Вопрос только с индексами - где их хранить можно придумать в зависимости от задачи. Например, в перле 4000000 индексов будут занимать 80 мегабайт плюс длины имён файлов (а имена понятие тут относительное, на них нет ограничений) минимум, ну и плюс ещё сколько-то на упрощения.

Это если нет желания задействовать nginx для отдачи статики

Интересное подобие замены функций файловой системы, но минусы тоже есть,

ненужные файлы помечать свободным пространством в файле, потом всё равно лучше дефрагментация за счёт пересоздания файла и индексов, и есть опасность что всё накроется :)

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

PS. у себя на одном проекте просто делил файлы по папкам, в каждую по 10тыс, даже если тысча таких папок будет, то это уже 10млн файлов, структура норм, задержек вроде нет.

Написал не мало шедевров ;)
N
На сайте с 06.05.2007
Offline
419
#35
Dimanych:
Наверное плюс в том что все индексы можно хранить в памяти?

плюсов нет. хранилище, в котором старые файлы циклически перезаписываются для кеша не подходит.

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

Но mysql вам не пойдет. Вы же слишком круты для такой банальности как mysql :)

Кнопка вызова админа ()
rtyug
На сайте с 13.05.2009
Offline
263
#36

может быть смторя какой кэш, можно разбросать по контейнерам в Berkeley DB, это в качестве варианта.

Memcache - есть возможно создание кластера на Memcache :) (это где-то встречал информацию)

Спалил тему: Pokerstars вывод WMZ, etc на VISA 0% или SWIFT + Конверт USD/GBP,etc (net profit $0,5 млрд) (https://minfin.com.ua/blogs/94589307/115366/) Monobank - 50₴ на счет при рег. тут (https://clck.ru/DLX4r) | Номер SIP АТС Москва 7(495) - 0Ꝑ, 8(800) - 800Ꝑ/0Ꝑ (http://goo.gl/XOrCSn)
D
На сайте с 05.06.2007
Offline
155
#37
netwind:
плюсов нет. хранилище, в котором старые файлы циклически перезаписываются для кеша не подходит.

точно так же innodb создает большие файлы, тем самым избавляет от фрагментации файловой системы. И индексы хранит в памяти.
Но mysql вам не пойдет. Вы же слишком круты для такой банальности как mysql :)

Ну как я понял с ваших слов, придумывать велосипед не стоит, innodb для этого подходит лучше всего? Единственное не уверен что это полезно базе работать с обычными запросами с кэшем через innodb, надо эти базы раскидывать на разные диски чтоб не возник эффект ступора) Да о чём говорить, я же не знаю как сайт устроен...

N
На сайте с 06.05.2007
Offline
419
#38
Dimanych:
Ну как я понял с ваших слов, придумывать велосипед не стоит, innodb для этого подходит лучше всего?

Не так. Просто значение mysql недооценено.

А в свете memcached-интерфейса к innodb и уже широко известного HandlerSocket, так и вообще потенциально очень перспективно.

кстати, у innodb есть недокументированные опции, которые в принципе отключают сброс чего либо на диск до момента нехватки памяти. Хоть и опасно для целостности данных, но для живучего кеша наверное неплохо пойдет.

Dimanych:
Да о чём говорить, я же не знаю как сайт устроен...

золотые слова.

1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий