iBoxDB的学习与使用

1. 引言

说说iBoxDB的优点:

1)无需安装,不像其他数据库比如MongoDB, MySQL 需要安装。iBOXDB只需要某个目录存放最终的数据即可。完全就像操作本地文件一 样,应该说比本地文件更方便。

2) 支持多种设备,只需要添加.Net 或者 Java驱动程序,就可以在多种设备上使用iBoxD,比如Android, Linux,Windows Phone, PC程序等。

3)提供数据库事务支持,可以使用类SQL语法存取对象数据。

4)提供索引,主键以及主从和多主的数据库热同步。

4) 性能优越,这里展示下iBoxDB官方网站提供的和MongoDB性能测试对比结果

这里可以看到iBoxDB有三种运行模式:File 、 MemoryMappedFile、 InMemory。熟悉操作系统的同学对这三个概念肯定不会陌生。它的性能一个比一个高。

2. iBoxDB 的 CRUD 操作

任何DB的肯定包含CRUD的操作,这里给出一个简单的C#实现。

函数 InitAndCreateAutoBox 初始化iBoxDB的环境,创建需要表以及指定主键,保存最终数据的目录。

从DB.Open()方法可获得一个AutoBox对象,这个对象是操作CRUD的。它不需要管理,也不需要释放。

比如:

另外一种方式就是利用AutoBox.Cube()获得一个Box对象,这个对象是用于控制事务的。此对象一定要释放,典型的就是利用using语句。

如果是一次性批量处理数据,最好是在一个事务中进行,建议使用Cube,这样效率可以达到最好。

3. iBoxDB下数据库同步

可以看到iBoxDB对于CRUD的便利,利用iBoxDB我们可以快速的搭建一个数据存储的原型并且Demo。但是如何才能将iBoxDB运用到实际的生产环境肯定还有很多工作需要完成。

如果数据量达到某种程度。对于Website而言数据库服务器很有可能成为网站的性能瓶颈。配置数据库的master slave 实现读写分离已经是老生常谈的问题。

不像MongoDB, 直接可以通过配置实现数据同步,iBoxDB 需要代码来实现同步,它提供两种形式:

不管哪种形式都,iBoxDB都用IBoxRecycler 实现数据同步。

这里自定义一个简单的接口实现,主要就是提取出master中数据存放到内存。

自定义Server来管理所有的master 和 slave 节点

最后启动Server:

4. 总结

iBoxDB 这样轻巧的数据库非常适合做项目Demo,但是在实际的Production环境中还是介意大家用MongoDB 等数据库。

Original: https://www.cnblogs.com/VectorZhang/p/5448622.html
Author: 禅宗花园…迷失的佛
Title: iBoxDB的学习与使用

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572574/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • SpringBoot+SpringCloud

    摘自《Java微服务分布式架构企业实战》 1 Spring Boot Spring Boot是用于构建微服务的基础框架,可以轻松地整合Spring Cloud实现系统服务化,在学习…

    Java 2023年5月30日
    061
  • ​打造企业自己代码规范IDEA插件(中)

    一些基本概念 在开始独立研发公司自己的代码规范检查规则之前,先介绍一些相关的基本概念。阿里巴巴代码规范很多规则其实都是基于开源框架PMD进行的研发。PMD用官方的话语介绍来说:PM…

    Java 2023年6月15日
    084
  • 使用JAVA CompletableFuture实现流水线化的并行处理,深度实践总结

    大家好,又见面啦。 在项目开发中,后端服务对外提供 API接口一般都会关注 响应时长。但是某…

    Java 2023年6月7日
    086
  • MQTT基础知识(摘抄自官网)

    前言: MQTT中文官网地址:http://mqtt.p2hp.com/mqtt-5-0 一:什么是Mqtt 答:MQTT是一个客户端服务端架构的发布/订阅模式的消息传输协议。它的…

    Java 2023年6月5日
    0101
  • Java RMI详解

    RMI:远程方法调用(Remote Method Invocation)。能够让在某个java虚拟机上的对象像调用本地对象一样调用另一个java 虚拟机中的对象上的方法。 RMI远…

    Java 2023年5月29日
    086
  • winform子线程修改界面控件的值

    示例代码 //代理:是应用程序向OS申请执行的一个函数;这里只给出了函数的"形" delegate void delSetText(TextBox txt, s…

    Java 2023年5月30日
    076
  • GBase 单表、多表、嵌套、高级查询

    餐前小点心: 排序:可以使&#x7528…

    Java 2023年6月9日
    076
  • java 代码的良好习惯

    有很多书籍提到了代码开发的良好习惯,但是自己看过后,在开发中并不能每次都想起来。在此处开贴做笔记,以后自己开发的代码,必须符合。 不要在一个代码块的开头把局部变量一次性都声明了(这…

    Java 2023年5月29日
    071
  • Hystrix 源码解读

    转载请注明出处: 1.引入依赖: 2. 查看自动配置类HystrixCircuitBreakerConfiguration 查看 org.springframework.cloud…

    Java 2023年6月8日
    070
  • Windows安装使用Chocolatey 包软件管理(类似 rpm , yum, brew , apt-get 包管理器工具)

    Windows也能像Linux或者Mac那样命令行安装管理软件了,,,真的太方便了 *下载安装 使用window powershell 用管理员运行 Set-ExecutionPo…

    Java 2023年6月15日
    095
  • 怎么样写出可读性强的文章

    1.你的写作听起要自然 大声朗读自己的草稿,听起来不通顺的地方修改直到读起来感到通顺。 2.力求简洁 简介并不是说不可以长篇大论。 如何做到简洁 ① 去除不必要的词,或不重要的引用…

    Java 2023年6月5日
    085
  • 开篇:Netty源码学习总结系列——线程调度模型全面总结

    前言和目标 首先,好久之前写了:Netty 学习笔记(1)Netty 通信原理,可惜很久没更新了,不少博客园的网友经常问,到底还写不写,后来连问都不问了,深表惭愧,从今天开始,重新…

    Java 2023年5月30日
    0184
  • IO流整的明明白白!

    ​ File课理解为文件和文件夹(目录),用于表示磁盘中某个文件或文件夹的路径。该类包含了文件的创建、删除、重命名、判断是否存在等方法。 ​ 只能设置和获取文件本身的信息(文件大小…

    Java 2023年6月7日
    0122
  • Mybatis-Plus使用@TableField实现自动填充日期

    一、前言 我们在日常开发中经常使用ORM框架,比如Mybatis、tk.Mybatis、Mybatis-Plus。不过最广泛的还是Mybatis-Plus,我们的一些表,都会有创建…

    Java 2023年6月15日
    085
  • idea使用教程-模板的使用

    一、代码模板是什么 它的原理就是配置一些常用代码字母缩写,在输入简写时可以出现你预定义的固定模式的代码,使得开发效率大大提高,同时也可以增加个性化。最简单的例子就是在Java中输入…

    Java 2023年6月5日
    073
  • Unity-2D

    Unity-2D 1.Unity中的2D模式: 1)游戏在二维上展示 启用 2D 模式时将会设置正交(即无透视)视图:摄像机沿 Z 轴观察,而 Y 轴向上增加。因此可以轻松可视化场…

    Java 2023年6月13日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球