At first I wanted to write a persistence manager for Amazon SimpleDB
with a straigt-forward mapping of Nodes -> Items and Properties ->
Attributes, but it turned out not feasible at all. The problem is that
Attributes (the only ones that can store actual data) are String-only
and limited to 1024 chars (!). Also you can have a maximum of 256
attributes per Item.
So I swapped to S3. It is out of beta and gives you immediate access
anyway ;-) I hope to get that remaining issue(s) fixed and will
contribute the project to the Jackrabbit sandbox, hopefully during
next week. The actual implementation is rather trivial, I am using the
JetS3t lib, which makes it very simple. From there on one can think
about doing an spi2amazon implementation or similar thing, based on
the experiences with S3 as bundle PM backend.
Alex
Am 11.01.2008 um 16:45 schrieb Sena Gbeckor-Kove:
Hi,
I haven't looked at the JackRabbit code for ages, I was thinking
abut doing something similar a while back. With the release of the
Amazon database, I was thinking that a mixture of the database and
S3 (binaries etc) might be a really good fit.
Maybe we should have a chat and do it together?
S
On 11 Jan 2008, at 15:32, Alexander Klimetschek wrote:
Hi all,
I am currently writing a BundlePersistenceManager for Amazon S3
(first started with a normal PM, but bundle seemed more feasible) .
I am using the binary serialization of the BundleBinding that is
also used by the DB Bundle PMs and always store the node data
inside the serialized node bundles, avoiding the BlobStore
interface (by setting the BundleBinding minBlobSize to the maximum).
Now I have problems when I test it with the JCR API test suite.
Some test cases work, but some fail. I just want to know if it is
normal for thoses test cases to fail or if someone has an idea what
the problem could be? I develop against the 1.3 branch and use the
tests from there as well. Here are two errors:
junit.framework.AssertionFailedError: Workspace does not contain
test data at: /testdata
at junit.framework.Assert.fail(Assert.java:47)
at
org
.apache.jackrabbit.test.AbstractJCRTest.setUp(AbstractJCRTest.java:
357)
at
org.apache.jackrabbit.test.api.RootNodeTest.setUp(RootNodeTest.java:
47)
at junit.framework.TestCase.runBare(TestCase.java:125)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at
org.apache.jackrabbit.test.AbstractJCRTest.run(AbstractJCRTest.java:
404)
testGetName
(org.apache.jackrabbit.test.api.WorkspaceReadMethodsTest) Time
elapsed: 0.004 sec <<< ERROR!
javax.jcr.NoSuchWorkspaceException: test
at
org
.apache
.jackrabbit
.core.RepositoryImpl.getWorkspaceInfo(RepositoryImpl.java:678)
at
org.apache.jackrabbit.core.RepositoryImpl.login(RepositoryImpl.java:
1169)
at
org
.apache
.jackrabbit
.core.jndi.BindableRepository.login(BindableRepository.java:185)
at
org
.apache
.jackrabbit
.test.RepositoryHelper.getReadOnlySession(RepositoryHelper.java:133)
at
org
.apache
.jackrabbit
.test
.api
.WorkspaceReadMethodsTest.testGetName(WorkspaceReadMethodsTest.java:
63)
The latter one is odd: I couldn't find the place in the test case
where the workspace "test" would be created. There is no "test"
workspace in the file system structure as well.
I have only these 6 bundles stored in S3 when the test cases are
done:
default/013b1937-85f4-45a6-8e16-1b136d693cea
default/0fab396b-92b3-45cb-b13b-b6501b72d8f7
default/5f949e64-4bb8-4689-8c22-469f07b1dfaa
default/cafebabe-cafe-babe-cafe-babecafebabe
default/deadbeef-cafe-babe-cafe-babecafebabe
version/deadbeef-face-babe-cafe-babecafebabe
Thanks for any hints in advance!
Alex
BTW: I know that this won't be the most efficient PM as the HTTP
connection delay to S3 is slowing things down. It's more a fun
project - and maybe it's fast enough when running on a EC2 machine.
I w
--
Alexander Klimetschek
[EMAIL PROTECTED]