2016-03-21 18 views
0

Ich bin neu zu Magnolia CMS und den Apache Jackrabbit Content Repository-Konzepten.Wie man die Daten von Magnolia CMS Apache Jackrabbit Inhaltsrepository zu normaler SQL SERVER Datenbank migriert

Es gibt eine Webanwendung, die Magnolia CMS verwendet. Magnolia verwendet SQL SERVER 2012-Datenbank als Persistenz-Manager. Hier ist die Apache Jackrabbit Content Repository Implementierung abgeschlossen. Es gibt zwei separate Konfigurationen des Magnolia CMS, die für die Anwendung verwendet werden, die als öffentliche Instanzen und Autoreninstanzen bezeichnet werden.

Jetzt versuchen wir, das vorhandene Magnolia CMS durch eine benutzerdefinierte ASP.NET MVC 5 Anwendung mit allen Funktionalitäten zu ersetzen.

Ich analysierte die Tabellen in der SQL SERVER-Datenbank und fand, dass Daten im Format von Node_ID und Bundle_Data gespeichert, die sehr schwierig zu analysieren ist. Kurz gesagt, es ist nicht einfach zu interpretieren.

Basierend auf dem benutzerdefinierten CMS wird ein neues Datenbankmodell für Autoreninstanz (SQL SERVER 2012) entwickelt.

Daher versuche ich als Teil der Migrationsaufgabe die alten Daten, die im SQL SERVER mit der Apache Jackrabbit Content Repository Implementierung gespeichert sind, auf einen normalen SQL SERVER 2012 zu migrieren (gemäß dem neuen Datenbankmodell).

Kann mir jemand helfen zu wissen, gibt es irgendwelche bewährten Methoden oder Tools zur Verfügung, um diese Aufgabe zu erfüllen.

Antwort

2

Die Frage ist mehr auf der hase-Seite, nicht so sehr auf der Magnolia Seite, vor allem, da Sie Magnolia ersetzen wollen ganz, nicht nur die Persistenz-Schicht:

Hier versuchen wir, zu ersetzen das vorhandene Magnolia CMS mit einer benutzerdefinierten ASP.NET MVC 5 Anwendung mit allen Funktionalitäten.

obwohl meine Frage ist wirklich, ob Sie wirklich wollen Hasen vollständig ersetzen, oder noch Hasen verwenden, um mit ASP.NET-Anwendung aber mit einem MS SQL Server-Datenspeicher (das wäre mein persönlicher Vorschlag)? Andernfalls werden Sie alle Vorteile von Jackrabbit loswerden.

Jackrabbit unterstützt SQL Server und ich würde vorschlagen, es zu verwenden.

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

Derzeit werden unterstützt: db2, derby, h2, MSSQL, MySQL, Oracle, Sqlserver.

Die Entwicklung eines WebCMS mit nur ASP.NET und SQL Server und ohne Content-Repository-Schicht zwischen klingt wie alles zu entwickeln, die ein WebCMS in der Regel mit von Grund auf neu kommt, vor allem, wenn Sie alle Funktionen haben wollen, dass Magnolia Angebote (Versionierung, Verlauf, Suche usw.).

Sie können Details zu Jackrabbit-Datenspeicher hier überprüfen: http://wiki.apache.org/jackrabbit/DataStore, obwohl ich mich wundere, warum Sie oder Ihr Kunde den Datenspeicher des Inhaltsrepositorys zu SQL Server ändern möchten.Ich denke, Sie sprechen nicht von der Verwendung von MySQL für die Persistenz der Metadaten, sondern wirklich, um den binären Inhalt zu speichern (ein Fehler, den übrigens OpenCms, ein anderes Java-basiertes Open-Source-WebCMS, im Architekturdesign gemacht hat - imho).

Beachten Sie, dass normalerweise große Dateien nicht in der Datenbank selbst (mit Magnolia), sondern im Dateisystem gespeichert werden.

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

BLOBs sind standardmäßig nicht in der Datenbank gespeichert, wenn sie eine bestimmte Schwelle definiertem in Ihrer Konfiguration Hasen überschreiten - stattdessen sie auf dem Dateisystem gespeichert werden. Der Standardschwellenwert für eine Magnolia-Installation ist 1024 Byte. Alle Dateien oberhalb des definierten Schwellenwerts werden auf das Dateisystem und nicht in die Datenbank gestellt.

Falls Sie wirklich wollen, ganz von Hase loszuwerden und nur SQL Server als Persistenz-Schicht verwenden und speichern alle binären Inhalt in sie unabhängig von ihrer Größe (nicht empfohlen), würde ich eine benutzerdefinierte Export schreiben/Importieren Sie Skript für sie, die das Jackrabbit Repo abfragt (Standard CMIS Protokoll) und nimmt den Inhalt aus dem Dateisystem, Lesen als FileInputStream und Schreiben in die Oracle DB (Beispiel: http://www.java2s.com/Code/Java/Database-SQL-JDBC/StoreBLOBsdataintodatabase.htm). Dies wäre meine vorgeschlagene Methode.

Ich glaube nicht, dass es dafür Werkzeuge out-of-the-box gibt.

+0

Vielen Dank für Ihre Angaben. Wirklich hilft es mir, weiter zu gehen. –