Hello,

Just to add the modest perspective of a user. I appreciate the benefits of 
taking advantage of the infrastructure provided by FDB both from a quality 
perspective and from a maintenance and ease of expansion perspective.

However, this development makes me really worried of being burned as a user so 
to speak. Losing arbitrary reduce functions would be a big concern. But losing 
arbitrary startkey and endkey would be an even bigger concern.

This is not about the inconvenience of updating our codebase, this is about 
losing the ability to do quite significant things, losing expressiveness so to 
speak. We make extensive use of startkeys/endkeys for things ranging from 
geoqueries using a simple application-based geohash implementation, all the way 
to matching the documents belonging to a tenant using complex keys. So if this 
is indeed the feature we'd be losing, this is quite a big deal in my opinion. I 
think all our data access layers would need to be rewritten but I do not even 
know how.

For I do not know if we are representative, but we intentionally stay away from 
Mango to leverage the performance benefits of using precomputed views which see 
as a key feature of Couchdb. Mango is quite non-deterministic when it comes to 
performance (defining the right indexes is cumbersome compared to using views, 
and its difficult to know if a query will be completed by doing in-memory 
filtering). And people keep reporting a number of troubling bugs. So moving 
people to Mango is not only about updating applications, this is also losing 
quite substantial features.

All in all, my point is that with that the changes I hear, I feel like a lot of 
the technical assumptions we made when we settled on Couchdb would no longer 
hold. There are patterns we wouldn't be able to use, and I don't even think 
that it would still be possible to develop real world applications solely 
relying of the view/reduce pipeline only if we do not have the level of 
expressiveness provided by custom reduce and arbitrary startkeys/endkeys. 
Without these two structures, we will burned in certain situations.

Just wanted to voice this concern to highlight that there are folks like us for 
who the API of the view/reduce pipeline is central. So that hopefully this can 
be taken into account as the merits of this proposal are being reviewed.

________________________________
De : Dave Cottlehuber <d...@skunkwerks.at>
Envoyé : samedi 26 janvier 2019 15:31:24
À : dev@couchdb.apache.org
Objet : Re: [DISCUSS] Rebase CouchDB on top of FoundationDB

On Fri, 25 Jan 2019, at 09:58, Robert Samuel Newson wrote:
>

Thanks for sharing this Bob, and also thanks everybody who shared their
thoughts too.

I'm super excited, partly because we get to keep all our Couchy
goodness, and also that FDB brings some really interesting operational
capabilities to the table that normally you spend a decade trying to
build from scratch. The level of testing that has gone into FDB is
astounding[1].

Things like seamless data migration, expanding storage and rebalancing
shards and nodes, as anybody who's dealt with large or long-lived
couchdb clusters knows are Hard Problems today.

There's clearly a lot of work to be done -- it's early days -- and it
changes a lot of non-visible things like packaging, dependencies,
cross-platform support, and a markedly different operations model -- but
I'm most excited about the opportunities here at the storage layer for
us.

Regarding handling larger k/v items than what fdb can handle, is covered
in the forums already[2] and is similar to how we'd query multiple docs
from a couchdb view today using an array-based complex/compound key:

[0, ..] would give you all the docs in that view under key 0

except that in FDB that query would happen for a single couchdb doc, and
returning a range query to achieve that. Similar to multiple docs, there
are some traps around managing that in an atomic fashion at the higher
layer.

I'm sure there are many more things like this we'll need to wrap our
heads around!

Especial thanks to the dual-hat-wearing IBM folk who have engaged with
the community so early in the process -- basically at the napkin
stage[3].

[1]: https://www.youtube.com/watch?v=4fFDFbi3toc
[2]: 
https://forums.foundationdb.org/t/intent-roadmap-to-handle-larger-value-sizes/126
[3]: https://www.computerhistory.org/atchm/the-two-napkin-protocol/ the
famous napkin where BGP, the modern internet's backbone routing
protocol, was described.

A+
Dave

Reply via email to