An RDBMS for CTI System?
cpt_koloth asks: "The company I work for are currently in the process of designing a custom CTI system for a client. A small part of the system is implemented, mostly to familiarize the development team with the telephony API (in our case TSAPI, since the client uses an Ericsson PBX) as a simple click 'n dial application. The main issue is the database system which will be used. We need a database is fast so that it can assign the calls without delays. The present system uses MySQL and is doing great but the numbers of requests will increase exponentially once the 'main' parts of the system are implemented (we have about 60000 requests per day currently most of them being cross table queries but finally they should be seven or eight times this number). Another aspect is the reporting agent, which will operate on the same database and also needs to be fast. We are currently thinking on a system with two databases one for the 'calling part', and one for the reporting part, and we cannot decide on the RDBMS to be used with the way the data will be updated between the two databases. Keep in mind that cost matters a lot. Does Slashdot have any insight to offer?"
MySQL? Be sure you have a robust database first and work around that. I don't know if MySQL can handle high loads gracefully now, but in the past it's been known to flake out and corrupt the database. Not a good thing if that takes out your phones.
Performance is always an issue, but there are some standard techniques for that. E.g., connection pooling (where a single connection is reused for 100-ish queries or 15 seconds before being discarded), caching read-mostly data, pushing as much of your logic into stored procedures as possible, etc.
(Remember that it's always far cheaper to do things in the database itself than it is to push data to your application and then push the results back. I have some updates that take ~15 minutes in my app optimized to minimize queries... and ~10 seconds when done via a loop in a stored procedure even though the latter uses a less efficient algorithm!)
BTW I like PostgreSQL. Solid referential integrity, triggers, stored procedures, etc. Even support for user-defined types and functions written in native C.
For every complex problem there is an answer that is clear, simple, and wrong. -- H L Mencken