![]() | |
![]() |
| | Thread Tools | Display Modes |
#11
| |||
| |||
|
|
Sadly we all end up doing that kind of thing so often I don't think we really notice how badly it sucks. We assume that's the way the relational model insists it has to be done. No wonder non-SQL DBMSs look attractive. [clip] |
#12
| ||||||
| ||||||
|
|
On net wrote: On 18/04/2011 10:55, Roy Hann wrote: nikosv wrote: it seems that http://www.i-programmer.info/news/81...nd-oracle.html Guardian is switching from Oracle to MongoDB and the following presentation is most revealing on the reasons: http://qconlondon.com/dl/qcon-london...ardianCoUk.pdf Since I hadn't been following the VectorWise project closely,I couldn't help but wonder whether VectorWise could fit into this picture and be used instead of Oracle, or is it solely targeted for business intelligence? (although Guardian's moving away from the relational structure model to JSON looks like very special requirements) I've never understood why CMS systems wanted to use SQL databases in the first place. None of the SQL products that were available 10-15 years ago were particularly suitable. Even the ones that were halfway-decent required more self-discipline than the average programmer can muster. The situation with today's SQL DBMSs is not much better. They remain best suited to transactional processing and analytics, and anyone doing anything else would be stupid not to be considering using something else. That *is* an indictment of SQL DBMSs. I really don't understand what you are trying to say. What is it about SQL databases that is unsuitable for use with a CMS and what are the alternatives that these undisciplined CMS programmers should have been using? I'd really like to know what the "something else" candidates are. I'm sure you know at least as many other products not called Oracle as I do, but to be clear, I can't suggest "something else". There are a few products that lean in the right direction IMO, but they are too few, too late, and too "not Oracle". My point was just that it's unremarkable that a conventional SQL database isn't working for CMS (nor a lot of other things). They have a complex problem that involves very complex relationships between facts. That would always be a challenge. But to make it almost intractible in this case, the facts need to be expressed in terms of complex values. (That is, the values they really want to work with are more high-level than SQL supports. Most SQL products supports numbers, strings, dates, and not much else.) So they are forced into faking out atomic values using rows in yet more tables. That's a whole extra level of unnecessary complexity. (Don't get me wrong; I love designs that clearly reveal natural complexity. What I hate is products that force me to create designs with unnecessary complexity.) |
|
Sadly we all end up doing that kind of thing so often I don't think we really notice how badly it sucks. We assume that's the way the relational model insists it has to be done. No wonder non-SQL DBMSs look attractive. |
| There is no reason I can think of why a relational database wouldn't be a good choice if there were a suitable implementation. But relational DBMSs don't exist, so we'll never know if that conjecture holds water. But to get to the point, no, I don't think VectorWise solves the SQL problem, which is what the Guardian is really trying to solve. I must say I didn't really "get" what this SQL problem is. The SQL problems (as defined by me) are many, but for now I'm focusing on the one I've described above: the misguided idea embedded in every mainstream SQL product that data types are not allowed to be much more complex than what the bare hardware supports. We probably all know the very old grumble (particularly from OO programmers) about how using a relational/SQL database is like driving your car home, taking it apart, putting the parts on a shelf in the garage, and then the next day reassembling it before you can drive off. It was (and still is) a valid gripe and many kinds of applications really do suffer because of it. My view was that their existing setup had become unwieldy and like any project review might do, an alternative technology provided the performance they needed together with a good query engine. I find this very plausible too. My argument is only that they would sooner or later hit the limit of what mainstream SQL DBMSs will allow. A clean start always helps, but I speculate that they'd end up with a less awful solution not a really clean one. All technology migrations provide the relief of a clean sheet to work with and, cynic that I often am, this is easier to champion than an extensive revision of the technology already in place. I agree 100%. Arguing that there is now a new and better product that your predecessors had no chance to use is a way easier sell. It offers everyone a fig-leaf. I don't think the slides really mention the economics of the new infrastructure versus old. That'll be the day!! :-| Whose to say that an overhaul using an SQL database suited to their new way of thinking/working would have been just as good? They've got a master database that is updated then pushed out as updates onto replicated databases on multiple servers. Couldn't an SQL database with a query cache work just as well? I'm not sure what you mean by a query cache. I suppose you mention cacheing because speed is a problem. Cache works when loads are "bursty". If your load really is bursty, fine. But if it's not, then the steady-state limit is exactly what it is without a cache. (Your toilet tank works exactly the same way; use it often enough and you get the same flow rate as from the tap.) |
|
But that's a bit of a digression. In my (reasonably well-informed) opinion, the performance problems of all conventional SQL database systems arises out the vast number of round-trips the applications make to get the parts to reassemble the figurative car I was mentioning above. Further delays are incurred because in most products rows are literally physical records. To read an attribute you read the whole record. To read an object you have to read rows from here and here and here and... There is no fundamental need for that. If you could have a "car" datatype it would be one read. (VectorWise is one dazzling example of what happens when you get away from the row-as-a-record model.) |
|
VectorWise gives you fast searching, fast bulk joining, fast reduction and dense compression. ..sounds ideal when you are trying to pull together page content dynamically. Why wouldn't that be good for a CMS based application. Well, first off that does nothing to eliminate the unnecessary visible complexity of the physical model, and secondly even VectorWise would struggle with a database like that. I'm not saying that doing all those things faster is not desirable--VectorWise exists *because* they're so desirable. But even VectorWise has a sweet-spot, a scale of problem you have to reach, and below which it just doesn't buy you anything. VectorWise really screams when you give it a few complex queries on massive amounts of data. But if you peck it to death with a blizzard of trivial queries on small amounts of data it will struggle like any other conventional SQL database. What would be nice is is a better approach to data types in SQL. |
|
Roy, seriously, I'd be interested to know more of your thoughts on the guardian project. Better late than never I hope! :-) Yes, interesting. |
#13
| |||
| |||
|
|
I think what you're saying is that Relational DBs are superb at relationships, but sometimes that level of detail is not required for the data that we want to retrieve. There is a tension between having to be explicit about what information you want (every last join and conditional match), so that you get it all, and just being able to ask for the overall thing and get the rest as a matter of course. |
#14
| |||
| |||
|
|
That's getting close to what I am (trying) to say, but I think of it in even simpler terms than that. I just want the DBMS to treat the values that my application undestands as values. .... I'd quite like to have an XML type in Ingres. I want it so that I never have to look inside one of the bastard things ever again. |
#15
| |||||||||||||||||
| |||||||||||||||||
|
|
On Tue, 3 May 2011 17:26:36 +0000 (UTC) Roy Hann <specially (AT) processed (DOT) almost.meat> wrote: That's getting close to what I am (trying) to say, but I think of it in even simpler terms than that. I just want the DBMS to treat the values that my application undestands as values. ... I'd quite like to have an XML type in Ingres. I want it so that I never have to look inside one of the bastard things ever again. Be careful what you wish for, Roy. |
|
You surely remember what Codd called "path independence". In RDMLSDB, he said, "Since, in general, it is not practical to develop application programs which test for all tree structurings permitted by the system, [unmodified] programs fail when a change in structure becomes necessary." What happens to your applications when changes to the business require changes to the XML structure? |
|
Are the XML documents really not decomposable for any other purpose? |
|
Will there be no XPath in the DBMS |
|
or in your application? |
|
If they cannot be sorted or decomposed, how are they not just blobs? What elevates XML over PDF? |
|
What verifies the correctness and consistency of your XML "atoms"? |
|
If you say "the application", are you really prepared to rely on disparate programmers, unaware over time and often distance of each others' work, sharing no common understanding of the data, to mutually verify their inputs according to one set of rules, lacking as they do any technological support for logic? |
|
Do you think sprinkling the data with XML pixie dust will upend *decades* of unhappy experience with "application verified" data? |
|
Car parts!? You cannot take refuge in metaphor, my good sir. As far as I can tell, the thing you want has existed for a good long while: the view. What do you seek from XML that a view doesn't do already? If you say "update" I'm going to say "stored procedure", fair warning! |
|
If you want to push Ingres to advance the state of the art, rather than chasing the XML fad already fading, ask for just one datatype: the table. Nothing in the relational model says you can't have a table *in* a column. |
|
I don't know how SQL will need to be modified to deal with table-columns. One option, "nothing", is what we'd get from XML (unless we drag in XPath, in which case we then have worse than nothing: *two* query languages). |
|
I can understand the vendors' motivation to add XML: they can sell it to an audience ignorant of RM. |
|
It's no problem to them, because the query engine need know nothing about it. What I don't understand, really and truly, is your motivation. |
|
I hear you saying it would let you deal with blocks of stuff that your application always treats as a unit. In what way does XML suggest itself as a good way to organize those blocks of stuff? |
|
How are you hoping that XML per se will make your job easier? |
|
I can imagine lots of deficiencies, and I have in RM an answer for any advantage you might propose. But I really do wonder what's on your mind when you wish for XML. |
![]() |
| Thread Tools | |
| Display Modes | |
| |