Hi,

Am So., 9. Feb. 2020 um 17:02 Uhr schrieb Marcus <couc...@wordit.com>:
>
> "Rule 5: Avoid the “database per user” anti-pattern like the plague
> If you’re building out a multi-user service on top of Cloudant, it is 
> tempting to let each user store their data in a separate database under the 
> application account. That works well, mostly, if the number of users is 
> small."
>
> Source: 
> https://www.ibm.com/cloud/blog/cloudant-best-and-worst-practices-part-1

I think the important part is:

"Now add the need to derive cross-user analytics. The way you do that
is to replicate all the user databases into a single analytics DB. All
good. Now, this app suddenly becomes successful, and the number of
users grow from 150 to 20,000. Now we have 20,000 replications just to
keep the analytics DB current. If we also want to run in an
active-active DR setup, we add another 20,000 replications and
basically the system will stop functioning."

> What are your personal experiences with large numbers of databases?

We do have a large number of databases, the per-user approach, self hosted.
BUT we do not have any continuous replications running to sync the
databases with an analytics database.

>From my understanding a database _not_ in use is just some files lying
around in the filesystem.
So I do not think it makes sense to talk about "maximum number of
databases" but to talk about "maximum number of _active_ databases"
and "maximum number of concurrent replications".

With the newish scheduling replicator¹ even a large number of
replications should not be much of an issue, since they are no longer
concurrent. Still the quote from "rule 4" applies:

"The replicator scheduler has a limited number of simultaneous
replication jobs it is prepared to run. That means that as the number
of databases grows, the replication latency is likely to increase if
you try to replicate everything contained in an account."

Please take this with a grain of salt, I haven't played around with
the scheduling replicator yet, since we have a working system where we
do one shot replications based on application knowledge so far less
than "number of active users" replications are even triggered.

[1]: http://docs.couchdb.org/en/master/replication/replicator.html

-- 
Stefan

Reply via email to