Sling and other database technologies

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Sling and other database technologies

Yuri Simione
I like Sling project and Sling features: a super-smart way to add a rest interface to Jcr repositories.

I would like to use Sling for other back-ends, not limited Jcr repositories: how strong is the relationship between Sling and Jcr? How hard is a new Sling implementation that also manages graph or document databases?  

Thank in advance for your replies.

Regards,
Yuri Simione
http://Linekdin.com/in/yurisimione

Reply | Threaded
Open this post in threaded view
|

Re: Sling and other database technologies

Bertrand Delacretaz
Hi Yuri,

(dropping dev@, definitely a users question)

Thanks for your interest!

On Thu, May 31, 2018 at 4:16 PM, Yuri Simione <[hidden email]> wrote:
> ...I would like to use Sling for other back-ends, not limited Jcr repositories: how strong
> is the relationship between Sling and Jcr? How hard is a new Sling implementation
> that also manages graph or document databases?  ...

For historical context: when we created Sling back around 2007 there
were already Way Too Many Java Web Frameworks (TM) around, so we
decided to focus Sling on JCR as a differentiator - while avoiding to
hardcode that decision. And I suppose the vast majority of Sling users
are using it with JCR today.

However, JCR hasn't taken over the world, mostly due (IMO) to the
arrival of NoSQL databases just when JCR and its implementations
became mature - so it makes perfect sense to use Sling with other
backends.

We've been working on this, on and off I'd say, and in theory it is
perfectly possible to run Sling without JCR.

In practice, however, I see two things that might get in the way:

1) As few people are using Sling without JCR, and we don't run a
non-JCR integrations test suite there are probably some assumptions or
defaults that will cause some problems

2) As JCR provides lots of functionality out of the box, like search,
versioning, access control etc. you will have to find alternatives for
those things if you need them. Some of our contrib modules might help.

As starting points I suggest:

a) Playing with the ResourceProvider concept,
https://sling.apache.org/documentation/the-sling-engine/resources.html
- the planets example there is dead simple, but for read-only
resources.

b) Playing with the NoSQL ResourceProviders,
https://sling.apache.org/documentation/bundles/nosql-resource-providers.html

c) Maybe starting with a prototype that still uses JCR in places where
Sling really requires it (which hopefully are very few, or maybe even
none at all? Haven't tried myself lately) but uses another backend for
your application content, mounted as a ResourceProvider.

d) Maybe using a [nojcr] subject line header if discussing here, to
help raise attention

It would be fantastic to have concrete examples of Sling running on
non-JCR backends!

HTH,
-Bertrand