コミュニティ バージョンでhippocmsによって実行されるjackrabbit リポジトリのクラスタリングを開始しようとしています。起動して実行しましたが、構成の一部がわかりません。
私はこの方法で jackrabbitをクラスタリングする概念を理解しました: たとえば、共有データベースを介してロケット科学ジャーナルによって同期される 2 つのローカル リポジトリを持つ 2 つのインスタンスがありますが、すべてのノードがそのローカル リポジトリを使用しています。
次のページを読んだ後、次の構成になりました。
リンク:
- http://wiki.apache.org/jackrabbit/Clustering
- http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-core/src/test/resources/org/apache/jackrabbit/core/cluster/repository-h2.xml?view=co&content-type=text/プレーン
- http://greymeister.net/blog/2011/11/28/jackrabbit-clustering-primer.html
情報: sharedRepositoryDSは共有データベース リポジトリを指します。DS はローカル データベースを指します (各ノード上)。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Repository PUBLIC
"-//The Apache Software Foundation//DTD Jackrabbit 1.5//EN"
"http://jackrabbit.apache.org/dtd/repository-1.5.dtd">
<Repository>
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="url" value="java:comp/env/jdbc/sharedRepositoryDS"/>
<param name="driver" value="javax.naming.InitialContext"/>
<param name="schemaObjectPrefix" value="repository_"/>
<param name="schema" value="mysql"/>
</FileSystem>
<Security appName="Jackrabbit">
<SecurityManager
class="org.hippoecm.repository.security.SecurityManager"/>
<AccessManager
class="org.hippoecm.repository.security.HippoAccessManager"/>
<LoginModule
class="org.hippoecm.repository.security.HippoLoginModule"/>
</Security>
<Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/>
<Workspace name="${wsp.name}">
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="url" value="java:comp/env/jdbc/repositoryDS"/>
<param name="driver" value="javax.naming.InitialContext"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="schema" value="mysql"/>
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/sharedRepositoryDS"/>
<param name="schemaObjectPrefix" value="${wsp.name}_"/>
<param name="externalBLOBs" value="true"/>
<param name="consistencyCheck" value="false"/>
<param name="consistencyFix" value="false"/>
</PersistenceManager>
<SearchIndex class="org.hippoecm.repository.FacetedNavigationEngineImpl">
<param name="indexingConfiguration" value="indexing_configuration.xml"/>
<param name="indexingConfigurationClass"
value="org.hippoecm.repository.query.lucene.ServicingIndexingConfigurationImpl"/>
<param name="path" value="${wsp.home}/index"/>
<param name="useCompoundFile" value="true"/>
<param name="minMergeDocs" value="1000"/>
<param name="volatileIdleTime" value="10"/>
<param name="maxMergeDocs" value="1000000000"/>
<param name="mergeFactor" value="5"/>
<param name="maxFieldLength" value="10000"/>
<param name="bufferSize" value="1000"/>
<param name="cacheSize" value="100000"/>
<param name="enableConsistencyCheck" value="true"/>
<param name="autoRepair" value="true"/>
<param name="analyzer"
value="org.hippoecm.repository.query.lucene.StandardHippoAnalyzer"/>
<param name="queryClass" value="org.apache.jackrabbit.core.query.QueryImpl"/>
<param name="respectDocumentOrder" value="false"/>
<param name="resultFetchSize" value="100"/>
<param name="extractorPoolSize" value="0"/>
<param name="extractorTimeout" value="100"/>
<param name="extractorBackLogSize" value="100"/>
<param name="excerptProviderClass"
value="org.apache.jackrabbit.core.query.lucene.DefaultHTMLExcerpt"/>
<!-- supportHighlighting value is ignored, see REPO-711 -->
<param name="supportHighlighting" value="false"/>
<param name="supportSimilarityOnStrings" value="true"/>
<param name="supportSimilarityOnBinaries" value="false"/>
<param name="slowAlwaysExactSizedQueryResult" value="false"/>
<param name="onWorkspaceInconsistency" value="log"/>
<!-- optional cache parameters for faceted engine. The default size
when not configured is 1000 for both parameters -->
<!-- param name="docIdSetCacheSize" value="1000"/>
<param name="facetValueCountMapCacheSize" value="1000"/-->
</SearchIndex>
<ISMLocking
class="org.apache.jackrabbit.core.state.FineGrainedISMLocking"/>
</Workspace>
<Versioning rootPath="${rep.home}/version">
<FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
<param name="url" value="java:comp/env/jdbc/repositoryDS"/>
<param name="driver" value="javax.naming.InitialContext"/>
<param name="schemaObjectPrefix" value="version_"/>
<param name="schema" value="mysql"/>
</FileSystem>
<PersistenceManager
class="org.apache.jackrabbit.core.persistence.bundle.MySqlPersistenceManager">
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/sharedRepositoryDS"/>
<param name="schemaObjectPrefix" value="version_"/>
<param name="externalBLOBs" value="true"/>
<param name="consistencyCheck" value="false"/>
<param name="consistencyFix" value="false"/>
</PersistenceManager>
<ISMLocking
class="org.apache.jackrabbit.core.state.FineGrainedISMLocking"/>
</Versioning>
<DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
<param name="url" value="java:comp/env/jdbc/sharedRepositoryDS"/>
<param name="driver" value="javax.naming.InitialContext"/>
<param name="databaseType" value="mysql"/>
<param name="minRecordLength" value="1024"/>
<param name="maxConnections" value="5"/>
<param name="copyWhenReading" value="true"/>
</DataStore>
<Cluster id="node1" syncDelay="2000">
<Journal class="org.apache.jackrabbit.core.journal.DatabaseJournal">
<param name="revision" value="${rep.home}/revision.log" />
<param name="driver" value="javax.naming.InitialContext"/>
<param name="url" value="java:comp/env/jdbc/sharedRepositoryDS"/>
<param name="databaseType" value="mysql"/>
<param name="schemaObjectPrefix" value="journal_"/>
</Journal>
</Cluster>
</Repository>
質問:
- 構成は正しいですか?
- repository.FileSystem とは何ですか?
- repository.Workspace.FileSystem との違いは何ですか?
- PersistenceManager はデータの書き込みを担当していますが、なぜ共有データベースに書き込む必要があるのでしょうか? (このボトルネックを解消したいですよね?)
データベース テーブル
ローカル ノード データベースは次のようになります (私の好みでは少し小さすぎます)。
共有データベースは次のようになります。