如何将数据从 Magnolia CMS Apache Jackrabbit 内容存储库迁移到普通 SQL SERVER 数据库

Posted

技术标签:

【中文标题】如何将数据从 Magnolia CMS Apache Jackrabbit 内容存储库迁移到普通 SQL SERVER 数据库【英文标题】:How to migrate the data from Magnolia CMS Apache Jackrabbit content repository to normal SQL SERVER database 【发布时间】:2016-03-21 14:33:09 【问题描述】:

我是 Magnolia CMS 和 Apache Jackrabbit 内容存储库概念的新手。

有一个使用 Magnolia CMS 的 Web 应用程序。 Magnolia 使用 SQL SERVER 2012 数据库作为持久性管理器。 Apache Jackrabbit 内容存储库实现到此完成。 Magnolia CMS 有两种单独的配置用于应用程序,称为公共实例和作者实例。

现在,我们尝试用具有所有功能的自定义 ASP.NET MVC 5 应用程序替换现有的 Magnolia CMS。

我分析了SQL SERVER数据库中的表,发现数据以Node_ID和Bundle_Data的格式存储,很难分析。 简而言之,这并不容易解释。

基于自定义 CMS,开发了一种用于作者实例的新数据库模型 (SQL SERVER 2012)。

因此,作为迁移任务的一部分,我正在尝试将存储在带有 Apache Jackrabbit 内容存储库实现的 SQL SERVER 中的旧数据迁移到普通的 SQL SERVER 2012(根据新的数据库模型)。

任何人都可以帮助我了解是否有任何经过验证的方法或工具可用于完成此任务。

【问题讨论】:

【参考方案1】:

问题更多是在jackrabbit方面,而不是Magnolia方面,特别是因为您想完全替换Magnolia,而不仅仅是持久层:

现在,我们尝试将现有的 Magnolia CMS 替换为 具有所有功能的自定义 ASP.NET MVC 5 应用程序。

虽然我的问题确实是您是否真的想完全替换 Jackrabbit,或者 仍然在您的 ASP.NET 应用程序中使用 Jackrabbit 但使用 MS SQL Server 数据存储(这将是 我的个人建议)?否则你将失去 Jackrabbit 的所有好处。

Jackrabbit 确实支持 SQL Server,我建议使用它。

https://wiki.apache.org/jackrabbit/DataStore#Configuration-1:

目前支持的有:db2、derby、h2、mssql、mysql、oracle、 sqlserver。

仅使用 ASP.NET 和 SQL Server 开发 WebCMS,中间没有内容存储层,这听起来就像从头开始开发 WebCMS 通常附带的所有内容,特别是如果您想拥有 Magnolia 提供的所有功能(版本控制、历史、搜索等)。

您可以在此处查看有关 Jackrabbit 数据存储的详细信息:http://wiki.apache.org/jackrabbit/DataStore 尽管我想知道您或您的客户为什么要将内容存储库的数据存储更改为 SQL Server。我猜你说的不是使用 MySQL 来持久化元数据,而是真正存储二进制内容(顺便说一下,另一个基于 Java 的开源 WebCMS OpenCms 在他们的架构设计中犯了一个错误——恕我直言)。

请注意,通常大文件不存储在数据库本身(使用 Magnolia)中,而是存储在文件系统中。

https://wiki.magnolia-cms.com/display/WIKI/Setting+up+a+Jackrabbit+persistence+manager#SettingupaJackrabbitpersistencemanager-Datastorageandbackup:

默认情况下,当 BLOB 超过 在您的 Jackrabbit 配置中定义的某些阈值 - 相反 它们保存在文件系统中。 a 使用的默认阈值 Magnolia 安装是 1024 字节。所有高于定义的文件 阈值被放到文件系统中,而不是在数据库中。

如果你真的想完全摆脱 Jackrabbit 并且只使用 SQL Server 作为持久层并将所有二进制内容存储在其中而不考虑大小(不推荐),我会编写一个 custom为它导出/导入 script,它查询 Jackrabbit 存储库(标准 CMIS 协议)并从文件系统中获取内容,读取为 FileInputStream 并将其写入Oracle 数据库(例如:http://www.java2s.com/Code/Java/Database-SQL-JDBC/StoreBLOBsdataintodatabase.htm)。这将是我建议的方法

我认为没有任何开箱即用的工具

【讨论】:

感谢您的详细信息。真的是帮助我更进一步。

以上是关于如何将数据从 Magnolia CMS Apache Jackrabbit 内容存储库迁移到普通 SQL SERVER 数据库的主要内容,如果未能解决你的问题,请参考以下文章

将 Magnolia CMS 加密密码迁移到 Joomla CMS?

Magnolia CMS 和 Spring MVC

Magnolia CMS:如何配置代理和绕过

Magnolia cms Gmail 配置?

在 Magnolia CMS 社区中添加数据同步模块?

如何在 Magnolia CMS 中配置 My sql?