Google Mail Calendar Documents Reader Web more »
Recently Visited Groups | Help | Sign in
Google Groups Home
Message from discussion Schemaless and hierarchical databases
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Follow-up To:
Add Cc | Add Follow-up to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers that you hear
 
seanatconnelly@googlemail .com  
View profile   Translate to Translated (View Original)
 More options 18 Aug 2008, 12:20
From: "seanatconne...@googlemail.com" <seanatconne...@googlemail.com>
Date: Mon, 18 Aug 2008 04:20:27 -0700 (PDT)
Local: Mon 18 Aug 2008 12:20
Subject: Re: Schemaless and hierarchical databases
I agree, the topic of schema free databases is very pertinent to
today’s web application requirements. And as you say mumps is not some
"new kid on the block" trying to solve this problem.

Relational schemas or class based development can constrain more than
data, they can also constrain free flow development.

As mumps developers we also understand the pit falls of schema free
databases, something else the "new kids" have to experience firsthand.

In fact what we need is not a "schema free" database, but a "free flow
schema" database. A free flow schema that promotes free flow
development, call it an adaptive or semantic schema. Add
to that a layer of abstraction that overcomes the pit falls of raw
global development.

I see this abstraction not as classed based development but as object
based development in a similar way that JavaScript objects are freely
written. These objects auto inherit persistent functionality and
constructors to serialise and de-serialise object data such as HTML
forms, JSON and XML.

In "design mode" the developer can design and code freely. Once this
stage is completed constraints can then be optionally applied to the
semantic schema. In "run time mode" these  constraints assure the
quality of data and help protect against security issues such as data
injection.

The semantic schema is constructed with information gathered either by
the compiler or by the data engine during "design mode". Consider the
following example...

FooBar.Person
{
  Save()
  {
    Set person=FooBar.Person(%session("person"))
    Set person.Updated=Lib.Dates.Now()
    Set person.Sex=
$Select(Person.Sex="Male":"M",Person.Sex="Female":"F",1:"U")
    Set status=person.save()
    Write status
  }
  ToJSON()
  {
    Set person=FooBar.Person.Open(%session("person.id"))
    Set person.Age=Lib.Dates.Age(person.dob)  //this could be moved
into the semantic schema
    person.Salary.Hide()  //hide this information from general
requests
    Write person.ToJSON()
  }

}

where %session("person") contains either a simple name value list of
person properties or maybe a more complex nest of person related
objects.

First off lets assume that EWD is being used as the web engine,
%session will therefore compile down to $$getSessionValue^%zewdAPI. On
an EWD page an action will call FooBar.Person.Save()
which will post the blob of person data, this could be html form data,
JSON or XML. The constructor recognises the type and constructs a run
time object. We can manipulate that object
before saving it to the database. The save() method abstracts all the
global saves, transactions and error handling.

At compilation time the compiler doesn't know much about the Person
object. But once the code is executed during "design mode" the data
engine can profile the person object and add
information to the semantic schema. This allows the developer to
change the form object without making changes up stream.

Whilst the semantic schema could be used to drive a SQL engine such as
GT.m's PIP engine I see a much more simple "for each object where..."
syntax. This could be used to spin through data
or output data as a certain format type. For example...

FooBar.Person
{
  BySurnameAsArray(surname) As JSArray
  {
    for each person in FooBar.Person where person.surname=surname
    {
      select person.surname as "Surname", person.forename as
"Forename", person.address.postcode as "Post Code"  //similar to a
result set
    }
  }
  BySurnameAsJson(surname) As JSON
  {
    for each person in FooBar.Person where person.surname=surname
    {
      select person  //this version outputs a collection of person
objects, more sophisticated than a result set
    }
  }

}

I would take this extended mumps language further and add some of
these additional features

1. Adaptive indexing
2. Automatic detection and adaptive indexing of object relationships
(completely do away with joins in queries)
3. Integrated RAD studio with features such as auto complete of
semantic objects and inteligent warnings
4. The ability to project class based languages into semantic objects,
such as Cache, C# and Java. For instance Cache data could be injected
into GT.m. Or in reverse mumps could take
advantage of the powerful libraries in .NET and Java by projecting
semantic objects as C# / Java data proxy objects.

The bottom line is that its easy to see how Mumps already has the
flexibility and more importantly the speed to handle this type of
functionality. Trying to achieve the same functionality within
relational databases is just one more layer of complexity to add to
the object-relational impedance. Which just adds up to sluggish,
costly and difficult to scale applications.

Whilst Cache could provide a platform for this functionality it will
never fit into the low cost web application model.

