Skip to content

Chicken and egg problem with Google Cloud Datastore + hierarchical keys

Notifications You must be signed in to change notification settings

kevinmichaelchen/datastore-chicken-and-egg

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

How to run

In one tab, run

# Clear DB
rm ~/.config/gcloud/emulators/datastore/WEB-INF/appengine-generated/local_db.bin

# Start DB
gcloud beta emulators datastore start

In another tab, run

# Set environment so we know what Project ID to use
eval "$(gcloud beta emulators datastore env-init)"

go run *.go

What does this show

If we use goodKey, we see this printed:

GET RESULT = Folder[ID=2, ParentID=1]

If we use badKey, we get the error datastore: no such entity.

Basically, there's a chicken and egg problem.

Imagine a file system. Say we're just dealing with folders. Say we want to lookup a folder by its key. Its "key" comprises both the folder ID and the folder's parent ID...

But how do we know the folder's parent ID before looking up the folder itself?

Conclusion

Instead of making the parent key the node's parent, maybe we can use the root folder ID as the parent key for every node in that true.

That way, we still get to use a common ancestor for transactional queries and get the advantages of small entity groups.

About

Chicken and egg problem with Google Cloud Datastore + hierarchical keys

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages