If they share the database, they should also share the folder. Anyway, mind 
that file IO is a major bottleneck and accessing a shared filesystem is 
every worse.

Setting migrate=False prevents the file system access completely.

Ideally should have a way to set migrate=True only when the new 
organization joins and migrate=True when it joined already. You should be 
able to perform this check without looking at the filesystem.



On Thursday, 23 August 2012 12:15:49 UTC-5, Mike wrote:
>
> Perhaps I haven't made myself clear enough...
>
> Forget about development environment - think cluster deployment scenario 
> only.
> I can't create databases in advance - in fact, the server code is written 
> to create a new schema (using MySQL parlance) every time a new group of 
> customers (an "organization") is joining the site. As such, any of the 
> servers in the cluster at any point in time could be faced with the task of 
> creating a new schema, a new sub-folder inside DATABASES and initializing 
> the schema with appropriate tables and sub-folder - with appropriate .table 
> files. My only issue is whether or not DATABASES folder should be shared 
> among the machines in the cluster (like SESSIONS, for instance) or if each 
> of them should maintain its own (less preferable, for various reasons). And 
> that bug will have to be fixed, of course.
>
> On Thursday, August 23, 2012 12:42:06 PM UTC-4, Niphlod wrote:
>>
>> ehm... deploy. production. cluster.
>> You say that "some .table files are created" hence I think you're using 
>> the same database uri both for production and development (if any). If 
>> .table files are created, it's safe to assume that the underlying code 
>> changes too, right ?
>> If so, a simply copy/rsync from a "development" to all the "cluster" 
>> machines suffices, without you ending in misery. Why all the pain if you 
>> have to sync the code accross cluster if .table files can travel the same 
>> way as your codebase ?
>>
>> Il giorno giovedì 23 agosto 2012 17:14:51 UTC+2, Mike ha scritto:
>>>
>>> We are planning on deploying our Web2Py application under Apache-WSGI on 
>>> a cluster of servers all accessing the same multiple databases. Since the 
>>> new databases will be created on the fly, as needed, we cannot predict 
>>> beforehand how many we will end up using and, consequently, how many files 
>>> will end up being created in DATABASES folder. As a result, I am trying to 
>>> create sub-folders under DATABASES and set MIGRATE parameter on 
>>> .define_table() call for a given database to <sub-folder name>/<table 
>>> name>.table. Such approach allows me to better control the overall number 
>>> of files in a single folder as well as make the overall picture more 
>>> manageable. There is one problem with this approach and one question for 
>>> the experts:
>>>
>>> 1. A problem - we are using Auth to authenticate users and so need to 
>>> perform auth.define_tables(). By passing to it migrate="<sub-folder 
>>> name>/", I almost made it create all the auth_ table files in that 
>>> sub-folder, except that there is a typo in TOOLS.PY, line 1420 in my source 
>>> code for version 1.99.7, where instead of expected 
>>>     
>>> migrate=self.__get_migrate(settings.table_cas_name, migrate),
>>>                             
>>> it goes
>>>     
>>> migrate=self.__get_migrate(settings.table_event_name, migrate),
>>>
>>> I've fixed it in my copy and would like to request that the fix should 
>>> be made in the official release code base as well.
>>>
>>> 2. A question - should DATABASES folder be shared among the 
>>> Apache-Web2Py machines or should each maintain its own copy? More 
>>> specifically, is there any locking mechanism on those .table files built 
>>> specifically for the purpose of sharing between threads/machines? I intend 
>>> to use migrate_enabled=False when creating an instance of DAL if I know 
>>> that the tables have already been created, but to make sure that multiple 
>>> machines won't try to create the new database/new sub-folder at the same 
>>> time, I will probably have to build some locks outside DAL. Is this even 
>>> the right way of thinking about this problem?
>>>
>>> Sorry for the long-winded question. Great framework, BTW. :)
>>>
>>>

-- 



Reply via email to