3 ms·
Databases became an integration point about 30 years ago, when Oracle ported their DB to every platform in sight, and standardized on SQL as a a way to integrat
by 13ren 18y ago
Databases became an integration point about 30 years ago, when Oracle ported their DB to every platform in sight, and standardized on SQL as a a way to integrate across heterogeneous hardware environments.
I agree with this blog post, but this is clearly a problem that comes up all the time. My question is: what approaches to abstract data models has the industry already developed to deal with these problems of schema change and so on? I have a feeling it's pretty big business.
Also, web services repeat the problem of schema brittleness, because they have a schema... if that changes, it ripples through all the services that use it.
EDIT that is, unless you can automatically regenerate the entire service, based on the schema - this is cool and works for some cases (eg. forms), and it seems to be the direction the industry is headed (as a no-coding solution, with many benefits: no tedium, no errors, no expensive/unruly expert developers).
BTW: the blog author (Mike Arace) is also the developer of the (free) software he's promoting (CodaServer). I have no problem with that, it's an interesting article. Perhaps that's why he didn't mention alternatives.
http://18thstreetsoftware.com/aboutus.php http://18thstreetsoftware.com/aboutus.php
- keefe 18y agoA lot of people (at least at my current employer) would point you to the semantic web and RDF. One of the big focuses is model driven development - defining application state and behavior in an abstract data model (ontology). I think RDF is a pretty good standard for representing abstract data models because it is general (being based on graphs), simple (triple = (subject, predicate, object), and self describing. There is a lot of bleeding edge work in this area and most of it suffers from severe performance problems at the current state of the art.
- keefe 18y agoclose paren where appropriate...
- fauigerzigerk 18y agoI like RDF for its flexibility, but OWL is very weak. You can't even define very basic constraints that RDBMS schema languages have had for ages. All value constraints on properties have to be constants. So, for example, you cannot state that shipping_date must greater than order_date. Querying RDF triples within reasonable performance constraints is very hard for the general case. I've tried a lot in that area. You just can't get around the fact that not using upfront knowledge about access paths to define the storage structures means to accept a huge number of joins. However, it's certainly a possibility to encode that knowledge in indexes instead of the logical data model. Column databases seem to be promising for RDF storage and query.
- keefe 18y agoI'm not a big fan of OWL either. I think that you can get all the expressibility of OWL and more using rules - in fact the fastest current OWL reasoner, OwlIm, is based on using rules to model owl. A constraint like this would be something like SELECT ?invalid WHERE { ?invalid rdf:Type your:Class . ?invalid your:value1 ?v1 . ?invalid your:value2 ?v2 . FILTER(?v1>?v2) } Sparql queries can contain a construct clause which turns them into rules. For querying an RDF view of a relational database, I don't think anyone has solved this yet - D2RQ tries but like you say the performance tends to suck. A lot of the current promising work is using triple stores to store RDF directly, with a big leader in Franz with Allegrograph.
- 13ren 18y agoRDF is a new solution. What about the old solutions to this old problem? That's what I was asking about.
- keefe 18y agoI started with the data modeling world with RDF, so I do not have a lot of great info here. At some clients I have been to, they worked on a data warehouse schema in a star schema format that acted as a master and in some places the abstract model just lived in people's heads. My previous job was like that. These are people that ended up using RDF/OWL to put this into an ontology to get a better grasp on the abstract model.