[
https://issues.apache.org/jira/browse/SYNCOPE-1006?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15856313#comment-15856313
]
Francesco Chicchiriccò commented on SYNCOPE-1006:
-------------------------------------------------
Another option we could evaluate is to embed ElasticSearch in Syncope - see
this [blog
post|http://geekabyte.blogspot.be/2015/08/embedding-elasticsearch-in-spring.html]
for an idea - and to leverage JPA entity listeners to update ElasticSearch
indexes whenever users, groups or any objects are created, updated or deleted.
At that point, a new implementation of
[AnySearchDAO|https://github.com/apache/syncope/blob/2_0_X/core/persistence-api/src/main/java/org/apache/syncope/core/persistence/api/dao/AnySearchDAO.java]
could be provided, relying on the embedded ElasticSearch, rather than the
current
[JPAAnySearchDAO|https://github.com/apache/syncope/blob/2_0_X/core/persistence-jpa/src/main/java/org/apache/syncope/core/persistence/jpa/dao/JPAAnySearchDAO.java]
which is querying the SQL views.
Finally, we should also provide instructions to setup an embedded ElasticSearch
cluster, for covering the case of Syncope HA deployments.
It seems that such JPA + ElasticSearch approach has some supporters (Hibernate
provides even a dedicate module for that).
> Performance and NoSql database support
> --------------------------------------
>
> Key: SYNCOPE-1006
> URL: https://issues.apache.org/jira/browse/SYNCOPE-1006
> Project: Syncope
> Issue Type: Improvement
> Reporter: Laszlo Miklosik
> Labels: Improvement
>
> CRUD via the API and especially the search are very slow when you have e.g.
> 400.000 users with 30-40 normal attributes in place.
> JPA and relational databases are not the optimal solution for the performance
> sensitive problem of provisioning and Syncope's search query builder is a
> very complex/fragile piece of code.
> I am using Syncope 1.1.5 at the moment but I expect no miracles from 1.2.10
> or 2.x with this amount of users and the same persistence solution.
> I am raising this ticket because I did not find performance related items
> planned in the Syncope roadmap.
> - Do you consider switching the persistence layer to a document store (e.g.
> MongoDB)? I think its schema-less nature would be ideal for storing flexible
> attributes and this way the row/document count explosion problem would be
> avoided by design.
> - Another possible performance improvement would be an async layer for the
> persistence and/or the REST API as well. Maybe using e.g. Redis or other
> publish-subscribe solution for this part?
> Thanks!
--
This message was sent by Atlassian JIRA
(v6.3.15#6346)