Lmlogo.2012041701
inquire@landmetrics.com 540.300.5263


Sadielogo

Sadie

Sadie, A Dynamic Interspection Engine

In addition to having a gnu-style recursive moniker, Sadie is a key/value hash (like a lot of other projects), but it adds the idea of a framework of primers which get registered at initialization and executed when a value is requested with a key that has not yet been used to set a value. If a primer exists for a key, then the primer is executed and the value is computed and stored.

Sadie_init
All primers are registered when the object initializes, but no primer code is executed until it is needed.

Primers are free to make requests from the Sadie object as well, such that the execution of a single primer's code may trigger hundreds of subordinate primers before returning the answer. In this way, Sadie allows a complex arrangement of interconnected data which references information from several sources (hence the interspection non-word part of the title) and transforms the information as needed to fulfill the request (hence, dynamic).

Because primers are executed on-demand as values are requested, small quick requests which touch only a small fraction of the data can be handled in an efficient way, requiring only the minimum amount of initialization necessary to answer the question at hand.

Further, Sadie offers some convenience features such as:

  • allowing values to be selectively stored in memory or on disk, as dictated in the primer or via the setCheap and setExpensive methods.
  • a pluggable primer file mechanism which allows new shorthand primer files such as database connections and/or queries, windows-style .ini files, and templating via ruby's erb facility.
  • easy serialization and de-serialization.
Sadie_getter_smaller
Data fetch and transform code called primers is called just prior to returning the value.

Future versions of Sadie will:

  • incorporate methodologies for incorporating testing into the data assembly mechanism itself, so much of the business logic will be testable in absence of real data.
  • be multi-threaded, performing fetch and transform operations in parallel where possible.

Sadie is written in Ruby and the gem can be downloaded at its rubygems page. The source can be forked and/or downloaded at github.

News

Olsen Released

LandMetrics just released Olsen, an opensource tool for managing reporting and other types of big data outputs. It uses Sadie and adds plugin handlers for erb-style templates and typeset pdf generation using the TeX typesetting system.

PerimeterCOMPS Website Launched

LandMetrics just launched the PerimeterCOMPS website, a groundbreaking tool that lets buyers, sellers, and investors of real estate discover facts about the neighborhood real estate market that buyers and sellers can use to make good choices.

Sadie Released

LandMetrics just released Sadie, an opensource tool for extracting data from a variety of sources and interacting with it in a very efficient way. It is the core component of the PerimeterCOMPS system.

Articles

Introducing Sadie and Olsen

In a nutshell, Sadie a ruby gem that makes data access code more clean, manageable, an efficient. And that's great, but it gets a little better when sprinkled with a little Olsen, a simple reporter.

Sadie Eachers Explained

By merging a key/value storage mechanism with a framework that facilitates a "just-in-time" data gathering strategy, Sadie automatically optimizes data access, gathering, and manipulation by eliminating unrequested data access and manipulation. But Sadie also enables another optimization path via "eachers."

Society

Twitter Facebook