java-dirty是一个轻量的只追加 append-only的数据存储,该存储用于记录保存事件,适合EventSourcing的存储。存储介质是文件,使用的Java NIO MappedByteBuffer用于快速读写。
java-dirty支持对象中原始类型,MappedByteBuffer提供的.putLong() 之类特性能够直接写入long到文件中。
创建一个存储很容易,使用 Class>作为参数:
Store
存储会注意到对象的偏移字节量,也会跟踪存储中的数据个数,这用于重新打开存储并且能知道有多少对象并发写操作。
假设有一个Event对象:
class Event { public int one, two; } |
事件的存储如下图,每个对象占8个字节,其中4个字节是整数字段:
在SSD闪存盘中,可以每秒插入4百万个对象,读取也是类似速度。