схема типа "звезда" для реализации аналитики в реальном времени с изменяющимися данными - PullRequest
2 голосов
/ 02 ноября 2010

Я внедряю аналитику для медицинского программного обеспечения.Данные для обработки в основном связаны с назначением.Я планирую реализовать звездную схему для генерации отчетов.У меня есть несколько сомнений

  1. Мои данные могут измениться, так как встреча может быть помечена как отмененная позже, я прочитал, что изменение данных в звездообразной схеме не очень хорошая идея.Если нет, то какой подход лучше.
  2. Данные в мои таблицы фактов будут вставлены фоновой задачей при добавлении данных в основную базу данных.Является ли постоянная вставка данных в таблицу фактов проблемой, поскольку перепосты в приложении видны почти всегда.
  3. Я планирую реализовать это в mysql, и если кто-то может указать мне на какой-нибудь пост, посвященный производительности mysql стакая структура была бы великолепна.Также, который является лучшим двигателем для реализации этой схемы Innodb или Myisam

Спасибо.

Ответы [ 2 ]

3 голосов
/ 01 июня 2011

Я постараюсь ответить в общих чертах, которые не привязаны к конкретной технологии базы данных (я работаю в MS SQL Server DWH).

Для решения ваших конкретных вопросов ...

"1.Мои данные могут измениться, так как встречу можно пометить как отмененную позже, я прочитал, что изменение данных в схеме« звезда »не очень хорошая идея. Если нет, то какой подход лучше.»

В таблицах фактов DWHes и таблицах измерений есть два основных типа таблиц.

Изменение фактических или размерных данных в схеме типа «звезда» является абсолютно допустимым. Не рекомендуется удалять записи измерений из DWH.

Вам необходимо выбрать тип 1 (перезаписать историю) или тип 2 (сохранить историю), чтобы изменить данные ( Медленно меняющееся измерение ).

Я не уверен, предлагаете ли вы удалять записи фактов здесь, но лучшим подходом было бы иметь флаг на каждой записи факта, чтобы указать статус встречи (забронировано / использовано / отменено / и т. Д.), И если пациент отменяет свое назначение, затем изменяет запись факта с статуса = зарегистрировано на статус = отменено фактически не удаляя запись факта. Таким образом, вы также можете отслеживать количество отмененных встреч.

Чтобы добавить усложнение, вы можете также иметь свою таблицу фактов, хранящую историю, чтобы вы могли показывать позицию «как в», то есть иметь возможность отображать состояние базы данных как в определенный момент времени. Это значительно увеличивает размер вашей базы данных, в зависимости от количества происходящих изменений.

"2. Данные в мои таблицы фактов будут вставлены фоновой задачей, когда данные будут добавлены в мою основную базу данных. Постоянная вставка данных в таблицу фактов - проблема, поскольку репосты почти всегда отображаются в приложении . "

Вам необходимо обсудить частоту обновлений / важность обновления данных. Как правило (как я уверен, что вы есть) DWH не являются системами OLTP и поэтому не предназначены для постоянного обновления новыми данными и возможности предоставления отчетов по самым актуальным данным. Если вы действительно этого хотите, вам нужна система OLTP.

При этом мы внедрили DWH, который обновлялся каждые 20 минут. У этого был SQL DWH с кубом OLAP, сидящим на вершине. Я не уверен, что у mysql есть технология OLAP, но я уверен, что есть какая-то версия с открытым исходным кодом. Существует несколько разновидностей OLAP (MOLAP / ROLAP / HOLAP), которые по-разному фокусируются на производительности / валюте данных.

Обычно вы хотите отделить сам DWH от уровня базы данных отчетов, особенно если пользователей много.

"3. Я планирую реализовать его в mysql, и если кто-то может указать мне на какой-то пост, посвященный производительности mysql с такой структурой, это было бы замечательно. Кроме того, это лучший механизм для реализации это схема Innodb или Myisam "

Я должен передать этот вопрос. Раньше я немного знал о innoDB и MyISAM, но прошло уже около 8 лет с тех пор, как я играл с этой технологией.

Очень хорошая книга по дизайну Star Schema DWH от Ральф Кимбалл по книге проектирования DWH

2 голосов
/ 02 ноября 2010

Я бы порекомендовал InnoDb.потому что в новой версии сделано много изменений, связанных с производительностью (спасибо Google).Большинство изменений сделано в версии 5.5, которая находится на стадии RC.Я предлагаю вам попробовать 5.5.

http://dev.mysql.com/tech-resources/articles/introduction-to-mysql-55.html

http://dev.mysql.com/doc/refman/5.5/en/mysql-nutshell.html

Вот технический документ, касающийся реализации схемы Star, надеюсь, вы найдете его полезным.

http://www.ciobriefings.com/Publications/WhitePapers/DesigningtheStarSchemaDatabase/tabid/101/Default.aspx

...