1) Microservices aim to decouple systems by separating data models into bounded contexts, with each microservice owning its own data schema.
2) However, some data like basic order information needs to be shared across microservices. Domain-driven design patterns like shared kernel and event-driven replication can be used to share this data while maintaining independence.
3) With shared kernel, a subset of data is defined that multiple microservices can access, but this impacts resilience. With events, data changes in one service generate events to update data in other services asynchronously.
4) The CAP theorem presents challenges for data consistency across microservices. Network partitions may lead to availability conflicts that require eventual consistency over strong consistency