Amazon SimpleDB предоставляет простой веб-интерфейс для создания и хранения множества наборов данных, создания запросов к ним и возвращения результатов. Сервис автоматически индексирует ваши данные, благодаря чему вы сможете легко и быстро найти требуемую информацию. Не нужно заранее разрабатывать схему базы данных или менять ее при добавлении новых данных. Горизонтальное масштабирование осуществляется не путем добавления новых серверов, а простым созданием новых доменов.
Начало работы с Amazon SimpleDB.
- Создание набора данных.
- При выборе региона для своего домена (доменов) руководствуйтесь соображениями оптимизации времени задержки, сведения затрат к минимуму, а также учитывайте различия нормативных требований для разных регионов. В настоящее время продукт Amazon SimpleDB доступен в следующих регионах: Восток США (Северная Вирджиния), Запад США (Орегон), Запад США (Северная Калифорния), ЕС (Ирландия), Азия и Тихий океан (Сингапур), Азия и Тихий океан (Токио), Азия и Тихий океан (Сидней) и Южная Америка (Сан-Паулу).
- С помощью операций CreateDomain, DeleteDomain, ListDomains и DomainMetadata создавайте домены запросов и управляйте ими.
- С помощью операций Put, Batch Put и Delete создавайте наборы данных в домене запросов и управляйте ими.
- Извлечение данных:
- С помощью запроса GetAttributes можно извлечь конкретный элемент данных.
- С помощью запроса Select можно запросить элементы из набора данных, удовлетворяющие конкретным условиям.
- Платите только за используемые ресурсы.
Модель данных Amazon SimpleDB позволяет без труда сохранять структурированные данные, управлять ими и создавать запросы к ним. Разработчик может организовать свои данные в виде доменов и делать запросы по всем данным, хранящимся в некотором домене. Домены – это наборы элементов, описываемые парами «атрибут-значение».
Эти понятия можно считать аналогичными соответствующим понятиям обычных электронных таблиц. Например, рассмотрим базу данных клиентов (см. нижеприведенную таблицу) и ее представление с помощью БД Amazon SimpleDB. Вся таблица соответствует домену с именем «Клиенты». Каждый клиент представлен строкой таблицы или элементом домена. Контактная информация описывается заголовками столбцов (атрибутами), а значения содержатся в отдельных ячейках. Нижеприведенные записи представляют клиентов, которых вы добавляете к своему домену.
ID клиента | Имя | Фамилия | Почтовый адрес | Город | Штат | Почтовый индекс | Телефон |
---|---|---|---|---|---|---|---|
123 | Боб | Смит | Мэйн-стрит, 123 | Спрингфилд | штат Миссури | 65801 | 222-333-4444 |
456 | Джеймс | Джонсон | Франт-стрит, 456 | Сиэтл | штат Вашингтон | 98104 | 333-444-5555 |
Для внесения этих записей в Amazon SimpleDB следует с помощью команды записи (PUT) добавить идентификаторы (ID) клиентов к вашему домену вместе с парами «атрибут-значение» для каждого клиента. Без учета соответствующего синтаксиса запрос будет выглядеть примерно так:
PUT (элемент, 123), (Имя, Боб), (Фамилия, Смит), (Почтовый адрес, Мэйн-стрит, 123), (Город, Спрингфилд), (Штат, штат Миссури), (Почтовый индекс, 65801), (Телефон, 222-333-4444) PUT (элемент, 456), (Имя, Джеймс), (Фамилия, Джонсон), (Почтовый адрес, Франт-стрит, 456), (Город, Сиэтл), (Штат, штат Вашингтон), (Почтовый индекс, 98104), (Телефон, 333-444-5555)
Amazon SimpleDB отличается от таблиц или традиционных баз данных рядом важных особенностей. В частности, к существующему домену можно позднее добавлять новые атрибуты, относящиеся лишь к конкретным записям. Предположим, что вы начали собирать адреса электронной почты ваших клиентов для рассылки предупреждений о состоянии заказов в режиме реального времени. Вместо реорганизации таблицы «Клиенты» и переписывания запросов, вместо того, чтобы заново выполнять индексацию и другие операции, достаточно добавить новые записи и любые дополнительные атрибуты к существующему домену «Клиенты». Получившийся в результате домен будет выглядеть примерно следующим образом:
ID клиента | Имя | Фамилия | Почтовый адрес | Город | Штат | Почтовый индекс | Телефон | Эл. почта |
---|---|---|---|---|---|---|---|---|
123 | Боб | Смит | Мэйн-стрит, 123 | Спрингфилд | штат Миссури | 65801 | 222-333-4444 | |
456 | Джеймс | Джонсон | Франт-стрит, 456 | Сиэтл | штат Вашингтон | 98104 | 333-444-5555 | |
789 | Дебора | Томас | Гарфилд, 789 | Нью-Йорк | штат Нью-Йорк | 10001 | 444-555-6666 | dthomas@xyz.com |
Amazon SimpleDB предоставляет ряд простых вызовов API для записи, индексирования и формирования запросов к данным. Интерфейс и набор функций делают акцент на выполнение основных операций, чтобы обеспечить разработчикам базовые инструменты API для начала работы, а также возможность легкого обучения и использования.
- CreateDomain – создание домена, содержащего набор данных.
- DeleteDomain – удаление домена.
- ListDomains – вывод списка всех доменов.
- DomainMetadata – извлечение информации о времени создания домена, а также информации о его содержимом: числе содержащихся имен и атрибутов и общем объеме в байтах.
- PutAttributes – добавление или обновление элемента и его атрибутов или добавление пары «атрибут-значение» для существующего элемента. Элементы автоматически индексируются по мере добавления в базу.
- BatchPutAttributes – выполнение до 25 операций PutAttribute одним вызовом для более производительной записи данных.
- DeleteAttributes – удаление элемента, атрибута или значения атрибута.
- BatchDeleteAttributes – выполнение до 25 операций DeleteAttributes одним вызовом для более производительного удаления данных.
- GetAttributes – извлечение элемента и всех его атрибутов и значений или их подмножества.
- Select – запрос набора данных с помощью известного синтаксиса «select target from domain_name where query_expression», который поддерживает такие операторы сравнения значений: =, !=, =, like, not like, between, is null, is not null и every (). Пример запроса: select * from mydomain where every(keyword) = ‘Book’. Результаты можно упорядочить с помощью оператора SORT и подсчитать число элементов, удовлетворяющих условию (условиям), заданному предикатом (предикатами), с помощью запроса с оператором Count.
Примечание. Сервис Amazon SimpleDB интегрируется с сервисом AWS Identity and Access Management для тонкой настройки контроля ресурсов Amazon SimpleDB. Благодаря интеграции с AWS Identity and Access Management из аккаунта AWS, использующего сервис SimpleDB, можно создавать множество пользователей, которым, в свою очередь, можно предоставлять разрешения доступа к доменам SimpleDB данного аккаута AWS на уровне API SimpleDB. Дополнительную информацию см. на странице AWS Identity and Access Management.
Для обеспечения высокой доступности и сохранности данных Amazon SimpleDB сохраняет множество копий каждого домена в различных географических местоположениях. Запись (с помощью запросов PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes, CreateDomain или DeleteDomain) считается успешно выполненной, если все копии домена надежно сохранены. Amazon SimpleDB поддерживает два вида непротиворечивости чтения: потенциально непротиворечивое и непротиворечивое.
- Потенциально непротиворечивое чтение (по умолчанию): этот вид непротиворечивости обеспечивает максимальную производительность чтения данных, определяемую малым временем задержки и высокой пропускной способностью. Однако потенциально непротиворечивое чтение (с помощью запросов Select или GetAttributes) может не отображать результатов недавно выполненной записи (с помощью запросов PutAttributes, BatchPutAttributes, DeleteAttributes, BatchDeleteAttributes). Как правило, все копии данных становятся непротиворечивыми в течение одной секунды, и повторная операция чтения через небольшой промежуток времени возвратит обновленные данные.
- Непротиворечивое чтение: кроме потенциальной непротиворечивости, Amazon SimpleDB также предоставляет гибкую и управляемую функцию выдачи запросов непротиворечивого чтения, если таковое требуется для вашего приложения или его элемента. Операция непротиворечивого чтения (с помощью запросов Select или GetAttributes с параметром ConsistentRead=true) возвращает значение, отображающее результат всех успешных операций записи, предшествовавших чтению.
По умолчанию запросы GetAttributes и Select осуществляют потенциально непротиворечивое чтение. В связи с тем, что выполнение непротиворечивого чтения может увеличить время задержки и снизить скорость чтения, желательно применять его только в тех случаях, когда сценарий приложения строго требует, чтобы при чтении был возвращен результат всех успешных операций записи, предшествовавших чтению. Для всех прочих сценариев заданное по умолчанию потенциально непротиворечивое чтение обеспечит наилучшую производительность. Обратите внимание, что Amazon SimpleDB позволяет задавать вид непротиворечивости для каждого отдельного запроса чтения. Таким образом, для различных элементов одного и того же приложения можно устанавливать различные настройки непротиворечивости.
Amazon SimpleDB – нереляционная база данных, в связи с чем некоторые сложные транзакции и отношения (например, соединение) в ней отсутствуют, зато доступны уникальные функции и характеристики производительности. Однако Amazon SimpleDB все же обеспечивает такую семантику транзакций, как:
- Условные запросы Put/Delete. С их помощью выполняется вставка, замена и удаление значений одного или более атрибутов элемента, если текущее значение атрибута соответствует заданному, если же не соответствует или отсутствует, то обновление выполнено не будет. Условные запросы Put/Delete используют, чтобы предотвратить потерю обновлений при внесении изменений в один и тот же элемент несколькими источниками одновременно.
Условные запросы put и delete выдают с помощью операций API PutAttributes и DeleteAttributes, задавая при этом выбираемое условие с предполагаемым значением. Например, если речь о приложении для резервирования мест или продажи билетов, можно разрешить продажу (т. е. запись обновления) только в том случае, если данное место свободно (дополнительное условие). С помощью этой семантики можно также создавать счетчики, выполнять вставку элемента при условии, что он еще не существует, и осуществлять оптимистический конкурентный контроль (OКК). Приложение может осуществлять ОКК с помощью такого атрибута элемента, как номер версии (или метка даты/времени), выдавая условный запрос put/delete со значением, равным номеру версии.
Подробнее о семантике транзакций и непротиворечивости сервиса Amazon SimpleDB см. руководство для разработчиков Amazon SimpleDB или техническую документацию по вопросам непротиворечивости.
Amazon Web Services предлагает разработчикам целый ряд сервисов баз данных. Вы можете воспользоваться полностью управляемым сервисом реляционных баз данных или сервисом БД NoSQL, а можете самостоятельно управлять базой данных с использованием облачной инфраструктуры Amazon EC2 и Amazon EBS.
Сервис Amazon RDS позволяет создать реляционную базу данных с полным набором функций и берет на себя всю работу по администрированию БД. Amazon DynamoDB – это полностью управляемый сервис баз данных NoSQL, обеспечивающий прогнозируемую высокую производительность и прозрачную масштабируемость. Amazon SimpleDB – сервис нереляционных баз данных, предназначенный для небольших наборов данных. Используя один из множества AMI в Amazon EC2 и Amazon EBS, вы сможете полностью контролировать вашу базу данных без необходимости выделять и устанавливать аппаратные ресурсы.
Каждый из сервисов отличается рядом важных особенностей и предназначен для решения своего круга задач.
На странице использование баз данных в AWS вы найдете подробные сведения о том, какой сервис баз данных лучше подойдет для вашего приложения.
В отличие от Amazon S3, Amazon SimpleDB не сохраняет первичные данные, а принимает данные как входные и создает на их основе множество индексов, обеспечивая быстрое выполнение запросов к данным. Кроме того, в сервисах Amazon S3 и Amazon SimpleDB используются разные типы физических хранилищ. Amazon S3 использует хранилища высокой плотности, оптимизированные для недорогого хранения больших объектов. Amazon SimpleDB хранит меньшие порции данных и использует хранилища более низкой плотности, оптимизированные для быстрого доступа к данным.
В целях сокращения затрат на пользование сервисами AWS большие объекты или файлы лучше хранить в Amazon S3, а меньшие элементы данных или указатели файлов (в т. ч. на объекты в Amazon S3) – в Amazon SimpleDB. Интегрировав оба сервиса в одно приложение, благодаря отличной совместимости сервисов и отсутствию платы за передачу данных в пределах среды AWS, разработчик может воспользоваться такими преимуществами Amazon SimpleDB, как скорость передачи данных, возможности работы с запросами и недорогое хранение данных в Amazon S3.
В настоящее время в Amazon SimpleDB поддерживает домены объемом до 10 ГБ. Если размер набора данных превышает 10 ГБ, воспользуйтесь возможностью горизонтального масштабирования архитектуры Amazon SimpleDB и распределите данные по множеству доменов. Поскольку в Amazon SimpleDB предусмотрена параллельная обработка данных, распределение данных по большему числу доменов также повысит пропускную способность при выполнении операций записи и чтения. Первоначально пользователю Amazon SimpleDB предоставляется не более 250 доменов. Если вам понадобятся дополнительные домены, пожалуйста, заполните эту форму.
Дополнительную информацию о том, какие преимущества разработчики получают при использовании Amazon SimpleDB совместно с Amazon S3, смотрите по ссылке.
При использовании Amazon SimpleDB прогнозировать размер хранилища структурированных данных удобнее всего по следующей формуле:
объем первичных байтов (в ГБ) всех кодов элементов + 45 байт на элемент + объем первичных байтов (в ГБ) всех имен атрибутов + 45 байт на имя атрибута + объем первичных байтов (в ГБ) всех пар атрибут-значение + 45 байт на пару атрибут-значение.
Чтобы подсчитать примерную стоимость хранения данных за месяц в регионах Восток США (Северная Вирджиния) или Запад США (Орегон), получившийся размер в ГБ умножьте на 0,25 USD. Для регионов ЕС (Ирландия), Азия и Тихий океан (Сингапур), Азия и Тихий океан (Сидней) или Запад США (Северная Калифорния) получившийся размер в ГБ умножьте на 0,275 USD. Для региона Азия и Тихий океан (Токио) получившийся размер в ГБ умножьте на 0,29 USD. Для региона Южная Америка (Сан-Паулу) получившийся размер в ГБ умножьте на 0,34 USD.
Amazon SimpleDB измеряет использование процессора для каждого запроса и начисляет плату, исходя из количества ресурсов, использованных для выполнения отдельного запроса (SELECT, GET, PUT и т.д.), нормированных по часовому использованию процессора 1.7 GHz Xeon 2007 года. Коэффициент загрузки машины зависит от количества данных (числа атрибутов, длины атрибутов), обработанных при каждом запросе. Операция GET, извлекающая 256 атрибутов, использует больше ресурсов, чем операция GET, извлекающая только один атрибут. Мультипредикатная операция SELECT, проверяющая 100 000 атрибутов, обойдется дороже, чем однопредикатный запрос, проверяющий 250 атрибутов.
В ответном сообщении для каждого запроса Amazon SimpleDB возвращает поле под названием Box Usage. Box Usage – это количество ресурсов процессора, использованное каждым запросом. В эту величину не входит ширина полосы пропускания или объем хранилища. Box usage отображается как число машинных часов, использованных при выполнении отдельного запроса. Для регионов Восток США (Северная Вирджиния) и Запад США (Орегон) стоимость отдельного запроса равна Box Usage (выраженному в часах) * 0,14 USD/машинный час Amazon SimpleDB. Стоимость всех запросов равна сумме всех Box Usage (выраженных в часах) * 0,14 USD.
Например, если за месяц сумма Box Usage ваших запросов будет равна 9-часовому использованию одного процессора 1.7 GHz Xeon, ваши расходы составят:
9 часов * 0,14 USD/машинный час Amazon SimpleDB = 1,26 USD.
Если ваши домены запросов находятся в регионах ЕС (Ирландия), Азия и Тихий океан (Сингапур), Азия и Тихий океан (Сидней) или Запад США (Северная Калифорния), плата за машинное время Amazon SimpleDB будет начисляться по тарифу 0,154 USD/машинный час. Если ваши домены запросов находятся в регионе Азия и Тихий океан (Токио), плата за машинное время Amazon SimpleDB будет начисляться по тарифу 0,162 USD/машинный час. Если ваши домены запросов находятся в регионе Южная Америка (Сан-Паулу), плата за машинное время Amazon SimpleDB будет начисляться по тарифу 0,19 USD/машинный час. При расчетах любых затрат следует учитывать цены соответствующего региона.
Использование этого сервиса регулируется клиентским соглашением Amazon Web Services Customer Agreement.