@atlant

NoSQL и сохранность данных?

Читаю внимательно про redis, и нахожусь в смятении.

Похоже я чего-то не понимаю, или redis реально стоит использовать только в качестве кэша, всяких autocomplete и прочего подобного.


Итак, читаем в документации: «Snapshotting is not very durable. „
IS NOT VERY!

Такими словами они приоритетными помечают те проекты, где сохранность данных не важна.

Как такое может быть? Сохранность не важна или не критична только в случае кэширования или логирования чего-нибудь, но ведь они себя не позиционируют именно для таких проектов…


Да и как вообще можно допускать потерю даже одного ключа в иных случаях? Допустим, snapshotting выполняется каждую минуту. Между действием регистрируется пользователь на сайте, затем сервер крашится, пользователь удаляется, нормально, да?:)

Дальше смотрим решение AOF… Вроде бы учли проблему, но…

В документации описано три типа сохранения данных в aof-файл: при каждом запросе (что единственный способ гарантировать сохранность более менее), каждую секунду, никогда.

И меня убило тут то, что они рекоммендуют второй способ — каждую секунду. Very fast and PRETTY SAFE!

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

Я не понимаю.


Прошу помощи у знающих, чтобы они смогли мне показать то, чего я не понимаю здесь, и объяснить мне стоит ли при таком раскладе полностью переходить на NoSQL? Уж очень меня заинтересовала эта штука, сижу и радуюсь, как в первый раз в жизни открыл для себя mysql после работы с файлами :))
  • Вопрос задан
  • 2733 просмотра
Пригласить эксперта
Ответы на вопрос 5
sajgak
@sajgak
Как говорится: «любишь кататься, люби и саночки возиться».
Если вам нужна производительность в любом случае вы будете жертвовать надежностью.

Если по теме — используйте репликацию. Использовать fsunc при каждой записи как то глупо.

Ну и не по теме — если сервер ляжет в процессе записи данных в mysql с ними случится ровно тоже, что и при записи в Redis, MongoDB или любую другую noSql базу
Ответ написан
@skvot
Да, редис привлекателен в первую очередь из-за скорости. Это скорее альтернатива memcached чем БД, на которой можно полностью строить приложение. При проектировании одной игры мы делали следующее: перед боем данные из бд подгружались в редис, во время боя использовался только редис, после боя записывали результаты назад в MySQL.
Ответ написан
opium
@opium
Просто люблю качественно работать
я думал что редис это такой аналог мемкешдб?
заюзайте лучше монгодб.
Ответ написан
Комментировать
taliban
@taliban
php программист
Редис ведь база ключ-значение, на ней сложно построить сложную архитектуру? А вот для вещей которые вы сказали очень хороши для редиса. Общался с одним из разработчиков редиски (надстройка над редисом) и он не раз говорил что редис как средство для кеширования хорош, но вот как первичное хранилище не советовал.
Ответ написан
sl_bug
@sl_bug
Хотел тоже вопросик задать. А что если в редиске хранятся локали (ключ — ru.hello_world, значение — 'Привет, мир!'). Данные меняются максимум раз в год. Как тут с сохранностью? Есть ли шанс потерять все (или часть)?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы