Как мне эффективно искать потенциально большую базу данных? - PullRequest
1 голос
/ 13 февраля 2012

Это больше обсуждение.

У нас есть система с несколькими станциями, в которой будут таблицы с миллионами строк. Наш пользовательский интерфейс позволяет пользователям выполнять поиск по этим таблицам с множеством различных критериев поиска, поэтому они могут иметь любую комбинацию этих критериев.

Непрактично индексировать все эти столбцы поиска в базе данных или загружать полные таблицы в память, а затем фильтровать.

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

1 Ответ

0 голосов
/ 13 февраля 2012

Я не знаю ни одного паттерна для решения описанной вами ситуации. Неограниченное количество строк, полностью специальные запросы, много одновременных пользователей? Это не требование; это "все идет".

Я предполагаю, что это база данных отчетов, а не транзакционная. Данные только для чтения. Это правильно?

Хранилище данных со звездообразной схемой будет предписывать запросы вдоль тщательно продуманных измерений. Пользователи могут свернуть измерения (например, измерение времени позволяет пользователям свернуть до дня, недели, месяца, квартала, года и т. Д.). Но логика для этого выполняется в базе данных и кодируется в хранимых процедурах.

Я бы оспорил утверждение о том, что пользователям нужны миллионы строк на среднем уровне. Ни один пользователь не может принять миллионы строк одновременно. Google возвращает миллионы страниц, возвращаемых одним запросом, двадцать пять раз за раз.

Может быть, вы можете потерять наборы данных, которые используются отдельно, проанализированы с помощью Excel или другого инструмента. Но это лучший сценарий, который я могу представить.

...