Работа со сложными схемами базы данных SQL Server - PullRequest
1 голос
/ 14 октября 2011

У меня есть база данных, я должен поддерживать совместимость с SQL Server 2005, и я думаю о способах снижения сложности и решения проблем с производительностью.

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

На первый взгляд, я не думаю, что с моей моделью данных что-то не так, это не так.Абсурдно нормализовано (мы уже денормализуем некоторые вещи), но я не могу написать и выполнить эти быстрые запросы для запуска запросов AJAX моего веб-интерфейса, потому что все ограничения, которые кажутся беспорядочными, существуют здесь и там.

Итак, я подумал об этом и думаю, что хочу организовать свою базу данных по кольцам.Позвольте мне объяснить.

  • По сути, в самом внутреннем кольце вы найдете наиболее специализированный набор данных.Эти таблицы полностью денормализованы и были построены путем агрегирования данных из внешних колец, чтобы убедиться, что конкретные запросы выполняются действительно быстро.

  • Самое внешнее кольцо идеально "немое" и в основном простодействительно плохое место для размещения вещей.

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

  • Данные могут передаваться только от внешнего кольца к внутреннему кольцу.

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

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

Ответы [ 2 ]

1 голос
/ 15 октября 2011

Хотя я в принципе согласен с ответом @ TomTom, я бы сформулировал его по-другому: вы по существу разработали концепцию хранилища данных (или, если быть точным, витрины данных) самостоятельно.Покупка книги о хранилищах данных - отличная идея;посещать семинар или серию занятий на эту тему еще лучше.Очевидно, вы уже серьезно подумали об этом, и это поможет вам, когда вы узнаете о передовых методах и различных подходах, которые были разработаны.

0 голосов
/ 14 октября 2011

Вам нужен новичок, загляните в базы данных.Шутки в сторону.Разделите его на OLTP и часть OLAP - хранилище данных в порядке.Избавьтесь от хранимых процедур.Тогда поймите, что ваши «большие одатаны», вероятно, являются «шутками данных» других людей - я работаю над системой, которая должна масштабироваться до 60 ТБ данных (то есть 60 000) - наше исходное оборудование имеет 21 000 гигабайт.

Ваша системная система, как вы, смешиваете обычную базу данных (OLTP) с хранилищем данных.Разделить их - это не сработает.Разделите их ТАКЖЕ В ОБОРУДОВАНИИ.Это общий стандарт - книга о хранилищах данных.

...