Patches welcome :) — Professional Support for Apache CouchDB: https://neighbourhood.ie/couchdb-support/
24/7 Observation for your CouchDB Instances: https://opservatory.app SQL Queries for CouchDB: https://neighbourhood.ie/products-and-services/structured-query-server > On 14. Jun 2024, at 13:59, Markus Doppelbauer <doppelba...@gmx.net.INVALID> > wrote: > > Perhaps it wouldn't be too hard to make CouchDB scalable: > > a) When creating a view: add an option to a "key-range map": > Maybe via callback(): "byte-range -> shard" > Something like: from "aa" to "bb" -> node-0; and so on > > b) During "indexing": Store the emitted view-index on the shard > according to the "range-map" > Similar to a partition key, but scalable > > c) During "query": e.g.: startkey=fooAAA & endkey=fooBBB & limit=10 > Map-reduce to query "fooAAA" from shard-8 and "fooBBB" from shard-9 > > CouchDB scales out to 10000+ nodes. > The query only asks 1, maybe 2 shards > > > > Am Mittwoch, dem 12.06.2024 um 16:47 -0400 schrieb Nick Vatamaniuc: >> On Wed, Jun 12, 2024 at 3:54 PM Markus Doppelbauer >> < >> doppelba...@gmx.net.invalid >>> wrote: >> >>> Dear Nick, >>> >>> This means: >>> If Q+N are large enough to distribute the data to all >>> nodes, e.g. 120 nodes Q=40, N=3 >>> Then the view-query: startkey=foobar&endkey=foobaz >>> has to ask all 120 nodes? >>> >> >> In the initial startup phase it could query all 120 nodes, then it >> will >> pick 40 shard workers and will stream from those only. >> >> You do have some control where each of the 3 copies of shards end up: >> https://docs.couchdb.org/en/stable/cluster/databases.html#placing-a-database-on-specific-nodes >> >> >> >>> If I use a partion-key, is it possible to distribute the partioned- >>> view >>> among multiple nodes? >>> The docs say it should stay under 10GB. >>> >> >> A partition cannot be split across multiple shard ranges. A single >> shard >> range can contain multiple partitions. So, for a given partition key, >> it >> would pick a particular shard range from Q, and then it would pick >> one of >> the N copies (usually 3) to stream from. >> >> Cheers, >>> Markus >>> >>> >>> >>> Am Mittwoch, dem 12.06.2024 um 13:54 -0400 schrieb Nick Vatamaniuc: >>>> Another feature related to efficient view querying are >>>> partitioneddatabases: >>>> https://docs.couchdb.org/en/stable/partitioned-dbs/index.html.It's >>>> a >>>> bit of a niche, as you'd need to have a good partition key, >>>> butaside >>>> from that, it can speed up your queries as responses would be >>>> comingfrom a single shard only instead of Q shards. >>>> >>>> >>>> On Wed, Jun 12, 2024 at 1:30 PM Markus Doppelbauer< >>>> doppelba...@gmx.net.invalid >>>>> wrote: >>>>> Hi Nick,Thank you very much for your reply.This is exactly what >>>>> we >>>>> are lookingfor.There are so many DBs that store the secondary >>>>> indexlocally(Cassandra, Aerospike, SyllaDB, ...)Thanks again >>>>> for >>>>> the answerMarcus >>>>> >>>>> Am Mittwoch, dem 12.06.2024 um 13:23 -0400 schrieb Nick >>>>> Vatamaniuc: >>>>>> Hi Marcus,The node handling the request only queries the >>>>>> nodes >>>>>> with shardcopies ofthat database. In a 100 node cluster the >>>>>> shards for thatparticulardatabase might be present on only 6 >>>>>> nodes, depending on theQ and Nsharding factors, so it will >>>>>> query >>>>>> 6 out 100 nodes. Forinstance, for N=3and Q=2 sharding >>>>>> factors, it >>>>>> will first send N*Q=6requests, and wait untilit gets at least >>>>>> one >>>>>> response for each of theQ=2 shard ranges. Thishappens very >>>>>> quickly. Then, for the duration ofthe response, it will >>>>>> onlystream responses from those Q=2 workers.So, to summarize >>>>>> for >>>>>> a Q=2database, it will be a streaming responsefrom 2 workers. >>>>>> For >>>>>> Q=4, from 4workers, etc...Cheers,-Nick >>>>>> On Wed, Jun 12, 2024 at 1:00 PM Markus Doppelbauer< >>>>>> doppelba...@gmx.net.invalid >>>>>>> wrote: >>>>>>> Hello,Is the CouchDB-view a "global" or "local" index?For >>>>>>> example, if acluster has 100 nodes, would the query askfor >>>>>>> a >>>>>>> single node - or100 >>>>>>> nodes?/.../_view/posts?startkey="foobar"&endkey="foobaz"Bes >>>>>>> t >>>>>>> wishesMarcus >