Всем привет. Вопрос скорее всего очень знающим.
Нужно реализовать возможность создания параметров и меток, как это делается на конструкторах ботов.
Перепробовал всё. Сначала в json сохранял, но проблема с поиском нужных меток. Решил сделать строка = параметр и значение привязано к боту. Для меток тоже самое. Но получается кучу таблиц и таблица растёт быстро.
Как вообще правильно реализовать всё это? Метки, параметры, чтобы можно было быстро выборку из базы делать и поиск?
Откройте по ссылке или QR бот @iMakeBot, нажмите кнопку Старт/Start.
Следуйте инструкциям бота.
Допустим, бота добавил в крупные чаты где много пользователей. Нужно ведь ещё сохранить всех подписчиков в базу. Каждому присвоить метку, а то не одну (логика может быть разная). Кроме того, куча может быть параметров. Так и таблица вырастет до миллион записей.
Это лишь пример. Хотелось бы понять, как вообще конструкторы ботов работают. Там же не один бот, а очень много. Какая структура хранения всех меток и параметров?!
Укажите пример метки - не совсем понимаю о чем вы спрашиваете )
Метка (теги). Мы можем помечать пользователя на каких он шагах. Например, есть бот опросник, для примера возьмём один вопрос "вы программист?" и есть кнопки "да" и "нет".
Если пользователь нажимает кнопку да, то ставим ему метку (тег) "профи" (как пример), а для ответа нет, ставим другую. Тем самым мы можем сегментировать каждого пользователя и потом делать рассылку для каждой сегментации.
По параметрам, там немного по другому, метка (тег) просто как лейбл, а параметр может содержать данные.
Возьмём тот же опрос, мы можем сохранять ответы пользователя на какие-то вопросы. И таких параметров может быть уйма. Но вот как хранить всю эту схему, чтобы таблицы не расли и выборку с поиском можно было делать быстро?! 🤔
используйте 3 таблицы, чтобы не дублировать метки
1. Талица пользователей
2. Таблица меток
3. Таблица связи id_tag -> id_user
У меня сейчас так реализовано через связь таблицу. Но тут есть момент : представим что пользователей 50 000 и каждому пользователю ставится примерно 10 меток (допустим), получается в базе уже 500 000 записей. И это только один бот. А если ботов 10?
Получается, что нет варианта другого. Если хранить в json, экономим мнмтог, но теряем выборку и фильтрацию, если хранить через связи, то растёт таблица 🙄🤔
Метки же могу повторяться, допустим 1 000 пользователей ответила да на вопрос про программиста и 49 000 ответили нет, в метках у вас 2 записи в связях 50 000
Если хранить в JSON в бд то выборка также возможна, тип столбца JSON
Да вот, никак не пойму эту выборку по json. Читал, читал вроде понятно всё, но начинаю на практике делать, как то всё идёт не так.
Как то же все эти сервисы конструкторы хранят данные. И ведь не один пользователь пользуется сервисами и ничего не глючит. Может базы данных другие? Redis тоже в памяти много держать не может. Читал на форумах.