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

123 4
[Удален]
2877

где лучше хранить кэш больших размеров 4 000 000 по 50-400 кб данных. В бд или в файловой системе? как разделить файлы? Бд майэскьель.

Называю это кешем, потому что все данные меняются полностью каждые 24 часа. То есть полностью удаляются. И добавляются совсем другие данные возможно. Может быть меньше может быть больше.

База данных не подходит потому что в ней медленно обратабываются данные больших размеров в поле. То есть если кечить хтмл получится 400 кб в одном поле таблица на 4 млн действительно медленно, будет обрабатывать эти запросы. Но вот елси будет 4 000 000 файлов не известно, будет ли быстрее.

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#1

а мне кажется, что систему кэша менять нужно.

у вас 4 млн записей не используются же каждый день?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
A
На сайте с 03.06.2011
Offline
29
#2
closeyoureyes:
База данных не подходит потому что в ней медленно обратабываются данные больших размеров в поле.

При правильеой настройке mysql сервера и базы будет работать очень быстро.

Если все-таки не устраивает, тогда в memcache или на диске с файловой системой ReiserFS (Linux) / UFS (Freebsd).

[Удален]
#3

Вот рассматривается ситуация если будут использоватся 4 000 000 каждый день, если же нет, то будет меньше записей, но от этого если выбрать способ который подходит под 4000 000 при меньшем количестве не произойдет я думаю критических ситуаций с производительностью.

В чем разница между ReiserFS и ext3?

По поводу мемкэтч) пока, что сервер один, будет больше серверов можно будет больше хранить данных в мэмкэч, сейчас не оптимально хранить больше 2000 записей размером от 50кб в мэмкетч. В мэмкетч попадают только наимболее часто используемые. А остальные будут использовватся возможно один раз в день! Или максимум по несолько раз. Но с большим потоком.

A
На сайте с 03.06.2011
Offline
29
#4
closeyoureyes:
В чем разница между ReiserFS и ext3?

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

Andreyka
На сайте с 19.02.2005
Offline
822
#5

Кеш хранить в файл-блоках, со структурой /dir/subir/block

В файл-блок идут много мелких объектов, со смещением или один большой

А еще, если это сайт, то кешировать можно на уровне web-сервера nginx/squid/etc

Не стоит плодить сущности без необходимости
[Удален]
#6

а что если организовать директории в виде 200 в третей степени. то есть на верхнем уровне 200 директорий в каждой еще по 200 и в каждой по 200 файлов. получится в директории не очень много файлов. А в базе только путь хранить, проиндексировав ключ, будет дочтаточно быстро находить путь. В сотни раз быстрее чем если бы хранить в базе текстовые поля по 50 кб, как, кто на такой вариант смотрит?

LEOnidUKG
На сайте с 25.11.2006
Offline
1774
#7
closeyoureyes:
а что если организовать директории в виде 200 в третей степени. то есть на верхнем уровне 200 директорий в каждой еще по 200 и в каждой по 200 файлов. получится в директории не очень много файлов. А в базе только путь хранить, проиндексировав ключ, будет дочтаточно быстро находить путь. В сотни раз быстрее чем если бы хранить в базе текстовые поля по 50 кб, как, кто на такой вариант смотрит?

Деление на директории ничего не даст. Вы же лично не будете их просматривать?

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

Дмитрий
На сайте с 23.08.2006
Offline
222
#8

Попробуйте реализовать вложенность такую:

$md5 = md5(имя_файла);

/cache/substr($md5, 0, 1)/.../substr($md5, N, 1)/$md5

N можете прикинуть сами, на каждом таком уровне вы получите деление на 256 подкаталогов. Но с таким количеством не забывайте про Коллизии

Разрабатываю и автоматизирую на php http://jonnyb.ru/
Andreyka
На сайте с 19.02.2005
Offline
822
#9
closeyoureyes:
а что если организовать директории в виде 200 в третей степени. то есть на верхнем уровне 200 директорий в каждой еще по 200 и в каждой по 200 файлов. получится в директории не очень много файлов. А в базе только путь хранить, проиндексировав ключ, будет дочтаточно быстро находить путь. В сотни раз быстрее чем если бы хранить в базе текстовые поля по 50 кб, как, кто на такой вариант смотрит?

Вполне рабочий вариант, особенно если базу держать в чем-то быстром, типа redis.

N
На сайте с 06.05.2007
Offline
419
#10
Andreyka:
Вполне рабочий вариант, особенно если базу держать в чем-то быстром, типа redis.

Тут вон mysql обещает сделать memcached-подобный интерфейс. Может через пару лет все начнут понимать, что это не mysql тормозной, а программисты в SQL не разбираются.

Кнопка вызова админа ()
123 4

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