Git is essentially an implementation of an Event Store where the data stored are files in a directory structure. It is known to reliably solve the problems:
- Store history of changes
- Transfer minimal data to client to get most recent data
- Can rollback to previous state
It is possible to create an Event Store by writing a wrapper over Git.
Suppose my business needs are that I need to store customer data that can be represented in JSON format. The data can be modified by one or more services in the system. I could have a dedicated Git repo Customer-Data with flat structure and files named {customer-id}.json. When a service modifies the data it includes a useful commit message.
This solution does not scale (if there are too many customers with too frequent of changes, the remote Git service, e.g. GitHub, will get bombarded with requests and throttle), but assuming I know that I will have ~1,000 customers and data changes of 1 per ~10 hours per customer, are there any other problems with the solution?