I не думайте, что есть какая-нибудь СУБД, которая будет делать то, что вы хотите, и позволить использовать готовый инструмент отчетности. Аналитические системы с малой задержкой не быстро и легко создавать. Низкая латентность по неструктурированным данным довольно амбициозна.
Однако вам придется сохранять данные в какой-то базе данных.
Я думаю, вам, возможно, придется более внимательно изучить ваш проблемный домен. Вы пытаетесь запустить аналитические отчеты с низкой задержкой или оперативный отчет, который подсказывает некоторые действия в бизнесе при возникновении определенных событий? Для систем с малой задержкой вам нужно быть совершенно беспощадными в отношении того, что представляет собой оперативную отчетность и что представляет собой аналитику.
Редактировать: Отклонить «потенциально оба» мышления, если только бизнес не готов заплатить. Инвестиционные банки и хедж-фонды тратят большие деньги и покупают суперкомпьютеры для «аналитики в режиме реального времени». Это не тривиальное начинание. Это даже менее тривиально, когда вы пытаетесь сделать такую систему и строить ее для больших периодов времени.
Даже в приложениях, таких как SMS-услуги премиум-класса и приложения .com, бизнес часто отступает, когда вы делаете реалистичный анализ объема и стоимости проблемы. Я не могу сказать этого достаточно. Be действительно, действительно безжалостный о требованиях «в реальном времени».
Если вам действительно нужна реальная аналитика в реальном времени, тогда вы можете создавать гибридные OLAP-архитектуры, где у вас есть марш-ведущий раздел в таблице фактов. Это архитектура, где таблица фактов или куб полностью индексируется для исторических данных, но имеет небольшой ведущий раздел, который не индексируется и, следовательно, относительно быстро вставляет данные.
Аналитические запросы будут отображать таблицу относительно небольшого передового раздела данных и использовать более эффективные методы на других разделах. Это дает вам данные с низкой задержкой и возможность запуска эффективных аналитических запросов по историческим данным.
Запустите процесс, который перейдет на новый ведущий раздел и консолидирует/индексирует предыдущий раздел.
Это хорошо работает, когда у вас есть такие предметы, как индексы растровых изображений (по базам данных) или материализованные скопления (на кубах), которые являются дорогостоящими на вставках. Ведущий раздел относительно невелик и дешев для сканирования таблицы, но эффективен для вставки вставки. Процесс roll-over постепенно объединяет этот ведущий раздел в индексированные исторические данные, что позволяет ему эффективно запрашивать отчеты.
Редактировать 2: Общие поля могут быть кандидатами для настройки в виде измерений в таблице фактов (например, вызывающий, время). Менее распространенные поля - это (предположительно) кодирование. Для эффективной схемы вы можете переместить необязательное кодирование в один или несколько 'junk' dimensions..
Вкратце, размер мусора - это тот, который представляет любую существующую комбинацию из двух или более кодов. Строка в таблице не относится к одному системному объекту, а к уникальной комбинации кодирования. Каждая строка таблицы измерения соответствует отдельной комбинации, которая встречается в исходных данных.
Для того чтобы иметь какое-либо аналитическое значение, вам все равно придется организовывать данные, чтобы столбцы в мусорном измерении содержали что-то неизменно содержательное. Это связано с некоторыми требованиями, чтобы убедиться, что сопоставления из исходных данных имеют смысл. Вы можете обрабатывать элементы, которые не всегда записываются с использованием значения-заполнителя, такого как строка с нулевой длиной (''
), которая, вероятно, лучше нуля.
Потенциально, оба - на данный момент существует потребность в низкой задержке (бизнес использует в реальном времени, но мы знаем, что это не так) аналитика и отчетность. Однако оперативно мы можем принимать решения о самых последних действиях в «другой» базе данных, которая очень часто усекается. К сожалению, те же данные, которые доступны для оперативных решений, также должны быть доступны нашим клиентам с помощью аналитики. – Kinlan
На данный момент, я думаю, это будет две фазы. БД (в основном записи о вызовах), предназначенные для хранения данных, которые могут быть, и системы отчетности/аналитики. – Kinlan
Хорошо, круто, спасибо за изменения. Если на данный момент я могу игнорировать аспект реального времени. У нас есть случай, когда факты и измерения могут быть «динамическими» из-за отсутствия лучшего слова - то есть нет фиксированных схем (кроме нескольких общих переменных), поэтому то, что я ищу, - это то, что может обрабатывать это. На данный момент у нас есть одна таблица записей подробных вызовов, каждая строка представляет один вызов, а столбцы представляют переменные, установленные в этом вызове (столбцы которых могут быть динамически созданы и могут не заполняться в 99% случаев) – Kinlan