// 创建一个纯内存的 store
MVStore store = MVStore.open(null);// 文件存储位置
String fileName = "/Users/chenfei/temp/my_store.db";
// 创建一个 store
MVStore store = new MVStore.Builder().fileName(fileName).pageSplitSize(1000).open();MVStore.Builder() 常用方法
MVStore.Builder builder = new MVStore.Builder();
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.encryptionKey("my_h2".toCharArray());
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.encryptionKey("my_h2".toCharArray());
/**
* 使用 LZF 算法在写入之前压缩数据。这将节省
* 大约 50% 的磁盘空间,但会减慢读写速度操作轻微
* */
builder.compress();
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.encryptionKey("my_h2".toCharArray());
/**
* 使用 LZF 算法在写入之前压缩数据。这将节省
* 大约 50% 的磁盘空间,但会减慢读写速度操作轻微
* */
builder.compress();
// 禁用自动提交事务,需要手动提交。
builder.autoCommitDisabled();
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.encryptionKey("my_h2".toCharArray());
/**
* 使用 LZF 算法在写入之前压缩数据。这将节省
* 大约 50% 的磁盘空间,但会减慢读写速度操作轻微
* */
builder.compress();
// 禁用自动提交事务,需要手动提交。
builder.autoCommitDisabled();
// 设置MVStore为只读模式,不能进行写操作。
builder.readOnly();
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.encryptionKey("my_h2".toCharArray());
/**
* 使用 LZF 算法在写入之前压缩数据。这将节省
* 大约 50% 的磁盘空间,但会减慢读写速度操作轻微
* */
builder.compress();
// 禁用自动提交事务,需要手动提交。
builder.autoCommitDisabled();
// 设置MVStore为只读模式,不能进行写操作。
// builder.readOnly();
// 设置MVStore的缓存为 8MB,默认为16MB
builder.cacheSize(8);
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
builder.encryptionKey("my_h2".toCharArray());
/**
* 使用 LZF 算法在写入之前压缩数据。这将节省
* 大约 50% 的磁盘空间,但会减慢读写速度操作轻微
* */
builder.compress();
// 禁用自动提交事务,需要手动提交。
builder.autoCommitDisabled();
// 设置MVStore为只读模式,不能进行写操作。
// builder.readOnly();
builder.pageSplitSize(500);
builder.fileName(fileName);
MVStore store = builder.open(); String fileName = "/Users/chenfei/temp/my_store.db";
MVStore.Builder builder = new MVStore.Builder();
MVStore store = builder.open();如果是纯内存模式,它的 file header 就为空。只有是磁盘模式的时候才有 file header。
// 生成一个名为 cache_data 的 MVMap 对象
store.openMap("cache_data");MVStore 执行 openMap 方法的时候,如果 map 不存在就新建,存在就直接打开。如果是纯内存模式的,则是新建。


在 MVStore 中添加或者是删除数据,为了效率都是在内存中执行的,并没有刷到磁盘上,如果要刷到磁盘上需要调用 commite 方法。


说明一点:有些朋友有疑问,为什么 DawnSQL 选择 h2 的存储内核,而不是去重新做一个?这里主要是为了高用性!h2 作为成熟的数据库存储内核,已经在实际的项目中应用了多年,它是经得起考验的。如果新做存储内核,可能会给使用者带来高可用性上面的顾虑,所以我们再三权衡后选择更稳定可用性更高的方案。当然随着 DawnSQL 的发展和根据企业方的要求,我们也可以对其进行修改和重构!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。