当前位置: 首页 > 工具软件 > MapDB > 使用案例 >

Cory Isaacson:MapDB是纯Java数据库,供Java开发人员使用。

席弘图
2023-12-01
CodeFutures(数据库可扩展套件dbShards的供应商,为关系DB提供真正的“无共享”架构的供应商)首席执行官Cory Isaacson向JAXenter谈到了MapDB – MapDB是Apache许可的开源数据库,特别是Java开发人员,有望成为Java。未来的存储引擎。

JAX:您能为我们的读者提供有关MapDB内容的总体看法吗?

艾萨克森(Isaacson): MapDB是纯Java数据库,面向Java开发人员。 自然使用所有基于Java Collections API(地图,列表,集合)的东西。

MapDB的关键是开发人员可以在新的敏捷范例中创建数据库结构,从而完全满足应用程序的需求。 这有点像在典型的数据库中创建模式,但是远远超出了典型键值存储所能做的。 例如,MapDB允许您创建相关的地图,以内置的数据关系支持对象语义。 这使得为​​应用程序所需的数据创建理想的结构变得非常直观-无需复杂的ORM(对象关系映射)框架。 只需创建您的地图,将它们绑定在一起,并使用与今天相同的语义和语法即可。

使用MapDB非常容易,开发人员所需要做的就是向类路径中添加一个jar,修改Map创建语法,其他所有方法都可以正常工作。 该项目具有强大的灵活性和强大功能,可提供与本地C语言嵌入式数据库(如BerkeleyDB和LevelDB)相媲美的性能。 使用MapDB,您可以访问10到100 GB的集合,这与访问小型内存对象存储的方式相同。

使用简单的Builder风格的API,MapDB的可配置性极高。 您可以配置缓存,存储类型,持久性保证和许多其他功能。 这样,您可以选择应用程序所需的功能和性能之间的适当平衡。

您正在尝试使用此软件解决什么问题?

这是一个很大的问题– MapDB可用于许多常见的用例和问题。 主要焦点是为Java开发人员提供一种自然的方式,使其能够以非常敏捷的范例访问具有精确匹配应用程序需求的架构的大型数据存储。

许多应用程序遇到的一个常见问题是Java堆内存不足,或者由于试图将太多对象塞入应用程序运行时而导致了过多的垃圾回收。 这几乎总是由于大量的内存收集(地图,列表等)而导致的“流失”。 将它们转换为MapDB,现在您可以在磁盘上以持久形式存储大量数据-带有自动内存缓存-完全使用与现有收集代码相同的API。

另一个大问题是如何以简单的方式执行许多常见的数据库任务(排序,遍历集合,事务)。 MapDB使用本地Java并发API和一些易于学习的扩展来支持所有这些。

是什么让您如此确信MapDB有很好的机会成为“事实上的标准Java存储引擎”?

由于MapDB灵活,快速且免费,可根据Apache 2.0许可在任何类型的项目中使用。 在许多情况下,除了编写自己的解决方案外,没有其他竞争。 将MapDB插入到现有项目中并立即在一个软件包中立即获得许多其他数据库产品的全部功能(其中大多数是商业性封闭源项目或具有限制性的“病毒性”开放源代码许可证)是微不足道的。

结果是MapDB功能强大,敏捷,灵活-并且可以以开发人员认为合适的任何方式免费使用和分发。

MapDB的发展历史如何?

DBM(数据库管理器)是Ken Thompson为UNIX编写的简单数据库引擎-基本上是磁盘上的哈希表。 JDBM(一个Java端口)项目是由一组开发人员于2000年左右开始的,2005年发布了JDBM 1.0。该项目由于没有太多积极的支持或兴趣而陷入困境,但是这种数据结构的潜力非常有用。

扬·科特克(Jan Kotek)致力于天文应用的持久性。 最初,他修改了H2数据库,但是SQL有大量开销。 在2010年,他花了几周的时间在智利安第斯山脉的偏远地区进行天文观测,但幸运的是,他的笔记本电脑上装有JDBM源代码。 为了克服漫长的无聊的日子(当然,所有天文学活动都在晚上进行),他开始修改和改进JDBM。 正如他们所说,剩下的就是历史了。

Jan很快发布了JDBM2,随后发布了JDBM3。 这些库被许多公司广泛使用。

Jan意识到依靠本地API建立完整,强大而灵活的Java数据库的潜力,于2013年初将项目重命名为MapDB,并离开了“日常工作”全职致力于该项目。在CodeFutures,我们长期使用JDBM和MapDB项目,并喜欢数据库及其潜力。 2013年11月,CodeFutures将Jan全职带入团队,为他提供了充分的自由和经济支持,以充分致力于使MapDB成为世界领先的Java数据库。

MapDB如此通用是否有任何缺点?

有一些缺点,奇怪的是,它们与MapDB灵活功能的敏捷性有关。 要了解各种配置选项以及构造数据以满足应用程序需求的多种方式,需要进行一些学习。 与其他新数据库选项(例如MongoDB和Redis)相比,此学习曲线具有可比性,而且可能更容易。 有多种使用MapDB的方法,我们正在努力改进文档以解决这些问题,包括常见用例的操作方法。

您说MapDB与原始设计目标有多接近?

这个想法是使数据库对于Java开发人员来说自然而然,它是一种敏捷的并且能够支持各种应用程序所需的数据结构。 在这方面,Jan在实现这些目标方面做得非常出色。

MapDB未来的发展路线是什么?

错误修复,错误修复,错误修复。

有许多新功能正在考虑中,还有待完成的TODO清单(400项改进)。 排在首位的是仅追加文件存储,改进的快照,增量备份和更快的提交。 列表中的另一个非常令人兴奋的新功能是完全支持Java 8中的新Lambda表达式。 这将在大型地图中实现真正的并行处理,从而加快诸如复杂聚合之类的功能。

是什么将CodeFutures吸引到MapDB,公司在哪里使用它?

CodeFutures在其产品中同时使用了JDBM3和MapDB,并且始终发现它非常快速,强大且易于实现。 该公司始终将重点放在高性能数据引擎上(我们不提供自己的数据库,我们使其他引擎变得更好)–因此,与Jan联手扩展MapDB的功能是很自然的。

您会说MapDB的主要功能是什么?您个人最兴奋的是什么?

  • 敏捷的数据结构,满足Java应用程序的确切需求
  • Java集合的直接替换
  • 全面的交易支持

MapDB周围有活跃的社区吗?

是的,有邮件列表,许多用户报告错误,发送测试用例和补丁。 我们看到越来越多的用户和公司正在利用MapDB,并将有助于进一步扩大社区。


翻译自: https://jaxenter.com/cory-isaacson-mapdb-is-a-pure-java-database-for-java-developers-107799.html

 类似资料: