Since haven't seen a response to my other questions and with Malcolm's rebuff to your idea, do I take it you aren't interested any more?
Graham On Nov 27, 5:19 pm, Brian <[EMAIL PROTECTED]> wrote: > Malcolm: > > Thanks for the reply. > > > Whilst I'm all in favour of attempting to solve problems given arbitrary > > constraints as a thought exercise, I think this one isn't really the > > best practical solution to anything. > > I'm sure that's a fault of my explanation, not the design. ;o) > > > > > You are proposing having a single addressable URL that points to vastly > > different content based on some other, transparent piece of information > > (a cookie). Why not use the URL space as it's been designed and give > > each instance its own URL? We have the domain namespace for that at the > > topmost level, as well as the full URL namespace for subdivisions at a > > different layer: www.example.com/user1/andwww.example.com/user2/, > > for example. You can do the authentication checks as an addendum to > > that, for example at the indivdual lighttpd (or other webserver of > > choice) level. > > > I'll go so far as to claim that your proposed setup up breaks the web. > > Not a single request to that site will be effectively long-term > > cacheable, since they will all have to vary on cookie. And you're using > > the same resource name for an arbitrarily large number of difference > > resources. The web performance and behaviour of people using such a > > setup is actively harmed when it's so easily avoidable. > > You're right in that the clandestine compacting of the url (especially > with disregard to plausible collisions) in lieu of a cookie to make > decisions about what the webserver resource location generally flies > in the face of fundamental principles of web design. However, this > choice has been carefully contemplated, though it may be reconsidered. > > For edification, the project is not a public web-site, but has limited > authenticated-only access, with all transmissions encrypted. There is > a one-to-one mapping between authenticated users' account (and, > notably, a cookie of theirs) and the content they may access on the > site; i.e. user1 may have example.com/link, and user2 have example.com/ > link. They are mutually exclusive, and neither is ever accessible by > the public. Thus the userx/ is superfluous. As well, due to the nature > of the site, it is extraordinarily unlikely that it would be accessed > by the same web browser for different accounts. It's all rather > unconventional, I admit, but certainly not arbitrary. > > As well, while there will be object caching, page caching is not the > right answer; the content is highly dynamic and it is a relatively low- > volume site, so caching is not a major concern. > > All to say, I'm cognizant of the concerns expressed, and while I'd > agree with your concerns for conventional web-sites, I'm quite > confident in the defensibility of the design choices made, poorly > though I may have explained them. I'm rather certain it won't break > the web. In any event URL compaction is not relevant to the crux of > the real problem, and as you suggest below, URL compaction it's just a > mod_rewrite. Please disregard any references to URL mapping or > compaction. > > > If you really, really wanted to go down the one name to rule them all > > path (for example, it wins you a really large bet that you accepted by > > accident), you could use mod_rewrite to do an internal redirect to the > > individually named URLs (maybe combined with some other modules). > > > I'm not going to participate much more in this, since there isn't really > > any Django content here (you mention the word Django a few times, but > > nothing is specific to Django or even uses Django in the solution you've > > proposed). I think re-evaluating your initial design would be > > beneficial, though. > > Quite alright. The question at hand is where to demultiplex a user > request to their respective datesets. It can happen either in Django > or at the web-server. I believe the crux of the problem, if Django is > the demultiplexer, could be expressed (making some presumptions about > plausible solutions) as follows: > > How could one have a Django installation, where (for example) one may, > based on the account of the logged-in User: > > (a) Add a "prefix_" to each database table; or > > (b) Change the database. > > I'd be particularly interested in seeing, for example, middleware that > takes a Request's User and changes the django.conf.SETTINGS > ['DATABASE_NAME'] to the database for this user's account, or > alternatively sets a prefix for all subsequent database access. > > However, this middleware approach raises red flags (and I don't know > Django well enough to overcome them), viz. > * Is changing django.conf.SETTINGS thread-safe? > * Is there just an inherent danger in changing django.conf.SETTINGS -- > would the DB connection be setup already? > * Is changing the DB connection part of the public API? > > I'm also conscious that these could require User authentication to be > stored and accessed in a different mechanism than the accounts' > respective databases. That's easy enough thanks to the delightfully > decoupled user authentication system in Django. > > I hold out hope that there is a brilliant, simple solution to this > problem via Django. However, my searches and inquiries suggest that > it's not a common problem, nor especially obvious. Failing a safe, > sensible way to change the database settings in a running Django > process (or some other intelligent way to demultiplex user requests to > their respective datasets; essentially semantic, mutually exclusive > sharding), I believe you've astutely pointed out that this isn't a > Django issue, and I should meander over to the webserver forums. I'd > prefer a Django solution to a webserver one, though, because it's the > right place to do it. > > I hope that clarifies the explanation some, and makes this vein of > inquiry of some value to the body of Django knowledge. If it's not > something that's a workable Django solution, I'd be happy to have some > certitude about that, too. > > Thank you, and best regards, > > Brian --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/django-users?hl=en -~----------~----~----~----~------~----~------~--~---

