Simple DB Access
Sat Aug 5 01:47:52 CEST 2006
Ryan Rawson wrote:
> OCI is very mature and would probably work ok as a linked in driver.
> Our in-house API just makes OCI calls so you dont have to - OCI is
> very... baroque to say the least. You don't want to deal with that
> stuff just to do the basics. No wire-format necessary - you don't
> want to go down that path, you're asking for a world of hurt. For
> example, most libraries which implement the oracle 'wire protocol'
> can't handle things like RAC.
I am not sure I'd agree if a linked-in driver option is an overall good
choice for the OCI. Things like running a query that doesn't come back
due to a change in the query optimization plan on the server, server
utilization, etc. are not atypical for Oracle. How cleanly then can you
abort that session without causing some sort of memory/resource leak? I
don't think OCI offers a good way of dealing with these issues (other
than killing a hung thread/process). Yes there was a function added in
9i that attempted to cancel a running query, but it never guaranteed how
long it would take (since Oracle would need to perform a rollback), and
it was not uncommon to see such canceled queries completely freeze the
control for an hour.
On the other hand, depending on how critical it is for your service to
be up all the time, I admit that the performance win of using link-in
drivers for some systems may out-weight the stability factor. Perhaps a
choice of link-in driver or port with analogous interface would be the best.
More information about the erlang-questions