Bindings, Platforms, and Innovation
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
Tracking change and innovation in the enterprise software development community
Posted by Gavin Terrill on Aug 20, 2007 06:30 AM
2007 could well be dubbed "the year the normalized database myth was debunked". We have seen interesting discussions on how large websites have moved away from the traditional relational database approach in order to service the millions of hits per hour they receive. As Joe Gregorio recently observed, common themes are emerging (emphasis mine):If you want to scale to the petabyte level, or the billion requests a day, you need to be:These attributes can be used to describe Mnesia , the Erlang distributed DBMS, that supports high scalability and fault tolerance through replication, with the ability to lookup records without the need for a traditional relational database join. Mnesia is part of Erlang/OTP and designed to be used with Erlang language applications running on the Erlang VM (there are interfaces available for C/C++ and Java).Those constraints represent something fundamentally different from a relational database.
- Distributed. The data has to be distributed across multiple machines.
- Joinless. No joins, and no referential integrity, at least at the data store level.
- De-Normalized. No one said this explicily, but I presume there is a lot of de-normalization going on if you are avoiding joins.
- Transcationless. No transactions.
The Mnesia DBMS runs in the same adress space as the application owning the data, yet the application cannot destroy the contents of the data base. This provides for both fast accesses and efficient fault tolerance, normally conflicting requirements. The implementation is based on features in the Erlang programming language, in which Mnesia is embedded.Section 1 of the paper explains that the stringent fault tolerance and highly availability requirements of the telecommunications applications were the motivation behind building the DBMS. The requirements were:
Mnesia is also interesting due to its tight coupling to the programming language Erlang, thus almost turning Erlang into a database programming language. This has many benefits, the foremost being that the impedance mismatch between data format used by the DBMS and data format used by the programming language which is being used to manipulate the data, completely disappears.The data model supports the concept of a table, where records equate to rows, and with each column able to store "arbitrarily complex compound data structures such as trees, functions, closures, code etc". An example of an Erlang complex record is provided:
X = #person{
name = klacke,
data = {male, 36, 971191},
married_to = eva,
children = [marten, maja, klara]
}.
Mnesia also supports a similar concept to Views known as Rules. The Mnesia system is currently being used to build real products in Ericsson today, thus it is no longer a mere prototype system, it has matured enough to be labeled a product.Mnesia development has continued since the paper, adding features such as fragmented tables (similar to shards, but handled at the database level), and is used in open source projects such as YAWS (Erlang Web Framework) and ejabberd (XMPP server).
I think that increased data volumes will impact day to day programing work far more than multicore will. A constant theme in the work I've done in the last few years has been dealing with larger and larger datasets. What Joe Gregorio calls "Megadata" (but now wishes he didn't). Large data sets are no longer esoteric concerns for a few big companies, but are becoming commonplace.and concludes that:
The big volumes mean you need to be able to write data and not care where it went. And you need keyed lookup for reads built on top of the FS, not in the RDBMS (on the basis that an RDBMS with no joins, constraints or triggers is an indexed filesystem). That will end looking looking something like hadoop, mogilefs or S3 - a data parallel architecture.Given the uptick in interest in Erlang/OTP (including recent InfoQ coverage), that could well end up looking like Mnesia as well.
5 Ways to Ensure Application Performance
Business Benefits of Open Source SOA
Give-away eBook – Confessions of an IT Manager
Well, please correct me if I'm wrong but I think YAWS is a web server, not a web framework...
Yes, YAWS is a web server. ErlyWeb is probably the Web Framework they meant.
For the Model, forget database abstraction layers: you have a pure Erlang distributed database called Mnesia. For the view, Yaws has ehtml. For the controller, Yaws has appmods and Erlang’s pattern matching.
More here.
This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.
This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.
This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.
This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.
This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.
After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.
IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.
Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.
3 comments
Watch Thread Reply