Dans l'API Google Cloud Datastore, les entités sont immuables. J'apprécie la valeur de l'immuabilité, mais cela signifie que chaque fois que je mets une propriété, je dois à nouveau construire - c'est-à-dire, copier - toute l'Entité, ce qui est très inefficace. Il fait le simple fait de définir N valeurs de propriété dans O (N^2). L'alternative consiste à enregistrer les valeurs de propriétés dans ma propre structure de données d'entité, puis à copier ce droit dans l'entité de l'API avant l'enregistrement, et de nouveau à partir de l'entité de l'API juste après l'interrogation ou l'obtention. Ou alors, je pourrais utiliser le Builder pour stocker l'état mutable et ne construire une entité que juste avant de l'enregistrer; quand je get
ou interroger une entité, je prendrais le constructeur de cette entité.Comment faire muter des entités dans l'API Google Cloud Datastore?
Suis-je en train de mal comprendre quelque chose? Y a-t-il un moyen de le faire efficacement?
(J'utilise Java.)
Mais cette approche signifie que chaque fois que je mets une propriété, je dois construire - c'est-à-dire copier - toute la classe du modèle, ce qui est très inefficace. Idéalement, toutes ces opérations set-property se déroulent en même temps, comme vous le suggérez, mais je transfère malheureusement du code qui utilise l'API Google AppEngine qui a des Entités mutables, et ainsi le code appelle la méthode set-property plusieurs fois. –
Vous devrez déterminer les différences entre les API pendant cette migration. Il est probablement préférable de créer vos classes de modèle de données, de modifier l'état autant de fois que nécessaire et d'utiliser le cadre mentionné ci-dessus pour finalement persister dans le magasin de données. –
Merci. C'est dommage que Google ait introduit cette limitation; Je vais devoir travailler autour de ça. –