On 11/19/07, Mohammad wrk <[EMAIL PROTECTED]> wrote: > > Hi, > > I'm working on a web 2.0 project that targeting small to medium size > companies for providing business services. Companies simply register to the > site and then start their business by loading their data, sharing and > discussing them with others. > > The design/architectural decision now we are facing from database > perspective is how we should store companies' specific data? One way is to > put all of them in a single database and partition them by company-id and > the other one is to create, on the fly, a new database per company . The > justification for the latter is that MySQL is not powerful enough (compare > to Oracle or DB2) to handle large amount of data and concurrent users. > > I'm new to MySQL and don't know that much about it and this is why I'd > like to discuss this concern here.
I think the statement that MySQL is not as "powerful" as the other products probably is unfounded in the sense that you mean it. On a given platform, searches are typically going to be O(N) or O(log N) depending on how you arrange the indexes and queries. http://en.wikipedia.org/wiki/Big_O_notation What you are trying to do is design your database so that all the queries are O(log N) rather than O(N). It is possible that Oracle can perform more adeptly than MySQL at certain operations (I don't know this, and the stats could easily go the other way). But the difference probably wouldn't exceed 2:1 in favor of either product, and you'll still be left with the O(N) vs. O(log N) design issue. I'd go with the design that does not create new tables. Dave.