Carl Karsten wrote:
> Carsten Haese wrote:
>   
>> On Tue, 22 May 2007 17:33:27 -0500, Carl Karsten wrote
>>     
>>> Or some such abomination of results of one query as a parameter of a 
>>> 2nd.
>>>
>>> given my use case, I can understand why this isn't in the spec, and 
>>> why it may never be.  but it seems to come up more often that I 
>>> would expect, so here we go.
>>>
>>> My current problem: reconcile transaction details that are off due 
>>> to rounding errors. the 2 sets of details are stored on different 
>>> servers, and no chance of getting one server to hit the 2nd, so the 
>>> python client code is going to have to help by getting a list of 
>>> keys from one and constructing "WHERE OtherKey IN ( 'key1', 'key2',
>>>  'key3', ...)"  which isn't 'hard' but I find annoying that I have 
>>> to convert formats in the application layer.
>>>       
>> Option 1: Create a temporary table on one server and load the data from the
>> other server into it. Then, use a server side subquery or join the tables
>> together.
>>
>> If you don't have write permission on either server, there is Option 2: Fetch
>> all relevant data from server 1 into client memory, fetch all relevant data
>> from server 2 into client memory, and do the reconciliation in client memory.
>>     
>
> The perms issue can be taken care of by having the table created ahead of 
> time.
> but, the application level code is still 'custom' and falls into a similar 
> pit 
> as embedding parameters into the SQL command string.
>   

 From my ivory tower, this sounds more like a database problem than an 
application problem. I agree completely that having to implement this 
logic in the application is awkward. Is replication an option with the 
database you are using? Either replicating from server 1 into server 2 
(possibly vice-versa) or replicate from server 1 into server 3 and 
replicate from server 2 into server 3 so you can perform all queries in 
server 3.

With replication you tend to have options of either batch extract/load 
(ETL) or real time replication (usually implemented by the database 
itself, sometimes by a 3rd party tool). The downside of replication are 
increased space requirements and possibly delays in replication if it is 
not real time (for a reporting situation like this, collisions should 
not be an issue).

Chris



_______________________________________________
DB-SIG maillist  -  DB-SIG@python.org
http://mail.python.org/mailman/listinfo/db-sig

Reply via email to