Используя низкоуровневый API для хранилища данных в механизме приложения Google? это плохо?

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

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

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

Спасибо Cx

5
задан David Underhill 21 July 2010 в 21:13
поделиться

3 ответа

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

2
ответ дан 13 December 2019 в 19:24
поделиться

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

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

См. objectify , twig , SimpleDS , а также этот вопрос .

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

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

5
ответ дан 13 December 2019 в 19:24
поделиться

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

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

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

4
ответ дан 13 December 2019 в 19:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: