Как организовать хранение и выборку таких данных?
Разбейте задачу на составляющие и решайте по мере. Вы какую решаете?

 — поиск ключей по тегу?
 — быстрая выборка?
 — поиск ключей по флагу?

1. Найдите алгоритм поиска ключей по тегу для вашей задачи максимально быстрый. Это не суть, будет это sql или nosql. Мы же не знаем каких объемов там данные. Да и вы можете это найти только по нагрузочным тестам. Главное помните, что поиск по primary key и по данным в оперативной памяти всегда эффективный, поэтому если это будет id вашего тега — вы сможете быстро найти нужные ключи записей.
2. Быстрая выборка != быстрому запросу. За сеанс у вас может пройти 3-5 коротких запроса по разным таблицам (базам) и это будет существенно быстрее. Разберите свои данные и идите от меньших объемов к большим в разборе.
3. Определите, что это за ключи/флаги — строки или числа. Соответственно исходя из этого примите решение с помощью каких алгоритмов их быстрее находить.
Если тегов немного — попробуйте битовую маску, она работает очень быстро