Обратите внимание, что новости можно получать по RSS.
X
-

Информационные технологии, LiveJournal cr_it - архив

14 ноября 2008, 14:51 (5852 дня назад, №8744)Google Datastore

Google Datastore является одним из сервисов, предоставляемых в рамках хостинга Google App Engine. Это нереляционная база данных, построенная на базе так называемой Bigtable ("A BigTable is a sparse, distributed, persistent multi-dimensional sorted map"). По ряду признаков - аналог и прямой конкурент Amazon SimpleDB.

В качестве лирического отступления: разница в подходах заключается в том, что Amazon предлагает сервисы по-отдельности и только за деньги, а Google - сразу всё вместе и бесплатно (на начальном этапе, во всяком случае). Правда, Amazon пока привлекателен наличием хранилища файлов S3 (Google только обещает) и службы обмена сообщениями SQS. Кроме того, хостинг у них не завязан на конкретный язык и платформу.

Поверх Google Datastore реализована уже упоминавшаяся Google Base, равно как  Google Base, Google Docs,Google Spreadsheet, Google Search, Google Maps и другие сервисы.
 

Итак, несколько важных, на мой взгляд, моментов:

 

- Понятие "типы данных" существует. В частности, есть "ключ" содержащий ссылку на другой объект, что позволяет создавать связи. Есть text, blob (в которых можно хранить файлы до 1мб размером) и list, который позволяет (как и в SimpleDB) хранить в одном свойстве несколько значений.

- Как и в SimpleDB каждый объект может иметь свой независимый набор свойств.

- Агрегатные функции типа COUNT() не предусмотрены (принципиальный вопрос структуры базы)

- Ограничение по количеству записей выдаваемых на любой запрос - 1000 (плюс еще ограничение 1000 на offset).

- Ограничение хостинга на 2гб исходящего трафика в сутки

- Собственно, большая часть существующих ограничений явно задумана так, чтобы заставить разработчика писать программы, которые система сможет эффективно распараллеливать. Как с точки зрения хранения, так и с точки зрения вычислений/обработки.

- Транзакции: определяется последовательность операций который нужно выполнить в рамках транзакции (в рамках одной транзакции только операции над одной строкой базы!). Если хотя бы одна операция терпит неудачу, результаты всех операций отменяются автоматически.

- Интересно реализовано (в API для Python) помещение объектов в базу. Описывается класс прямо на Питоне (с указанием для каждого свойства нужных типов, а заодно и ограничений для присваиваемых значений). Это называется "модель".
Создаётся объект этого класса, инициализируется нужными значениями, после чего помещается в базу методом put().

Пример:

class Person(db.Expando):
    first_name = db.StringProperty()
    last_name = db.StringProperty()
    hobbies = db.StringListProperty()

p = Person(first_name="Albert", last_name="Johnson")
p.hobbies = ["chess", "travel"]
p.chess_elo_rating = 1350
p.travel_countries_visited = ["Spain", "Italy", "USA", "Brazil"]
p.travel_trip_count = 13

p.put()

people = db.GqlQuery("SELECT * FROM Person WHERE chess_elo_rating < :1", 50)

- Всем создаваемым объектам система автоматически присваивает уникальные id

- Есть тип reference, можно указывать ссылку на другой объект. Причём, при указании такой ссылки у объекта на который ссылаемся, автоматически появляется свойство со списком всех ссылающихся на него объектов (!)

- Язык запросов GQL чисто похож на SQL.  По сути это уступка тем кто переходит с реляционных баз данных (чтобы людей не пугать). Реально этот GQL - это надстройка над гугловским Query .

Пример GQL:

q = db.GqlQuery("SELECT * FROM Person " +                
"WHERE last_name = :1 AND height < :2 " +               
"ORDER BY height DESC",               
"Smith", 72)

Само собой, JOIN'ов не существует в принципе.

- text и blob - не индексируются. Остальное индексируется само.

- Запись намного медленнее чтения (и чтение тоже небыстрое, по сравнению с известными реляционными базами)

В итоге, по сумме факторов, Google Datastore кажется мне более привлекательной, чем SimpleDB. Но что касается хостинга, то Google App Engine - вещь конечно сильно в себе, по сравнению с Amazon EC2. Может некоторых успокоит что следующим поддерживаемым языком после Python'a станет Java, но по сути это не сильно изменит ситуацию.
Чтобы работать с Google Datastore и App Engine, известные решения придётся продумывать с нуля и совершенно иначе, чем обычно. Выигрыш - в масштабируемости. Т.е. запариваться имеет смысл для проектов с очень большой (предполагаемой) посещаемостью.

http://en.wikipedia.org/wiki/Entity-Attribute-Value_model - Entity-attribute-value model (EAV), also known as object-attribute-value model
http://en.wikipedia.org/wiki/Tuple_space - tuple space is an implementation of the associative memory paradigm for parallel/distributed computing
http://groovie.org/2008/04/13/google-datastore-and-the-shift-from-a-rdbms - Google Datastore and the shift from a RDBMS
http://labs.google.com/papers/bigtable-osdi06.pdf - Google Big Table
http://en.wikipedia.org/wiki/Entity-Attribute-Value_model - Entity-attribute-value model
http://aralbalkan.com/1504  - Про квоты и ограничения GAE
http://techwork.ru - Различные алгоритмы и решения в GAE
http://labs.google.com/papers/mapreduce.html - MapReduce: Simplified Data Processing on Large Clusters
http://video.google.com/videoplay?docid=7278544055668715642&hl=en - BigTable: A Distributed Structured Storage System
http://oakleafblog.blogspot.com/2008/04/comparing-google-app-engine-amazon.html - Сравнение Google Datastore, Amazon SimpleDB и Microsoft SQL SDS.
http://artamonov.ru/2008/02/21/obrabotka-dannyx-podxod-mapreduce/ - Map Reduce
http://highscalability.com/how-i-learned-stop-worrying-and-love-using-lot-disk-space-scale - О разнице в подходах к реляционным и нереляционным базам данных


Опубликовано: Пётр Соболев

Случайная заметка

8778 дней назад, 03:1310 ноября 2000 Хочу поделиться личными впечатлениями от мыши Genius Netscroll Optical. Это оптическая мышь (без шарика) не требующая, в отличие от старых оптических мышей, коврика. Внутри установлена примитивная телекамера, которая отслеживает движение мыши по практически любой поверхности. Проверка показала, что это действительно так. То есть за ...далее

Избранное

2758 дней назад, 01:575 мая 2017 Часть 1: От четырёх до восьми Я люблю читать воспоминания людей, заставших первые шаги вычислительной техники в их стране. В них всегда есть какая-то романтика, причём какого она рода — сильно зависит от того, с каких компьютеров люди начали. Обычно это определяется обстоятельствами — местом работы, учёбы, а иногда и вовсе — ...далее

2270 дней назад, 20:305 сентября 2018 "Finally, we come to the instruction we've all been waiting for – SEX!" / из статьи про микропроцессор CDP1802 / В начале 1970-х в США были весьма популярны простые электронные игры типа Pong (в СССР их аналоги появились в продаже через 5-10 лет). Как правило, такие игры не имели микропроцессора и памяти в современном понимании этих слов, а строились на жёсткой ...далее