Классика баз данных - статьи

       

в AppEngine компании Google используется


Для тех же целей в AppEngine компании Google используется Python со встраиваемым диалектом SQL для доступа к базам данных. Компания же Microsoft опирается на языки семейства .NET и LINQ.

Очевидно, что у любой системы (включая Sausalito), основанной на архитектуре с рис. 2, мало шансов сравняться с современными системами баз данных в отношении производительности и согласованности данных. Что касается согласованности, то в соответствии с теоремой Бревера (Eric A. Brewer) [7] невозможно одновременно реализовать строгую согласованность, высокую доступность и масштабируемость. Если же говорить о производительности, то современные СУБД оптимизировались для достижения этой цели в течение, фактически, сорока лет. Однако архитектура с рис. 2 хорошо соответствует остальным характеристикам из табл. 1. Как показывает опыт Sausalito, эту архитектуру можно где угодно экономически эффективно реализовать с использованием дешевых аппаратных средств. Кроме того, в этом случае масштабируемость обеспечивается автоматически. Гибкость достигается за счет упрощения платформы, а также использования на всех уровнях одной модели программирования и данных, а не разных моделей на каждом уровне. Как показано в [3], для многих рабочих нагрузок можно добиться предсказуемых расходов и производительности.

Из сказанного в этом разделе должно стать ясно, что архитектура с рис. 2 создавалась в противоположность принципам разработки, свойственным архитектуре с рис. 1. Вместо централизованного контроля всех чтений и записи данных используются соглашения, регулирующие доступ к данным в распределенной, слабо связанной среде. Эти соглашения реализуются как распределенные протоколы [15, 3]. Вместо того чтобы перемещать как можно больше функциональных средств ближе к данным, на уровне хранения поддерживается минимальный интерфейс "get" и "put". Вся остальная функциональность реализуется на прикладном уровне. Особым аспектом является безопасность. Средства безопасности должны реализовываться на прикладном уровне с шифрованием всех данных, хранящихся на нижнем уровне, и контролированием распространения ключей для доступа к этим данным.Мы ожидаем, что реализовать средства безопасности в архитектуре с рис. 2 будет не намного сложнее, чем в архитектуре с рис. 1, поскольку в любом случае безопасность учитывается на уровнях и приложения и представления.


Содержание  Назад  Вперед