Tuesday, February 26, 2019

Managing Bitemporal Data With BarbelHisto

The last 15 years I've worked on projects for insurance businesses, implementing a variety of policy management systems. The topic that has always been a major requirement was to store the policies and their changes in a way that is traceable for audits and customer claims. Implementing bullet-proof bitemporal data storage has always taken a reasonable amount of time (and nerves). Every time we've implemented a new policy management system we have been on the lookout for a reusable component for bitemporal data. The few options we found did not really satisfy our needs, or had too many technical constraints. For that reason I've decided to implement my own open source library that I'd like to share with you guys: BarbelHisto. With this lightweight library I want to address that bitemporal data storage requirement, without any bothersome constraints. Just managing bitemporal data, that's it. No technology backpack. 

Before I dive into  BarbelHisto, let's briefly introduce "bitemporal" data.  Bitemporal data storage means that all your business data is stored along two time dimensions. Martin Fowler has described this pattern here. Record time is the time when a record state was created and deleted (or inactivated) in a system. Effective time is when a certain state of business data is supposed to become effective. For instance, a client communicates an address change two weeks in advance of his removal. With bitemporal functionality in your system, you can store that address change today (record time) and make it effective in two weeks (effective time). There are many businesses like insurance companies that have to store data in bitemporal format to track all their changes to data. Notice that  BarbelHisto is not just a simple audit trail; it stores record time (like common audit trails do) and effective time.



from DZone.com Feed https://ift.tt/2ID5rEN

No comments:

Post a Comment