What is the best way to interact with a JDBC database

Discussion in 'Ruby' started by Venks, Dec 3, 2007.

  1. Venks

    Venks Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    Hi,

    I have a database that has only JDBC connectivity but I need to interact to
    this database from Ruby. What's the best way to do so? All ideas and
    suggestions are welcome.

    My initial thought is to create a Java program that accepts connection
    information and a SQL statement and execute the SQL against the database.
    Assuming that I have this program, what's the best way to call this Java
    program from Ruby?

    I looked at JRuby and didn't feel that's the right answer.

    Regards,

    -Venks
     
    Venks, Dec 3, 2007
    #1
    1. Advertising

  2. Venks

    Dan Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    Just out of interest, what was your problem with JRuby?

    I had a similar issue with an Oracle RDB database running on VMS that only
    has .NET (beta) and JDBC drivers. So I went with JRuby using
    activerecord-jdbc and it has been working rather well for me. A few minor
    issues here and there, but nothing major.


    On Dec 4, 2007 9:21 AM, Venks <> wrote:

    > Hi,
    >
    > I have a database that has only JDBC connectivity but I need to interact
    > to
    > this database from Ruby. What's the best way to do so? All ideas and
    > suggestions are welcome.
    >
    > My initial thought is to create a Java program that accepts connection
    > information and a SQL statement and execute the SQL against the database.
    > Assuming that I have this program, what's the best way to call this Java
    > program from Ruby?
    >
    > I looked at JRuby and didn't feel that's the right answer.
    >
    > Regards,
    >
    > -Venks
    >
     
    Dan, Dec 3, 2007
    #2
    1. Advertising

  3. Venks

    Venks Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    It's a science/research project called "MonetDB".

    On Dec 3, 2007 6:37 PM, Deepak Vohra <> wrote:

    > Which database is it?
    >
    > Venks <> wrote: Hi,
    >
    > I have a database that has only JDBC connectivity but I need to interact
    > to
    > this database from Ruby. What's the best way to do so? All ideas and
    > suggestions are welcome.
    >
    > My initial thought is to create a Java program that accepts connection
    > information and a SQL statement and execute the SQL against the database.
    > Assuming that I have this program, what's the best way to call this Java
    > program from Ruby?
    >
    > I looked at JRuby and didn't feel that's the right answer.
    >
    > Regards,
    >
    > -Venks
    >
    >
     
    Venks, Dec 4, 2007
    #3
  4. Venks

    Venks Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    Actually, I haven't tried Jruby except reading about it. I am using Ruby as
    a glue to put together all the tasks I need including Database access, File
    I/O and all the stuff that comes with a heavy duty batch programming. It's
    my understanding that JRuby doesn't provide all the classes and I would like
    to avoid using JRuby just for this requirement of accessing a JDBC database.


    On Dec 3, 2007 6:43 PM, Dan <> wrote:

    > Just out of interest, what was your problem with JRuby?
    >
    > I had a similar issue with an Oracle RDB database running on VMS that only
    > has .NET (beta) and JDBC drivers. So I went with JRuby using
    > activerecord-jdbc and it has been working rather well for me. A few minor
    > issues here and there, but nothing major.
    >
    >
    > On Dec 4, 2007 9:21 AM, Venks <> wrote:
    >
    > > Hi,
    > >
    > > I have a database that has only JDBC connectivity but I need to interact
    > > to
    > > this database from Ruby. What's the best way to do so? All ideas and
    > > suggestions are welcome.
    > >
    > > My initial thought is to create a Java program that accepts connection
    > > information and a SQL statement and execute the SQL against the

    > database.
    > > Assuming that I have this program, what's the best way to call this Java
    > > program from Ruby?
    > >
    > > I looked at JRuby and didn't feel that's the right answer.
    > >
    > > Regards,
    > >
    > > -Venks
    > >

    >
     
    Venks, Dec 4, 2007
    #4
  5. Venks wrote:
    > It's a science/research project called "MonetDB".
    >
    > On Dec 3, 2007 6:37 PM, Deepak Vohra <> wrote:
    >
    >> Which database is it?
    >>
    >> Venks <> wrote: Hi,
    >>
    >> I have a database that has only JDBC connectivity but I need to interact
    >> to
    >> this database from Ruby. What's the best way to do so? All ideas and
    >> suggestions are welcome.
    >>
    >> My initial thought is to create a Java program that accepts connection
    >> information and a SQL statement and execute the SQL against the database.
    >> Assuming that I have this program, what's the best way to call this Java
    >> program from Ruby?
    >>
    >> I looked at JRuby and didn't feel that's the right answer.
    >>
    >> Regards,
    >>
    >> -Venks
    >>
    >>

    >

    from the website...There are application bindings for MonetDB/SQL using JDBC,
    ODBC, PHP, Python, Perl and C,... so you could probably work the C binding into
    Ruby in some fashion.
     
    Reid Thompson, Dec 4, 2007
    #5
  6. Venks

    Thomas Enebo Guest

    Venks wrote:
    > Actually, I haven't tried Jruby except reading about it. I am using Ruby as
    > a glue to put together all the tasks I need including Database access, File
    > I/O and all the stuff that comes with a heavy duty batch programming. It's
    > my understanding that JRuby doesn't provide all the classes and I would like
    > to avoid using JRuby just for this requirement of accessing a JDBC database.
    >
    >

    Out of personal interest...Which classes are missing for you in JRuby?
    We have an interest in filling in gaps in our implementation.

    -Tom

    > On Dec 3, 2007 6:43 PM, Dan <> wrote:
    >
    >
    >> Just out of interest, what was your problem with JRuby?
    >>
    >> I had a similar issue with an Oracle RDB database running on VMS that only
    >> has .NET (beta) and JDBC drivers. So I went with JRuby using
    >> activerecord-jdbc and it has been working rather well for me. A few minor
    >> issues here and there, but nothing major.
    >>
    >>
    >>

    --
    Thomas E Enebo <>
    JRuby Core Developer, http://www.bloglines.com/blog/ThomasEEnebo
     
    Thomas Enebo, Dec 4, 2007
    #6
  7. Venks

    Venks Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    I don't know if any classes are missing. I was just reading the
    documentation that suggested that all the classes may not be
    available. Also, I have not used JRuby yet (As a matter of fact I am new to
    Ruby let alone developing in a OO language environment)

    Thanks for all the feedback. I was thinking whether SOAP may be an option,
    but could be over kill just for bridging the gap between Ruby and Java.

    I will try to use Jruby to access the JDBC database. Please allow me to
    specify in few steps to describe the overall picture of my batch job:

    - I have a bunch of Ruby modules that access many MySQL databases across
    several machines.
    - I also have lot of System calls to create data into files which I then I
    transfer between different databases (not just MySQL).
    - Somewhere in this process I need to invoke a method from a module that's
    developed using JRuby.
    - When I invoke the JRuby module, I except the Java environment to be
    active, otherwise I don't need JVM.
    - Once I am done with the Jruby module, I will continue further processing
    using regular Ruby modules.

    Does this makes sense?

    Thanks,


    On Dec 4, 2007 11:07 AM, Thomas Enebo <> wrote:

    > Venks wrote:
    > > Actually, I haven't tried Jruby except reading about it. I am using Ruby

    > as
    > > a glue to put together all the tasks I need including Database access,

    > File
    > > I/O and all the stuff that comes with a heavy duty batch programming.

    > It's
    > > my understanding that JRuby doesn't provide all the classes and I would

    > like
    > > to avoid using JRuby just for this requirement of accessing a JDBC

    > database.
    > >
    > >

    > Out of personal interest...Which classes are missing for you in JRuby?
    > We have an interest in filling in gaps in our implementation.
    >
    > -Tom
    >
    > > On Dec 3, 2007 6:43 PM, Dan <> wrote:
    > >
    > >
    > >> Just out of interest, what was your problem with JRuby?
    > >>
    > >> I had a similar issue with an Oracle RDB database running on VMS that

    > only
    > >> has .NET (beta) and JDBC drivers. So I went with JRuby using
    > >> activerecord-jdbc and it has been working rather well for me. A few

    > minor
    > >> issues here and there, but nothing major.
    > >>
    > >>
    > >>

    > --
    > Thomas E Enebo <>
    > JRuby Core Developer, http://www.bloglines.com/blog/ThomasEEnebo
    >
    >
    >
     
    Venks, Dec 4, 2007
    #7
  8. Venks

    Thomas Enebo Guest

    Venks wrote:
    > I don't know if any classes are missing. I was just reading the
    > documentation that suggested that all the classes may not be
    > available. Also, I have not used JRuby yet (As a matter of fact I am new to
    > Ruby let alone developing in a OO language environment)
    >
    > Thanks for all the feedback. I was thinking whether SOAP may be an option,
    > but could be over kill just for bridging the gap between Ruby and Java.
    >

    My main comment is that JRuby "is" Ruby in the sense that you can write
    as much Ruby as you want and JRuby is capable of running it. So write
    your app in Ruby and execute/run it in JRuby. We are meant to be a
    drop-in alternative to Ruby.

    So I would not think so much as things being a JRuby module or a Ruby
    Module. The caveat to that last sentence is that in addition to being
    able to run Ruby in JRuby you can also access/use Java classes from
    within JRuby. So code in Ruby and bring in the Java classes you need
    into your app (in this case JDBC) to do what you need in all your
    databases. OR....

    Install activerecord-JDBC gem and then use activerecord APIs to interact
    with your databases. This does have one limitation that we only
    support the more popular databases at this point. Less known ones will
    not work (though we are looking for help in adding support to more
    databases). The main benefit is that this will end up making your code
    Java-free (behind the scenes our gem is using Java code, but it is
    transparent to you).
    > I will try to use Jruby to access the JDBC database. Please allow me to
    > specify in few steps to describe the overall picture of my batch job:
    >
    > - I have a bunch of Ruby modules that access many MySQL databases across
    > several machines.
    > - I also have lot of System calls to create data into files which I then I
    > transfer between different databases (not just MySQL).
    >


    A question? When you say system calls to create data into files, do you
    just mean using things like Ruby's File class? That is no problem if so.
    > - Somewhere in this process I need to invoke a method from a module that's
    > developed using JRuby.
    > - When I invoke the JRuby module, I except the Java environment to be
    > active, otherwise I don't need JVM.
    >

    I recommend just running your whole Ruby application in JRuby.
    > - Once I am done with the Jruby module, I will continue further processing
    > using regular Ruby modules.
    >
    > Does this makes sense?
    >
    > Thanks,
    >

    -Tom


    --
    Thomas E Enebo <>
    JRuby Core Developer, http://www.bloglines.com/blog/ThomasEEnebo
     
    Thomas Enebo, Dec 4, 2007
    #8
  9. Venks

    Venks Guest

    Note: parts of this message were removed by the gateway to make it a legal Usenet post.

    Hi,

    - I am using the MySQL Driver which has one-to-one correspondence to "C"
    API. I may need to have more control on how I access MySQL. It's my
    understanding that Active record is based on DBI interface and has an
    additional layer.
    - The system calls I mentioned below are not File I/O. I am using the File
    I/O class too. But the system calls I am referring is directly calling OS
    commands as I use "sed, "gpg", "zip" and some other UNIX utilities.

    Now here is question which I am sure you are not reading/listening for the
    first time.

    Are there any performance issues between Ruby and JRuby (I know this has
    been asked many times but couldn't find any definitive answer/article)

    Thanks,

    On Dec 4, 2007 4:57 PM, Thomas Enebo <> wrote:

    > Venks wrote:
    > > I don't know if any classes are missing. I was just reading the
    > > documentation that suggested that all the classes may not be
    > > available. Also, I have not used JRuby yet (As a matter of fact I am new

    > to
    > > Ruby let alone developing in a OO language environment)
    > >
    > > Thanks for all the feedback. I was thinking whether SOAP may be an

    > option,
    > > but could be over kill just for bridging the gap between Ruby and Java.
    > >

    > My main comment is that JRuby "is" Ruby in the sense that you can write
    > as much Ruby as you want and JRuby is capable of running it. So write
    > your app in Ruby and execute/run it in JRuby. We are meant to be a
    > drop-in alternative to Ruby.
    >
    > So I would not think so much as things being a JRuby module or a Ruby
    > Module. The caveat to that last sentence is that in addition to being
    > able to run Ruby in JRuby you can also access/use Java classes from
    > within JRuby. So code in Ruby and bring in the Java classes you need
    > into your app (in this case JDBC) to do what you need in all your
    > databases. OR....
    >
    > Install activerecord-JDBC gem and then use activerecord APIs to interact
    > with your databases. This does have one limitation that we only
    > support the more popular databases at this point. Less known ones will
    > not work (though we are looking for help in adding support to more
    > databases). The main benefit is that this will end up making your code
    > Java-free (behind the scenes our gem is using Java code, but it is
    > transparent to you).
    > > I will try to use Jruby to access the JDBC database. Please allow me to
    > > specify in few steps to describe the overall picture of my batch job:
    > >
    > > - I have a bunch of Ruby modules that access many MySQL databases across
    > > several machines.
    > > - I also have lot of System calls to create data into files which I then

    > I
    > > transfer between different databases (not just MySQL).
    > >

    >
    > A question? When you say system calls to create data into files, do you
    > just mean using things like Ruby's File class? That is no problem if so.
    > > - Somewhere in this process I need to invoke a method from a module

    > that's
    > > developed using JRuby.
    > > - When I invoke the JRuby module, I except the Java environment to be
    > > active, otherwise I don't need JVM.
    > >

    > I recommend just running your whole Ruby application in JRuby.
    > > - Once I am done with the Jruby module, I will continue further

    > processing
    > > using regular Ruby modules.
    > >
    > > Does this makes sense?
    > >
    > > Thanks,
    > >

    > -Tom
    >
    >
    > --
    > Thomas E Enebo <>
    > JRuby Core Developer, http://www.bloglines.com/blog/ThomasEEnebo
    >
    >
    >
     
    Venks, Dec 4, 2007
    #9
  10. Venks

    Thomas Enebo Guest

    Venks wrote:
    > Hi,
    >
    > - I am using the MySQL Driver which has one-to-one correspondence to "C"
    > API. I may need to have more control on how I access MySQL. It's my
    > understanding that Active record is based on DBI interface and has an
    > additional layer.
    >

    Well the issue with using the MySQL Driver is that it requires a native
    C extension to work. Currently, JRuby does not support C extensions.
    Your code will either have to use the pure Ruby MySQL driver (not very
    fast) or start using JDBC directly. So this unfortunately will require
    extra work.
    > - The system calls I mentioned below are not File I/O. I am using the File
    > I/O class too. But the system calls I am referring is directly calling OS
    > commands as I use "sed, "gpg", "zip" and some other UNIX utilities.
    >

    We can call out using system and friends. I think there is a couple of
    bugs with bi-directional communication using popen, but I suspect things
    will work for you here.
    > Now here is question which I am sure you are not reading/listening for the
    > first time.
    >
    > Are there any performance issues between Ruby and JRuby (I know this has
    > been asked many times but couldn't find any definitive answer/article)
    >

    No real performance issues. We have a few bottlenecks which could
    surface, but we are faster in many areas and slower in some others. All
    in all our performance is looking really good.

    -Tom
    > Thanks,
    >
    > On Dec 4, 2007 4:57 PM, Thomas Enebo <> wrote:
    >
    >
    >> Venks wrote:
    >>
    >>> I don't know if any classes are missing. I was just reading the
    >>> documentation that suggested that all the classes may not be
    >>> available. Also, I have not used JRuby yet (As a matter of fact I am new
    >>>

    >> to
    >>
    >>> Ruby let alone developing in a OO language environment)
    >>>
    >>> Thanks for all the feedback. I was thinking whether SOAP may be an
    >>>

    >> option,
    >>
    >>> but could be over kill just for bridging the gap between Ruby and Java.
    >>>
    >>>

    >> My main comment is that JRuby "is" Ruby in the sense that you can write
    >> as much Ruby as you want and JRuby is capable of running it. So write
    >> your app in Ruby and execute/run it in JRuby. We are meant to be a
    >> drop-in alternative to Ruby.
    >>
    >> So I would not think so much as things being a JRuby module or a Ruby
    >> Module. The caveat to that last sentence is that in addition to being
    >> able to run Ruby in JRuby you can also access/use Java classes from
    >> within JRuby. So code in Ruby and bring in the Java classes you need
    >> into your app (in this case JDBC) to do what you need in all your
    >> databases. OR....
    >>
    >> Install activerecord-JDBC gem and then use activerecord APIs to interact
    >> with your databases. This does have one limitation that we only
    >> support the more popular databases at this point. Less known ones will
    >> not work (though we are looking for help in adding support to more
    >> databases). The main benefit is that this will end up making your code
    >> Java-free (behind the scenes our gem is using Java code, but it is
    >> transparent to you).
    >>
    >>> I will try to use Jruby to access the JDBC database. Please allow me to
    >>> specify in few steps to describe the overall picture of my batch job:
    >>>
    >>> - I have a bunch of Ruby modules that access many MySQL databases across
    >>> several machines.
    >>> - I also have lot of System calls to create data into files which I then
    >>>

    >> I
    >>
    >>> transfer between different databases (not just MySQL).
    >>>
    >>>

    >> A question? When you say system calls to create data into files, do you
    >> just mean using things like Ruby's File class? That is no problem if so.
    >>
    >>> - Somewhere in this process I need to invoke a method from a module
    >>>

    >> that's
    >>
    >>> developed using JRuby.
    >>> - When I invoke the JRuby module, I except the Java environment to be
    >>> active, otherwise I don't need JVM.
    >>>
    >>>

    >> I recommend just running your whole Ruby application in JRuby.
    >>
    >>> - Once I am done with the Jruby module, I will continue further
    >>>

    >> processing
    >>
    >>> using regular Ruby modules.
    >>>
    >>> Does this makes sense?
    >>>
    >>> Thanks,
    >>>
    >>>

    >> -Tom
    >>
    >>
    >> --
    >> Thomas E Enebo <>
    >> JRuby Core Developer, http://www.bloglines.com/blog/ThomasEEnebo
    >>
    >>
    >>
    >>

    >
    >



    --
    --
    Thomas E Enebo <>
    JRuby Core Developer, http://www.bloglines.com/blog/ThomasEEnebo
     
    Thomas Enebo, Dec 5, 2007
    #10
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Keith Wansbrough

    Re: jdbc help:sun.jdbc.odbc.JdbcOdbcDriver

    Keith Wansbrough, Aug 16, 2004, in forum: Java
    Replies:
    0
    Views:
    769
    Keith Wansbrough
    Aug 16, 2004
  2. Betty
    Replies:
    1
    Views:
    9,892
    Juha Laiho
    May 21, 2005
  3. Charlie Orford
    Replies:
    5
    Views:
    368
    Charlie Orford
    Nov 23, 2003
  4. Sascha
    Replies:
    4
    Views:
    671
  5. Quee WM
    Replies:
    9
    Views:
    161
    Quee WM
    Jan 7, 2010
Loading...

Share This Page