ModeShape提供了哪些JackRabbit没有的功能?

28

我刚刚熟悉了Apache JackRabbit。 我做了一个小型的多用户文档管理存储库。

如果有人两者都使用过,可以回答以下问题吗?

  1. ModeShape是否与JBoss有关?我没有使用JBoss AS或任何其他JBoss工具的经验。我看到支持Tomcat,但有很多JBoss相关的东西。

  2. 文档说未来版本应该会有UI集成,它是在遥远的未来吗?这将是什么样的UI集成?是否有像JackRabbit中Hippo CMS那样使用ModeShape的东西?很遗憾Gatein没有使用它。

  3. 就全文搜索、索引和文本内容整体处理方面而言,JackRabbit与ModeShape相比如何?

  4. CMIS支持如何?我看到有一个未解决的问题MODE-650。 Jackrabbit由OpenCMIS(Apache化学)支持,即使在不久的将来也支持二级类型。

  5. 在开发人员处理节点时,支持/工具库怎么样?

我对任何其他比较意见都感兴趣,谢谢。

3个回答

38
我可以回答您的一些问题。完全透明:我是ModeShape的创始人和项目负责人。
简单来说,ModeShape是一个轻量级、可嵌入、可扩展的开源JCR存储库实现,可以联合和统一来自多个系统的内容,包括文件系统、数据库、数据网格、其他存储库等。您可以使用JCR API访问您已经拥有的信息,或者像传统的JCR系统一样使用它。
以下是ModeShape的一些高级特性:
  • 支持所有JCR 2.0所需的功能:获取存储库;身份验证;读取/导航;查询;导出;节点类型发现;权限和能力检查
  • 支持大多数JCR 2.0可选功能:写入;导入;观察;工作区管理;版本控制;锁定;节点类型管理;同名兄弟节点;有序子节点;可共享节点;以及使用自动创建属性的、和混合。
  • 支持JCR 1.0和JCR 2.0语言(例如XPath、JCR-SQL、JCR-SQL2和JCR-QOM),还支持基于JCR-SQL2全文搜索表达式语法的全文搜索语言。此外,ModeShape支持对JCR-SQL2的一些非常有用的扩展:
    • 在条件中使用子查询
    • 集合操作(例如"UNION"、"INTERSECT"、"EXCEPT",每个操作都有可选的"ALL"子句)
    • 限制和偏移量
    • 重复项去除(例如,"SELECT DISTINCT")
    • 附加深度、引用和路径条件
    • 集合和范围条件(例如"IN"、"NOT IN"和"BETWEEN")
    • 算术条件(例如"SCORE(t1) + SCORE(t2)")
    • 完全外部连接和交叉连接
    • 等等
  • 可以选择多个存储选项,包括RDBMS(通过Hibernate)、数据网格(例如Infinispan)、文件系统,或根据需要编写自己的存储连接器。
  • 使用JCR API访问现有服务、文件系统和存储库中的信息。ModeShape连接器将外部信息投影到JCR存储库中,可能将来自多个系统的信息联合到单个工作区中。也可以编写自定义连接器以访问其他系统。
  • 上传文件,并使ModeShape自动解析和派生代表这些文件内容的结构化信息。此派生信息存储在存储库中,可以像任何其他内容一样查询和访问。ModeShape支持许多文件类型,包括:CND、XML、XSD、WSDL、DDL、CSV、ZIP/JAR/EAR/WAR、Java源代码、Java类文件、Microsoft Office、图像元数据和Teiid模型和VDB。编写其他文件类型的序列化程序也非常容易。
  • 自动化和可扩展的MIME类型检测,具有使用文件扩展名和使用Aperture进行基于内容的检测的开箱即用检测。
  • 可扩展的文本提取框架,具有对Microsoft Office、PDF、HTML、纯文本和XML文件使用Tika的开箱即用支持。
  • 使用JGroups进行简单的集群。
  • 将ModeShape嵌入到自己的应用程序中。
  • RESTful API(需要部署到应用程序服务器中)。

这些只是一些亮点。有关这些和其他ModeShape功能的详细信息,请参阅ModeShape 文档

现在,以下是您编号问题的具体答案:

