Hi all,
I am planning to create a new open source data migration project to better manage app engine data. Basically you will need to checkout the project and deploy to your application (of course to a non-default version with admin access only). It will support some CRUD operations which are not supported by admin console at the moment, for example, edit text fields, add new fields to an entity which doesn't exist in meta data, upload / download file from a blob fields etc. Other than that, I will also try to support some of SQL for data migration. It will use task (pipeline) API to perform operations over large set of data and notify admins on the result via email (won't write anything to datastore). For example:
UPDATE person SET firstName = 'Max' WHERE firstName IS NULL or
DELETE FROM person WHERE NOT EXISTS (SELECT 1 FROM apartment WHERE apartment.owner = person.name )
It will also try to implement some new data migration syntax specific for app engine. For example, INDEX person (firstName) WHERE age > 25 will iterate over all person entities and for each of them partial index firstName is indexed when age is more than 25.
Some health check functions may also be helpful. For example: CHECK UNIQUE person (firstName) will iterate over all person entities to make sure firstName is not duplicated (will need an index to perform this check, and only indexed entities will be checked). Other examples include CHECK TYPE person (image) blob and CHECK NOT NULL person (image)
Other than the application, there will also be a library available to be imported in your application directly. One use case is you can have a cron job to update something and then perform some health check on your data.
Any other things you think will be valuable to implement?
Please please please do let me know if there is already a similar one. Don't want to reinvent the wheel.