Magma

From Organic Design wiki
Revision as of 00:37, 17 January 2011 by Infomaniac (talk | contribs) (distributed db for squeak and pharo)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Magma is a fully supported, multi-user object database for Squeak 3.9, 3.10, 4.1 and Pharo 1.0 images that:

  • provides transparent access to a large-scale shared persistent object model.
  • supports multiple users concurrently via optimistic locking.
  • utilizes a simple transaction protocol.
  • provides collaborative program development via live class evolution, peer-to-peer model sharing and Monticello integration.
  • support for large, indexed collections with robust querying.
  • runs with pretty good performance and provides performance tuning mechanisms.
  • learning basic usage takes just a few minutes.
  • provides high-availability and fault tolerance.
  • includes a small suite of tools.
  • is written 100% in intelligible, well-factored Smalltalk.
  • includes rigorous SUnit tests that utilize multiple images to simulate testing in a multi-user environment.
  • a generous license.


MagmaForwardingProxys A single physical Magma repository permits collaboration of a large, centralized domain model. But it is not necessary (nor in some cases even advisable) that the model be kept in one physical repository. It need not be necessary for a geo-map repository with streets and cities to be in the same physical repository as the PointsOfInterest database. Logical "links", as capable proxies, allow the perceived repository to stretch infinitely, even possibly manifesting in a sort of "Magma web" of linked repositories that might foster community interaction.

Succinctly, a MagmaForwardingProxy is a "bookmark" to an object in another repository, and transparently behaves as that object. This results in a number of beneficial "side-effects":

  • server scalability is increased, since each physical repository is supported by its own thread.
  • separate physical repositories can managed (i.e., backed up) independently. repositories may be used by multiple disparate applications, without affecting each other.
  • can save memory in web servers (Magma clients) by allowing a sing copy of a shared domain (instead one copy per web client).