Thankfully GT.m is open source and is just begging for this type of
solution to be developed for it. If a non-scalable solution such as
ruby on rails can go mainstream then what could a powerful and
scalable GT.m / EWD / Extended Mumps solution do for the web
development industry?

Mumps is not dead!

Sean.

On 16 Aug, 14:03, rtweed <rob.tw...@gmail.com> wrote:

> And here's another, this time from the Apache folks:

> http://incubator.apache.org/couchdb/

> Note the role of Javascript and JSON!

> and ObjectKitchen:

> http://code.google.com/p/objectkitchen/source/browse/branches/network...

> ..and strokeDB:

> http://www.infoq.com/news/2008/04/distributed-db-strokedb

> ...and dovetailDB:

> http://code.google.com/p/dovetaildb/

> One reason these people are re-inventing the wheel instead of using a
> tried and tested MUMPS engine as the basis of this kind of thing is
> probably because MUMPS doesn't appear in Google when you search for
> "schemaless database".  That shouldn't be too difficult to change!

> And check out the various ramblings of various people such as:

> http://syntacticsirup.blogspot.com/2007/01/tuplesoup-part-1.html

> http://www.berbs.us/search?query=schemaless

> http://www.productionscale.com/home/2007/8/11/getting-rid-of-the-rela...

> Oh and of course one thing I didn't note in my first posting - with
> GT.M we have a free OpenSource version of the schema-less,
> hierarchical database.  Even cooler still !!

> On 16 Aug, 11:19, rtweed <rob.tw...@gmail.com> wrote:

> > Isn't it ironic that whilst ISC have spent the last 10 years
> > desparately trying to hide that "old-fashioned" underlying MUMPS
> > database and add a whole layer of object orientation and schema to
> > make it palatable to the marketplace, the rest of the world is
> > increasingly realising that schema-less and hierarchical databases are
> > actually what they're looking for in the modern, internet-focused
> > world.

> > Try Googling "schemaless database" and you'll very quickly find out
> > about new databases such as Poseidon (http://www.brainwavelive.com/
> > developers/applications/poseidon-database.html) and Amazon's SimpleDB
> > (http://www.amazon.com/gp/browse.html?node=342335011).  Indeed how
> > even more ironic to see this quote inhttp://www.satine.org/archives/2007/12/13/amazon-simpledb/
> > :

> > "Schemaless - major cool factor for me here; items are little hash
> > tables containing sets of key, value pairs"

> > So, far from being old-fashioned and something that turns people away,
> > the inherent schemaless nature of MUMPS is now something that can be
> > promoted as a cool feature!  My prediction is that schemaless is soon
> > to become the new schema!

> > How about hierarchical databases?  You'll see less about this when you
> > Google it, apart from sad arcticles explaining the bizarre lengths
> > folks have to go to in order to store hierarchical data in relational
> > databases.  However, check out Google BigTable and you'll find a new
> > implementation of the hierarchical database model, and of course,
> > because it bears the Google name, is automatically deemed to be cool!

> > The hierarchical database comes into its own for storage of the
> > naturally hierarchical structure of XML and, more recently, JSON.
> > Check outhttp://www.rpbourret.com/xml/UseCases.htmfor more info on
> > so-called Native XML Databases.

> > As both our own eXtc and EWD products have shown, the projection of
> > the W3C XML DOM is so straightforward and natural that you'd have
> > thought W3C had designed it to use a MUMPS engine!  As a persistent
> > storage engine for data exposed and transported as JSON strings, again
> > the MUMPS model is a perfect fit, and JSON is one of today's super hot
> > technologies.

> > So why am I harping on about this?  Because here we all are using a
> > technology (in both Cache and GT.M) that, far from being something you
> > should be apologetic about and trying desparately to hide, you should
> > be shouting about from the hill-tops.  What you've been taking for
> > granted for years, the rest of the world is now starting to realise is
> > exactly what they need.

> > Of course, at M/Gateway we've been saying this for years, eghttp://gradvs1.mgateway.com/download/extreme1.pdf.

> > So here's the thing: the MUMPS database is a schemaless hierarchical
> > database.  Both at once! How cool is that?!!  Imagine what you could
> > do with that?!  Answer: stuff that the rest of the mainstream can only
> > dream about but drool at the idea of being able to do.  And MUMPS is a
> > tried and tested technology, not some "new kid on the block" barely
> > out of a start-up's R&D labs.

> > So now you know how cool a technology it is, get out there and tell
> > the world about it....- Hide quoted text -

> - Show quoted text -


    Reply to author    Forward  
You must Sign in before you can post messages.
To post a message, you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.

Create a group - Google Groups - Google Home - Terms of Service - Privacy Policy
©2009 Google