One of our developers, Andreas Piening, has been working on creating a module to get SilverStripe to work with Oracle databases. And while there's key functionality that isn't working yet, we've been able to get a "Hello World" SilverStripe website on the 10g version of Oracle.
It's nowhere near ready to go into production, but we're looking for people who are interested in testing the module. If you're using Oracle, and are willing to take what we've done for a test drive and contribute feedback on this pre-alpha build, it would be appreciated.
Here's what's working:
- We can get the backend CMS running, and we can get the front-end website to display.
- We are able to change the content in the CMS
- We're able to build the database.
But here's where we're having problems:
- We haven't yet identified the best approach on how to support full text searching.
- Our test framework, which relies on creating a duplicate database to test on, separate from production, isn't working. Because Oracle doesn't create different databases (instead, it just creates different table spaces in the same database) it prohibits you from creating a table with the same name for the same user in the same database - making our normal testing procedure difficult to implement. We might be able to do it with a different user account, but we haven't tested this.
- Identifiers are limited to 30 characters, so if you have a table name with a many-to-many relationship with another data object, the table names are concatenated. That could easily go over 30 characters. We think we have this resolved, but it needs more testing.
- Oracle doesn't have auto-increment. We've had to solve this problem through sequences and triggers, but it's complicated and adds a lot of overhead - just to increment a number.
- Oracle has only one datatype for large amounts of characters. These values are stored in different files, so the columns cannot be used in group-by clauses. (Many group-by clauses do not care about the datatype, but Oracle does.) That's a show-stopper for many of the queries we usually use. We might be forced to rewrite our database logic to never use group by clauses on large fields.
- Right now, we've only got this tested with Oracle 10g. We have no idea if it will even run on Oracle 11g.
- Then there are the dreaded "unknown unknowns" (as Donald Rumsfeld put it). We could have major problems that we just don't even know to test for yet.
We can't make any commitments on timeframe, availability, or if we'll even manage to complete it. But if you're interested, you can check it out, and discuss the module on the SilverStripe developer mailing list.