ModeShape托管在JBoss.org,并使用/集成其他JBoss技术,因为我们认为重用最佳库是更好的选择。但是ModeShape绝对不会与JBoss应用服务器捆绑在一起。ModeShape可以像其他JCR实现一样(通常嵌入到Web应用程序中)在其他应用服务器上使用。此外,ModeShape可以嵌入到任何应用程序中;它只是一个普通的Java库。它甚至使用SLF4J,以便将ModeShape日志消息发送到应用程序的日志框架中。
现在,话虽如此,我们确实使得部署ModeShape到JBoss AS安装变得更加容易,只需简单地解压缩,根据您的需要自定义配置,然后启动您的应用服务器。ModeShape将作为应用服务器中的服务运行,允许您的已部署应用程序简单地查找、使用和共享存储库。ModeShape甚至可以使用JBoss AS控制台进行监视。
我认为您指的是我们计划开发一个存储库可视化工具(远不及完整的CMS系统)。该工作最近才开始,我们欢迎任何见解、功能请求和与我们合作的兴趣。我知道Magnolia可以在ModeShape之上运行,但不确定其他CMS应用程序是否能够做到这一点。JBoss企业数据服务(EDS)平台也包括ModeShape,并将其用作元数据存储库。JBoss业务规则管理系统也可以使用ModeShape作为其JCR存储库。
ModeShape和Jackrabbit都在内部使用Lucene进行全文搜索和查询。在这方面,它们非常相似。当然,ModeShape的搜索和查询解析和执行实现与Jackrabbit不同,并且实际上是由实现MetaMatrix关系导向集成和联合引擎(现在是JBoss EDS的一部分)的某些人员编写的。因此,ModeShape为其每种查询语言都有一个单独的解析器,但在此之后,所有查询的验证、计划和执行都以相同的方式完成。我们为我们的查询引擎的功能和性能感到非常自豪!
ModeShape没有连接到其他CMIS系统的连接器,但正如您指出的那样,这正在进行中(MODE-650)。我们也希望与Apache Chemistry团队合作,确保JCR适配器与ModeShape一起工作。我们只是没有时间去做。ModeShape确实有一个JcrTools实用程序类,可能会证明有用。但是,在JCR API之上编写的任何实用程序类都应该可以正常工作。
希望能帮到你!

1
哇,Randall,你可能让我把基于Jackrabbit的存储库五天的工作都丢掉了,然后重写成ModeShape。真是让人气馁 :-) 谢谢你带来的见解和全面的概述。 - lisak
Sequencers的设计和理念非常出色。非常有用且易于维护。 - lisak
顺便说一句,你很可能已经知道了,但是关于UI可视化方面,这个github.com/sourcesense/modeshape-stone是一个2.4Final的分支,可以与Apache Sling一起运行,怎么样? - lisak
@Vijay Kiran,这是线程http://dev.day.com/discussion-groups/content/lists/sling-users/2010-12/2010-12-15_Sling_ModeShape_Alessandro_Novarini.html...最后的邮件表明愿意将其合并回modeshape。 - lisak
好问题和好答案。我想知道现在5年后和有了JackRabbit Oak之后它们如何相比。我目前正在评估/比较两个选项以在项目中使用。(我来自Alfresco方面,但该组件将被其中一个替换。) - Mathias Conradt
显示剩余4条评论

4

ModeShape的文档似乎更好。与其他Apache项目相比,Jackrabbit的文档提供有限。我想,如果您需要花哨的(企业级)功能,他们希望您为此付费。还要注意,您几乎被迫使用SQL数据库作为后端。因为几乎所有其他后端都“不适用于生产使用”。与ModeShape相比,它直截了当地说明了

这实际上是 ModeShape 的主要目的:提供 JCR 实现,以便访问存储在许多不同类型系统中的内容,包括多个系统的联合。ModeShape 存储库不是另一个信息孤立体,而是您已经在环境中拥有的信息的JCR视图:文件系统、数据库、其他存储库、服务、应用程序等。通过标准的 Java API,ModeShape 可以帮助您了解已经拥有的系统和信息。

我宁愿选择这种清晰度,而不是让人们搜索他们的文档和谷歌寻找不存在的信息。


3
"其他后端不适合生产使用" - 你在哪里看到的?我认为Jackrabbit只是一个基于文件系统支持的存储库?当然,我们付费使用的CQ CRX也使用文件系统存储库。 - Rup

1
上面的比较已经过时了;现在你需要将modeshare与jackrabbit oak进行比较。 http://jackrabbit.apache.org/oak/

Jackrabbit Oak是一个旨在实现可扩展和高性能的分层内容库,可用作现代一流网站和其他要求严格的内容应用程序的基础。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接