TL; DR: поиск способа обновления сущностей хранилища данных без перезаписи существующих данных через поток данных
Я использую поток данных 2.0.0 (луч) для обновления объектов в Google Datastore. Мой поток данных загружает объекты из хранилища данных, обновляет их, а затем сохраняет их обратно в хранилище данных (перезаписывая существующие объекты).
Однако в процессе обновления я также обнаруживаю дополнительные сущности, которые могут существовать, а могут и не существовать. Чтобы предотвратить перезапись существующих сущностей, я раньше загружал все сущности из Datastore и уменьшал их (группируя по ключу), удаляя новые дубликаты.
По мере роста количества сущностей я хочу избежать загрузки всех сущностей в поток данных (вместо того, чтобы брать их партиями на основе самых старых временных меток), но я сталкиваюсь с проблемой, что старые сущности перезаписываются, когда они не находятся в текущая партия.
Я пишу объекты в поток данных, используя (в двух местах, одно для существующих объектов, другое для новых объектов):
collection.apply(DatastoreIO.v1().write().withProjectId("..."))
Было бы здорово, если бы существовал метод DatastoreIO.v1().writeNew()
, но, к сожалению, его не существует. Спасибо за любую помощь.