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

ModeShape介绍

翟冯浩
2023-12-01

ModeShape旨在成为可嵌入的分层数据存储.

ModeShape是一个分层的、事务性的、一致的数据存储库,支持查询、全文搜索、事件、版本控制、引用和灵活的动态模式。它非常快,高可用性,高度可伸缩,并且是100%开源的,用Java编写的。客户端使用(JSR-283)标准的Java API或者ModeShape的Rest API,可以通过JDBC和SQL查询内容。

基础概念

ModeShape engine是ModeShape中最核心的组件,负责管理所有仓库。在应用程序中,最好在应用程序的生命周期中合适的地方手动实现start(),deployRepository(…)和destroy()方法。

ModeShapeEngine 中的每个仓库都有一个为一个名字,应用程序可以通过名字来获取到仓库。如果应用程序环境中使用了JNDI,ModeShape可以把每个仓库注册到JNDI中。

仓库配置

每个仓库都有一个单独的json格式的配置文件,可以通过org.modeshape.jcr.RepositoryConfiguration类来读取配置文件,其返回值可以传递给ModeShapeEngine.deployRepository(…)和ModeShapeEngine.updateRepository(…)。

集群

ModeShape可以以仓库为单位部署集群。也就是说同样名称的仓库可以部署到多个引擎中,仓库实例之间会互相感知到变化。

集群有两个核心概念:

存储

ModeShape由自己的持久化存储库,但是不是所有都可以处理集群配置,只有数据库持久化存储可以处理集群,也就是说ModeShape只能在共享持久化存储下集群。

索引

每个仓库实例都可以使用索引来做查询。当集群化仓库时,仓库需要知道它是独有索引还是与其他仓库共享索引。

Each repository instance can use indexes to help answer queries. When clustering a repository, the repository needs to know whether it owns the indexes (in which case the repository will update the indexes to reflect all changes that originate from the local or remote repository instances) or whether indexes are shared (in which case the repository will update the indexes only when changes that are made with that repository instance).

本地索引配置起来更简单,但缺点是在发生变动时,所有仓库都要更新自己的索引。

共享索引配置起来更复杂,但能处理大量的更新请求。

模块

ModeShape是以JAR文件发布的。以下是其核心模块。

Public API

  • javax.jcr:标准JCR2.0 API。
  • modeshape-jacr-api:ModeShape基于jcr 2.0 API做的一些扩展,是可选的。

Core Modules

  • modeshape-common:定义了一些简单可公用的工具类。集成了一些工具,比如i18n,SLF4J,LOG4J等。
  • modeshape-schematic:针对JSON和BSON的工具库。将JSON存储在key-value库中,以集合的方式来记录文档的修改用于编辑JSON。
  • modeshape-jcr:包含ModeShapeEngine、JCR API实现类以及ModeShape公共API的主要模块。包含Connector API,BinaryStore SPI,file connector以及CND sequencer。

Sequencers

所有的sequencers工件命名为:modeshape-sequencer-name。sequencers的使用是完全可选的。

Connectors

所有的connector工件命名为:modeshape-connector-name。比如git的命名为 modeshape-connector-git。其使用也是完全可选的。

Index Providers

命名为 modeshape-name-index-provider,使用完全可选。

Web APIS

ModeShape有许多基于web的api,用于和仓库进行交互。

  • REST Service:包含导航,搜索,修改和删除仓库中几乎所有内容的功能。每个操作都会创建一个新的session。处理请求,并且关闭session。
  • WEBDAV Service:通过WebDAV暴露内容。
  • CMIS Service:通过CMIS对外暴露API。

这些服务可以集成在web应用中,每个服务与一个本地的ModeShapeEngine实例通信,与此实例部署的所有仓库通信。

JDBC Driver

ModeShape支持一些查询语言,客户端应用可以通过查询语言来获取内容。JCR-SQL2语言是目前最强大的查询语言,ModeShape提供了一个JDBC驱动,应用程序可以通过其查询仓库。

Deployment

除了集成在Java应用程序内部外,ModeShape也可以部署在Web或者服务器程序中。包括JCA Adapter和JBoss AS。

 类似资料: