On Wed, Apr 7, 2010 at 5:55 PM, Waldemar Kornewald <wkornew...@gmail.com> wrote:
> On Wed, Apr 7, 2010 at 5:22 PM, Alex Gaynor <alex.gay...@gmail.com> wrote:
>>> Other issues that spring to mind:
>>>
>>>  * What about nonSQL datatypes? List/Set types are a common feature of
>>> Non-SQL backends, and are The Right Way to solve a whole bunch of
>>> problems. How do you propose to approach these datatypes? What (if
>>> any) overlap exists between the use of set data types and m2m? Is
>>> there any potential overlap between supporting List/Set types and
>>> supporting Arrays in SQL?
>>>
>>
>> Is there overlap between List/Set and Arrays in SQL?  Probably.  In my
>> opinion there's no reason, once we have a good clean seperation of
>> concerns in the architecture that implementing a ListField would be
>> particularly hard.  If we happened to include one in Django, all the
>> better (from the perspective of interoperability).
>
> Do all SQL DBs provide an array type? PostgreSQL has it and I think it
> can exactly mimic NoSQL lists, but I couldn't find an equivalent in
> sqlite and MySQL. Does this possibly stand in the way of integrating
> an official ListField into Django or is it OK to have a field that
> isn't supported on all DBs? Or can we fall back to storing the list
> items in separate entities in that case?
>

I'd be -1 on using a separate entity, if it's supported it is, if not
it's not.  There's no reason it has to be included in Django in any
event (certainly none of the non-relational backends will be, at least
to start with).

>>>  * How does a non-SQL backend integrate with syncdb and other setup
>>> tools? What about inspectdb?
>>>
>>
>> Most, but not all non-relational databases don't require table setup
>> the way relational DBs do.  MongoDB doesn't require anything at all,
>> by contrast Cassandra requires an XML configuration file.  How to
>> handle these is a little touchy, but basically I think syncdb should
>> stay conceptually pure, generating "tables", if extra config is needed
>> backends should ship custom management commands.
>
> Essentially, I agree, but I would add things like auto-generated
> CouchDB views to the syncdb process (since syncdb on SQL already takes
> care of creating indexes, too).
>
>>>  * Why the choice of MongoDB specifically? Do you have particular
>>> experience with MongoDB? Does MongoDB have features that make it a
>>> good choice?
>>>
>>
>> MongoDB offers a wide range of filtering options, which from my
>> perspective means it presents a greater test of the flexibility of the
>> developed APIs.  For this reason GAE would also be a good choice.
>> Something like Riak or Cassandra, which basically only have native
>> support for get(pk=3) would be a poor test of the flexibility of the
>> API.
>
> MongoDB really is a good choice. Out-of-the-box (without manual index
> definitions) it provides more features than GAE and most other NoSQL
> DBs. MongoDB and GAE should also have the simplest backends.
>
> Why should the Cassandra/CouchDB/Riak/Redis/etc. backend only support
> pk=... queries? There's no reason why the backend couldn't maintain
> indexes for the other fields and transparently support filters on any
> field. I mean, you don't really want developers to manually create and
> query separate indexing models for mapping one field value to its
> respective primary key in the primary model table. We can do much
> better than that.
>

Because that's all they support out of the box.  You call it
maintaining an index, but it really means setting up a separate
"table" (in RDBMS parlance) and I think that's a level of emulation
that's far beyond what should be supported out of the box.  In any
event I can't stop someone from writing a backend that does do that
level of abstraction.

>>>  * Given that you're only proposing a single proof-of-concept backend,
>>> have you given any thought to the needs of other backends? It's not
>>> hard to envisage that Couch, Cassandra, GAE etc will all have slightly
>>> different requirements and problems. Is there a common ground that
>>> exists between all data store backends? If there isn't, how do you
>>> know that what you are proposing will be sufficient to support them?
>>>
>>
>> To a certain extent this is a matter of knowing the featuresets of the
>> databases and, hopefully, having a mentor who is knowledgeable about
>> them.  The reality is under the GSOC time constraints attempting to
>> write complete backends for multiple databases would probably be
>> impossible.
>
> Well, you might be able to quickly adapt the MongoDB backend to GAE
> (within GSoC time constraints) due to their similarity. Anyway, there
> is common ground between the NoSQL DBs, but this highly depends on
> what problem we agree to solve. If we only provide exactly the
> features that each DB supports natively, they'll appear dissimilar
> because they take very different approaches to indexing and if this
> isn't abstracted and automated NoSQL support doesn't really make sense
> with Django. OTOH, if the goal is to make an abstraction around their
> indexes they can all look very similar from the perspective of
> Django's ORM (of course they have different "features" like sharding
> or eventual consistency or being in-memory DBs or supporting fast
> writes or reads or having transactions or ..., but in the end only few
> of these features have any influence on Django's ORM, at all).
>
> Bye,
> Waldemar Kornewald
>
> --
> You received this message because you are subscribed to the Google Groups 
> "Django developers" group.
> To post to this group, send email to django-develop...@googlegroups.com.
> To unsubscribe from this group, send email to 
> django-developers+unsubscr...@googlegroups.com.
> For more options, visit this group at 
> http://groups.google.com/group/django-developers?hl=en.
>
>

Alex

-- 
"I disapprove of what you say, but I will defend to the death your
right to say it." -- Voltaire
"The people's good is the highest law." -- Cicero
"Code can always be simpler than you think, but never as simple as you
want" -- Me

-- 
You received this message because you are subscribed to the Google Groups 
"Django developers" group.
To post to this group, send email to django-develop...@googlegroups.com.
To unsubscribe from this group, send email to 
django-developers+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-developers?hl=en.

Reply via email to