I'm a relative newbie to ruby and rails. I have an upcoming project
for a company that uses MS SQL Server 2005, and apparently, prefers to
use PHP. We have to build a bookstore, and we will be self-hosting a
single site.
My first question is:
Is it safe to use the same database that they're using internally for
their inventory system or is it better, in terms of performance, to
duplicate the database and update it nightly (I think the delay will
be acceptable) ? That will give me the flexibility of having a
different database server on a linux machine where I could then run
Rails without wrestling with Sql Server over TCP.
Alternatively, if I run rails on a Linux machine, which uses the same
Sql Server 2005 database over TCP, should I expect performance
issues ? Remember, this is a single site, and we don't expect Amazon-
level traffic
Finally. How well can the rails handle legacy databases. Is it
terribly hard ? Can anyone share their experience in this regard ?
Is it safe to use the same database that they’re using internally for
their inventory system or is it better, in terms of performance, to
duplicate the database and update it nightly (I think the delay will
be acceptable) ? That will give me the flexibility of having a
different database server on a linux machine where I could then run
Rails without wrestling with Sql Server over TCP.
If you don’t have to duplicate databases, that’s the best approach. It might seem fine in the short term, but I find copying a db nightly is just a big pain. I’d make Rails work with the SQL Server.
Alternatively, if I run rails on a Linux machine, which uses the same
Sql Server 2005 database over TCP, should I expect performance
issues ? Remember, this is a single site, and we don’t expect Amazon-
level traffic
I think you’ll be just fine. I’ve got lots of web servers hitting SQL server databases without issue.
Finally. How well can the rails handle legacy databases. Is it terribly hard ? Can anyone share their experience in this regard ?
I’d hardly consider SQL Server 2005 to be legacy, unless you mean a legacy schema. That’s not too difficult in most cases… you’ll run into problems if you have column names with dashes, and you’ll want to do something to lower-case all of your column names, but other than that it’s pretty trivial.
There are cases where you just can’t make it play with ActiveRecord, but you can just get around that by using DBI (directly connecting to the database and issuing your own sql calls.). You lose a lot of advantages that Rails provides, but you still have the nice view and controller layers. You’ll have to decide which approach is best. I think you’d be able to tell how possible this will be in about a day. Be sure to read the docs and the Agile book’s chapters on ActiveRecord carefully.
I also assume you're talking about legacy schemas. I'm having a bit of hard time with this right now. We have a legacy schema that deviates quite a bit from the Rails opinion of what a schema should look like. The biggest problem has been that we have some indexes whose sort order is descending, which isn't supported by Rails' SQL Server adapter and may not be supported by any of the database adapters (I'm looking into this now). Another more minor problem has been that we had some tables w/o indexes, which was causing test failures. I just added indexes, as they should've been there anyway, but I thought I should mention it.