3 ms·
I'd put it more strongly. If your apps are anything more than dumb opaque storage, if they ever process the data they write, they have a schema. There are certa
by prodigal_erik 13y ago
I'd put it more strongly. If your apps are anything more than dumb opaque storage, if they ever process the data they write, they have a schema. There are certain fields and values your code is relying on to work as intended. "Schemaless" merely means your schema is not written down anywhere, and you might not have any tests that could detect whether any version of your apps ever wrote data that violates it. I say "apps", plural, because in my experience if the data store has been there for more than about a year, anyone who thinks there's just one piece of code that uses it is in for a very unpleasant surprise.
On data migration, I don't think the if/then/else version is even feasible. If there have been n versions of your apps, there are 2^n possible states any particular record could be in depending on which versions of your apps did and did not update it. I've seen Notes documents after a few years of this that are in such weird states that not even the dev team could say just what the hell happened to that doc or what correct (well, least bad) behavior of the apps would be, much less what the current versions of the apps would probably do. You can kind of get partway there with apps that have existed and been actively maintained for as long as any of your data has been there, but trying to write anything like new analytics over old non-migrated data is hopeless.