On Sat, Sep 25, 2010 at 8:47 PM, Waldemar Kornewald <wkornew...@gmail.com> wrote: > Hi, > in my last discussion on django-users Russell told me that he'd like > to see four proof-of-concept (or better) backends before considering > NoSQL for inclusion in trunk.
The number 4 wasn't actually the important bit - it was that I want to see a range of noSQL approaches represented. I don't want to see 4 key-value stores; I want to see a key-value store, and a document store, and a column store, etc. I need to see that the API is rich enough to cover all noSQL bases. > The primary point was that enough > eyeballs have looked at the API, first. Now we finally have four > backends for Django-nonrel: > > App Engine (used in production), developed by Thomas Wanschik and me > http://www.allbuttonspressed.com/projects/djangoappengine > > MongoDB (used in production), developed by Flavio Percoco Premoli, > Alberto Paro, George Karpenkov, and me > http://github.com/FlaPer87/django-mongodb-engine > > Cassandra (alpha/experimental), developed by Rob Vaterlaus with very > minor hints from me > http://github.com/vaterlaus/django_cassandra_backend > > ElasticSearch (alpha/experimental), developed by Alberto Paro > http://github.com/aparo/django-elasticsearch > > All of them are based on our nonrel backend API (djangotoolbox.db). It > should be relatively easy to extend the API to support both > Django-nonrel and Alex' query-refactor branch at the same time. The > backends will probably only need minor changes, if at all. > > Russell and the rest of the Django core team, if we make those four > backends, developed with 12 eyeballs ;) work on the query-refactor > branch, what else is necessary to get NoSQL support into trunk? Please > don't tell me that you also want a CouchDB backend. :( > > My only requirement before porting the backends is that the > (Native)AutoField issue gets resolved, first. That will simplify our > porting effort and allow us to reuse our existing unit tests and > project code. Firstly, I need to see these backends actually implemented on query-refactor. Secondly, I need to have a better understanding of what is meant when you say "alpha/experimental" or "in production" support for a backend. I have no doubt that you can get any backend working for simple cases. I have no doubt that those simple cases may well be sufficient for certain production purposes. It's the complex cases that have me concerned. I need to know that a user of <insert NoSQL backend> won't be overwhelmingly surprised if they try to use Django to access their data store. What data store features features are and aren't supported? When a feature isn't supported, is this due to conceptual problems mapping the store onto the ORM, technical limitations of the store itself, or technical limitations imposed by the query-refactor branch? When a feature *is* supported, is it supported in a way that makes conceptual sense? To counter this, I would like to see a comprehensive summary of the state of play of the level of support for each storage backend. This includes: * How the ORM maps to the backend * Capabilities that are lost as a result of this mapping * Capabilities that have been implemented, and how * Capabilities that can't/haven't be implemented (and why) Features like CSRF and session messages maintained wiki pages with this sort of problem analysis prior to their merge to trunk. This serves as excellent design documentation describing why the feature is the way it is. I'd like to see an analogous page for query-refactor. Thirdly, I'd like to see some independent verification of the claims being made. It's fine to have the person who wrote a particular backend saying "feature XYZ is complete", but I'd like to see independent verification of this fact -- preferably from someone known to the core team, not just a random stranger. The panelists at the DjangoCon 2010 NoSQL panel would be a good starting place to look for this sort of verification, but they're certainly not the only candidates. My reason for wanting this is that I'm simply not an expert in any of these backends. I know SQL quite well, but I haven't had occasion to try out other backends in depth. I can judge the technical merits of a patch based on what I know, but I don't want to make a judgement based on incompletely knowledge. I need to rely on those that I know and trust to give me confidence that nothing has been missed. Lastly, we need to resolve the AutoField problem. This is the biggest outstanding technical issue. I can't say I've got any particularly brilliant ideas on how to solve it. Suggestions are welcome. As for timing: I'm on record saying a number of times now that this isn't something I'm targeting for 1.3. We need to have a release that is low on features and high on bugfixes. Given the time required to make large scale database backend changes, I simply don't have enough bandwidth to satisfy the community needs for 1.3 *and* the needs of query-refactor. However, if people like yourself that are motivated in this are can get the pieces in place during the 1.3 development cycle, query-refactor could be an early delivery in the 1.4 timeframe (i.e., early next year). Yours, Russ Magee %-) -- 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.