Использование API низкого уровня для хранилища данных в Google App Engine? это плохо? - PullRequest
5 голосов
/ 06 апреля 2010

Существует небольшая документация о том, как использовать API низкого уровня для хранилища данных, и достаточно много о JPA и JDO и о том, как оно к нему относится.

Мой вопрос: есть ли преимущество в кодировании по сравнению со спецификациями JPA или JDO вместо прямого доступа к API низкого уровня для хранилища данных?

На первый взгляд, это кажется простым и понятным, но я не уверен, есть ли веские причины, почему бы не сделать это.

Спасибо Cx

Ответы [ 3 ]

5 голосов
/ 06 апреля 2010

Вы не должны использовать API низкого уровня напрямую. Он существует для разработчиков фреймворка для создания высокоуровневых библиотек поверх него. Документация предназначена для этих людей (в основном это просто JavaDoc).

Google официально поддерживает каркасы JDO и JPO (которые являются стандартами Java, но не обязательно хорошо подходят для нереляционного хранилища данных (*)), но есть несколько альтернатив "ближе к металлу", которые обещают быть проще для понимания, более легким и быстрым.

См. объективировать , веточку , SimpleDS , а также этот вопрос .

С другой стороны, есть несколько вещей, которые предлагают альтернативные библиотеки. Например, доступ к базовым объектам хранилища данных дает вам двоичные представления, которые вы можете использовать в memcache без сериализации класса. У вас есть детальный доступ к индексированию (вы можете выполнять частичные индексы), и Twig также предоставляет асинхронные запросы, которые могут быть полезны.

(*) У JDO / JPA также есть некоторая отрицательная реакция, поскольку это увеличивает время запуска на несколько секунд, что важно для App Engine, поскольку Google отключает вашу JVM после нескольких минут бездействия, и следующий пользователь будет ждать десять секунд или больше. Тем не менее, я считаю, что это в корне ошибочный аргумент, потому что, когда вы используете Java, вы хотите использовать такие платформы, как JDO или Spring. Google даже так рекламирует. Если эти платформы (особенно те, которые одобрены самим Google) не могут быть разумно использованы в App Engine, то Google должен это исправить, а не авторы платформы.

4 голосов
/ 11 апреля 2010

Некоторые тесты, похоже, показывают преимущества производительности для API низкого уровня (см. http://gaejava.appspot.com в качестве одного примера, но попробуйте свой собственный.) Прочитайте форум GAE / J (http://groups.google.co.za/group/google-appengine-java) для мнений это.

Поскольку ваш вопрос касается преимуществ JDO и т. Д., Я бы сказал, что да, они есть. Они управляют объектными отношениями легче, чем возятся с ними сами. С ними легко размечать класс.

Лично я предпочитаю низкий уровень, главным образом потому, что я слишком много раз удивлялся реализацией JDO. Немного больше работы, но меньше сюрпризов и меньше вещей между мной и BigTable.

2 голосов
/ 06 апреля 2010

Нет ничего плохого в непосредственном использовании API низкого уровня. Если вы хотите что-то немного более высокого уровня, вы должны попробовать некоторые из альтернатив, которые упоминает Тило. Преимущества использования API более высокого уровня не всегда применимы к каждому разработчику. Например, использование JDO / JPA имеет смысл для людей, которые уже знают одну из них или уже имеют код, использующий их. Но для нового разработчика изучение JDO / JPA, вероятно, сложнее, чем просто использование нативного API.

...