Какой стек технологий используется при частых опросах больших баз данных?

Стало интересно, как реализовывают подобные задачи:
Есть реляционная БД, в ней миллионы записей.
Нужно обеспечить очень быстрый доступ к этим записям, учитвая, что запросы будут очень частыми и сложными (фильтр по многим полям).
Допустим, пару тысяч человек на веб интерфейсе клацают по кнопкам, которые формируют фильтр запроса и тут же получают какой-то ответ.
Реляционные БД типа Oracle, PostgreSql справляются с такой задачей?
Или мой вопрос не корректный и тут нужно говорить о целой структуре сервер/серверный язык/что-то еще?
  • Вопрос задан
  • 2532 просмотра
Пригласить эксперта
Ответы на вопрос 1
leahch
@leahch
3D специалист. Dолго, Dорого, Dерьмово.
Тут нужно говорить о типе информации и о типе запросов. Ну а также об архитектуре всей системы.

Другими словами, при одной организации базы не будут справляться, при другой - будут.
Например, есть бооооольшая таблица с ФИО и паспортами и адресом жительства (город, дом, квартира) , есть индексы по ФИО, номеру паспорта и адресу. Такая база будет нормально работать при поиске конкретных записей, но если мы хотим сделать выборку по городу, то можем потерпеть неудачу из-за большого количества записей в таблице.
Соответственно можно попробовать оптимизировать - разбить таблицу по городам. Каждуму городу отдельную таблицу - тогда выборку по ФИО и номеру паспорта придется делать запросом ко многим таблицам сразу, но при этом выборка по городам будет значительно быстрее.
Можно еще оптимизировать - создать отдельную таблицу по ФИО и паспорту с указанием таблиц городов, а можно отдельно сделать таблицы по каждой букве алфавита.
И так далее.. Это называется нормализацией информации. Но все зависит от типов запросов.
Нельзя, увы, сделать базу под все запросы сразу... Но и для этого есть OLAP-кубы, но это отдельная песнь...
И да, и оракл и сайбейс и ростгрес могут как справляться, так и несправляться - как данные будут организованы, и как к ним будут запросы строиться. Все эти базы нормально работают с миллионами записей в таблицах, весь вопрос как мы этими таблицами будем оперировать...

Что касается архитектуры: то очень часто нужно кешировать какую-то информацию вне баз данных - например на промежуточных серверах, архитектура приложений 3tier или multitier en.wikipedia.org/wiki/Multitier_architecture (а в русской версии этой статьи фигня написана)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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