Как лучше разработать интернет магазин, где используется big data?
Всем привет
Хочу разработать свой велосипед для обучения и в дальнейшем использовать как свою наработку при фрилансинге. Пытаюсь написать обычный интернет магазин, но хочу хранить в базе куда зашел пользователь (даже если не зарегался), какие товары его интересует, если не купить отправлять письма, если корзина брошен то так же отправлять письма. Так вот при каждом вызове контроллера это не вызовет сильной нагрузки? И ничего что в базе будет миллионы строк и я могу ли спокойно их обработать?
База mysql, фреймворк yii2
Люди же делают, это не rocket science и даже не big data (у big data вообще нет четких критериев, когда big, а когда нет)
Mysql просядет конечно, если хранить все в одной таблице. Нужно партиционировать.
Временные данные (для незарегистрированных пользователей) не смертельно хранить в памяти (Redis) — быстрее будет.
Насчет нагрузки на контроллеры ничего не могу сказать — с Yii не работаю. Но не думаю, что это такая уж большая проблема — при отображении товара конкретному пользователю проверять сессию и писать данные о просмотре в базу.
Сначала в Redis например (создаешь очередь), ну соответсвенно куку пользователя и его действие каждое записываешь.. дальше из редиса выгребаешь в mysql в консоле по крону. выполняешь все действия которые тебе надо и будет счастье.... если сразу в мускул не айс... Главное потом что ты будешь делать с этими временными данными? ведь у тебя нету ни возраста ни пола и т.д. что бы сделать таргетинг... ну если потом как то свяжешь тогда да.. класс... а так выше писали что есть уже движки которые подключаешь и не так дорого.. правда для мелких магазинов врядли будет от них эффективность.
1. Чтобы использовать MySQLна BigData вам придется целую ферму из сотни MySQL держать и как-то этой фермой рулить.
2. Миллионы строк - это легко для современных БД. При грамотном программировании MySQL даже не вспотеет. Это не BigData.
3. Хотите BigData - изучайте, например, БД Cassandra. Изучайте хранилище Yandex.Elliptics. И т.п.