BAZOO

So much to do, so little time

Trying to squeeze sense out of chemical data

A GPL3 Oracle Cheminformatics Cartridge

with 10 comments

Sometime back I had mentioned a new cheminformatics toolkit, Indigo. Recently, Dmitry from SciTouch let me know that they had also developed Bingo, an Oracle cartridge based on Indigo, to perform cheminformatics operations in the database. This expands the current ecosystem of Open Source database cartridges (PGChem, MyChem, OrChem) which pretty much covers all the main RDBMSs (Postgres, MyQSL and Oracle). SciTouch have also provided a live instance of their database and associated cartridge, so you can play with it without requiring a local Oracle install. (It’d be useful to provide some details of the hardware that the DB is running on, so that timing numbers get some context)

Written by Rajarshi Guha

January 24th, 2010 at 2:35 pm

Posted in software

Tagged with , , ,

10 Responses to 'A GPL3 Oracle Cheminformatics Cartridge'

Subscribe to comments with RSS or TrackBack to 'A GPL3 Oracle Cheminformatics Cartridge'.

  1. I’m not sure about the rest but unfortunately OrChem is NOT a real oracle cartridge. It consists of java stored procedures making it very dependent on java and oracle versions. It will make it easier to port to differnt DDBMSs.

    Peter Maas

    25 Jan 10 at 8:12 am

  2. Hmm, I didn’t realize that. What makes a real cartridge?

    Rajarshi Guha

    25 Jan 10 at 11:47 am

  3. Hello Rajarshi,

    Thank you for this post. I have added some technical details about our server:

    http://groups.google.com/group/indigo-general/msg/f16c419dd51897f8

    With best regards,

    Dmitry

    Dmitry Pavlov

    25 Jan 10 at 7:50 pm

  4. Hi Dmitry, thanks for the hardware spec

    Rajarshi Guha

    25 Jan 10 at 10:44 pm

  5. > Hmm, I didn’t realize that. What makes a real cartridge?

    A cartridge extends the RDBMS in such a way that it can handle domain specific abstract datatypes.

    It’s functions interface deeper with the RDBMS, especially the optimizer, than plain custom functions.

    A true cartride must provide a transparent index on the abstract datatype and should give proper statistics to the optimizer for query planning.

    That’s mainly the way Oracle sees it.

    My 2ct: I’d say the transparent indexing is the terminator between a bunch of custom functions and a data cartridge.

    Ernst-Georg Schmid

    26 Jan 10 at 12:14 pm

  6. Well a cartridge is a independent piece of software running outside the database and can be called from within the database using a service.

    Java is really stored in the database and runs on the internal jvm. This makes the java and the oracle version very important.

    Peter Maas

    29 Jan 10 at 3:20 pm

  7. >Well a cartridge is a independent piece of software >running outside the database and can be called from >within the database using a service.

    Hm… No.

    The cartridge developer guide from Oracle (and no other similar document from other vendors) does not require such implementation details.

    Infochem implements their cartridge as a service running outside the database as a service.

    Symyx, Daylight, Bingo and pgchem::tigress etc. run inside the address space of the server and that makes the version of the database server very important too. :-)

    Ernst-Georg Schmid

    3 Feb 10 at 10:15 am

  8. Hello Ernst-Georg,

    A small note: Bingo is not really being run inside Oracle’s address space, neither is any other Oracle cartridge written on C/C++. Oracle has a special process called extproc, which loads the cartridge DLL and communicates with Oracle via TCP or IPC. This makes Oracle not vulnerable to cartridge crash.

    As for Oracle version, there is not much difference for C/C++ cartridge between Oracle 9, 10, and 11. Only some small compatibility issues, and some performance issues.

    Dmitry Pavlov

    3 Feb 10 at 5:12 pm

  9. >Oracle has a special process called extproc, which >loads the cartridge DLL and communicates with Oracle >via TCP or IPC.

    Point taken, you’re absolutely right.

    But you can still generate ORA-600s with careless code in the extproc listener or pollute the query cache with broken prepared statements – which technically does not crash the server but still renders it unusable. :-)

    Ernst-Georg Schmid

    4 Feb 10 at 9:01 am

  10. Hello Ernst-Georg,
    Now i am studying on oracle cartridge, can you give some material about oracle cartidge?
    as you said:>It’s functions interface deeper with the RDBMS, especially the optimizer, than plain custom functions.
    now i want to use the interface,such as ODCIStatsFunctionCost,to get an optimal plan.According to oracle data cartridge guide,i rewrite these interface,but generate ora-6550 exception,do you know how to solve this problem? i am looking forward to your replying.Best wishes.

    huaishuaiwang

    2 Jun 10 at 12:52 am

Leave a Reply