Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

> it doesn't even solve the core problem as you'd have to deploy new versions of all binaries precisely in sync to avoid data incorrect because some clients know about the v2 table and others don't

its painful but this approach does work as long as every client is migrated between each step.

after 1: v1 is valid, reading v1, writing v1

after 2: v1 is valid, reading v1, writing v1 and v2

after 3: v1 and v2 are valid, reading v1, writing v1 and v2

after 4: v1 and v2 are valid, reading v2, writing v1 and v2

after 5: v2 is valid, reading v2, writing v2

after 6: v2 is valid, reading v2, writing v2

at each point, both the current and the previous version are reading a valid table and writing to a table whose values will make it into v2.



Good luck migrating every single client in the real world (unless you are willing to disable old clients & force an upgrade if they get too old)


These are the same problems you have with any API or package you ship.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: