I like the idea, both for the efficiencies it enables in the FoundationDB data 
model and for the ability to cover a lot of validation functionality without 
shelling out to JS.

It’s pretty obviously a big, meaty topic unto itself, one that needs some 
careful thought and design. Also an awful lot of opportunity for scope creep. 
But a good topic nonetheless.

Adam

> On Jan 31, 2019, at 12:05 PM, Robert Newson <b...@rsn.io> wrote:
> 
> Hi,
> 
> An enhancement over the first idea (where we flatten JSON documents into keys 
> and values where the key is the full path to every terminal value, regardless 
> of depth in the JSON) is to allow users to register schemas.
> 
> For documents that match a registered schema (suggestion, a top level field 
> called "_schema" is required to mark the documents) we can convert to 
> key/value pairs much more compactly. The key name, barring whatever prefix 
> identifies the database itself, is just the name of the schema and the 
> ordinal of the schema item relative to the declaration.
> 
> These schema documents (living under /dbname/_schema/$scheme_name akin to 
> design documents) would list all required and optional fields, their types 
> and perhaps other constraints (like valid ranges or relationships with other 
> fields). We could get arbitrarily complex in schema definitions over time. 
> Effectively, these are validate_doc_update functions without the Javascript 
> evaluation pain.
> 
> We don't necessarily need this in the first version, but it feels like a 
> better response to the worries over the restrictions that the flattening idea 
> is causing than switching to an opaque series of 100k chunks.
> 
> thoughts?
> B
> 
> -- 
>  Robert Newson
>  b...@rsn.io
> 
> On Thu, 31 Jan 2019, at 16:26, Adam Kocoloski wrote:
>> 
>>> On Jan 31, 2019, at 1:47 AM, ermouth <ermo...@gmail.com> wrote:
>>> 
>>>> As I don't see the 10k limitation as having significant merit
>>> 
>>> Not sure it’s relevant here, but Mango indexes put selected doc values into
>>> keys.
>>> 
>>> ermouth
>> 
>> Totally relevant. Not just because of the possibility of putting a large 
>> scalar value into the index, but because someone could create an index 
>> on a field that is itself a container, and Mango could just dump the 
>> entire container into the index as the key.
>> 
>> Presumably there’s a followup discussion dedicated to indexing where we 
>> can suss out what to do in that scenario.
>> 
>> Adam

Reply via email to