Место для больших наборов взаимосвязанных данных — в базе данных Диомидис Спинеллис

Если ваше приложение должно обрабатывать большой долговечный набор взаимосвязанных элементов данных, можете, не раздумывая, поместить его в реляционную базу данных. В прошлом РСУБД было мало, они были сложными, дорогими в содержании и неуклюжими животными. Эти времена миновали. Сегодня найти РСУБД нетрудно: вполне возможно, что на вашей машине уже установлена РСУБД или даже две. Некоторые весьма продвинутые РСУБД, такие как MySQL и PostgreSQL, доступны в исходном коде, поэтому вопрос о затратах на их покупку больше не стоит. Более того, так называемые «встраиваемые системы баз данных» можно подключать к вашему приложению в виде библиотек, почти не требующих настройки и администрирования; к таким относятся две интересные открытые СУБД, SQLite и HSQLDB. Подобные системы крайне эффективны.

Если данные вашего приложения не помещаются в ОЗУ системы, индексированная таблица РСУБД будет работать на несколько порядков быстрее, чем ассоциативные массивы библиотеки языка, где узким местом станет загрузка страниц виртуальной памяти. Возможности современных баз данных легко наращиваются по мере роста ваших потребностей. При надлежащем подходе вы сможете масштабировать встроенную базу данных до более крупной базы данных, если это понадобится. Затем вы сможете перейти с бесплатной базы с открытым кодом на коммерческую систему, предлагающую более развитую поддержку или возможности.

Изучив SQL достаточно хорошо, вы будете с удовольствием создавать приложения, построенные вокруг баз данных. После того как нормализованные данные сохранены в базе, можно легко получать фактическую информацию об этих данных с помощью прозрачно сформулированных запросов SQL; не нужно писать для этого сложный код. Аналогичным образом в такие наборы данных можно вносить сложные изменения при помощи единственной команды SQL. Для разовых модификаций, например при необходимости изменить способ организации хранимых данных, не нужно даже писать код — достаточно запустить приложение прямого SQL-доступа к базе данных. Этот интерфейс позволит также экспериментировать с запросами в обход цикла редактирования-компиляции обычных языков программирования.

Другое преимущество кода, ориентированного на использование РСУБД, — это поддержка связей между элементами данных. Можно описать ограничения (constraints), обеспечивающие целостность данных, что позволит избежать риска появления висячих ссылок, если вы забудете обновить свои данные в случае с пограничными условиями. Например, ограничение можно сформулировать так, что при удалении пользователя будут удалены и все сообщения, отправленные этим пользователем.

Можно также в любой момент создавать быстрые связи между хранящимися в базе записями путем простой генерации индекса. Не требуется проводить дорогостоящий и обширный рефакторинг полей класса. Кроме того, когда код построен на основе базы данных, к этим данным могут безопасно обращаться другие приложения. Благодаря этому легко добавить в ваше приложение параллельную обработку и написать отдельные его части с использованием наиболее подходящих языков или платформ. Например, можно написать XML-сервер веб-приложения на Java, некоторые сценарии для аудита — на Ruby, а интерфейс визуализации — с помощью Processing.[17]

Наконец, следует помнить, что РСУБД приложит максимум усилий, чтобы оптимизировать ваши SQL-запросы, благодаря чему вы сможете сконцентрироваться на функциональности своего приложения, а не на тонкой настройке алгоритмов. Более развитые базы данных способны даже использовать преимущества многоядерных процессоров, причем совершенно без вашего участия. По мере совершенствования технологий будет расти и производительность вашего приложения.

Загрузка...