Получить определенный элемент массива в yaml для извлечения данных из хранилища данных
Я пытаюсь вытащить все сущности из облачного хранилища данных Google в формате CSV.
Я нашел отличную ссылку, которая мне очень помогла ( https://vikashazrati.wordpress.com/2010/09/20/downloading-datastore-data-from-a-java-application-on-google-app-engine/)
Мое приложение сделано в Java.
У меня есть 2 проблемы:
а. Извлекаются только индексированные поля подклассов и не все. Должен ли я индексировать все поля / свойства подкласса (насколько я понимаю, индексация всех полей не очень хорошая идея, пожалуйста, исправьте меня, если я ошибаюсь)
б. У меня есть arrayList как часть этой сущности, и мне нужен только элемент с максимальным индексом, что-то вроде arrayList[arrayList.size() -1], и я не могу получить его. (только FYI, arrayList состоит из объектов определенного класса, т.е. это составное свойство, и после извлечения требуемого объекта я планирую напечатать извлечение членов этого составного свойства 1 на 1, что-то вроде arrayList[arrayList.size() -1].member1)
Любые указатели будут полезны.
заранее спасибо
1 ответ
Хотя (а), индексирование всего осуществимо - проблема в том, что это может стать довольно дорогостоящим, если вы напишите много сущностей (при каждом размещении сущностей вам потребуется обновить множество индексов). Удаленный API, https://cloud.google.com/appengine/docs/java/tools/remoteapi, вероятно, будет лучшим подходом.
Wrt (b), обычное решение таких проблем состоит в том, чтобы "денормализовать" - ввести некоторую избыточность для простоты запросов и выборки. Так, например, если у вас есть foo
член это список, добавить избыточный last_foo
член, который поддерживается (небольшое количество кода каждый раз, когда вы изменяете foo
) равный последнему элементу foo
, Немного дополнительных затрат на написание, но для многих приложений непропорционально экономия на запросах и выборках (а для большинства приложений запросы и выборки происходят чаще).