Tomorrows business technology today!
Call us: (623) 249-2664 |
LinkedIn
Home      Services      Products      Forum      Company
 
 

HSS Database: Introduction

This is the first in a series of short posts that will cover how to develop applications with the HSS Database for .NET, Silverlight and Windows Phone 7. The series will include the following segments:

Since this is the introduction, I’m going to briefly discuss what an object database is, and why we built the HSS Database and where we see its benefit in your application.

What is an object database?

From www.odbms.org, an object database management system (ODBMS, also referred to as an object-oriented database management system or OODBMS), is a database management system (DBMS) that supports the modeling and creation of data as objects. This includes some kind of support for classes of objects and the inheritance of class properties and methods by subclasses and their objects.

But before we begin, we should acknowledge that there are situations in which an RDBMS is the right tool for the job. The goal of the HSS Database is not to replace a mature and/or pre-existing RDBMS such as MySQL or SQL Server. The main benefit or value that the HSS Database provides is for embedded applications, disconnected or synchronized client databases for mobile or remote applications and for persistent object caching. As you will see the performance of the HSS Database is unparalleled.

For more good information regarding object oriented databases please see this site http://odbms.org.
For a listing and comparison of different systems please see this Wikipedia article: Comparison of object database management systems

HSS Database

HSSDB-Intro

The HSS Database comes in three different versions to support the three runtime platforms from Microsoft:

  • .NET 4 for WPF, Windows Forms, or more general Windows (client or server) based applications
  • Silverlight 4 for In the Browser and Out of the Browser applications
  • Windows Phone 7 for mobile applications

This provides a complete solutions when you have to develop applications across the environments. We built the HSS Database with this in mind from the onset, to ensure a smooth and consistent development paradigm could be followed and your objects could be re-used across the platforms. The main differences between the three versions is the support for the different storage formats of direct file system access for Windows applications and out of browser Silverlight applications, or Isolated Storage for Silverlight in browser or Windows Phone applications. All of this while providing you the developer with a single consistent and easy to use API.

Key Benefits of the HSS Database

  • Store any object in an HSS Database with out requiring you to inherit from a base class
  • Automatic object refactoring, allowing your pre-existing data to evolve with your data model
  • Support for your own primary key or object identifier (Int32, Int64 or Guid)
  • Object primary keys can optionally auto-increment (more on this in a later post)
  • Extremely fast speeds, which is one of the many reasons for using an object database
  • Object indexing, our indexing and data structure are what makes HSS Database so performant
  • Two files per stored type (index and data), making it easy to relocate or back up your database files
  • Simple design makes implementation extremely easy and intuitive
  • Data compression and custom serialization provides for a small file set
  • Data encryption for storing sensitive data

Before we built the HSS Database we evaluated several other object database solutions. And in some situations and depending on your needs, those products may be a better choice for your particular solution, The key factors we evaluated where price, performance, flexibility and ease of use and implementation as well as reliability. Most if not all of the other solutions were reliable and some had fair performance but not all where intuitive, easy to use, flexible or where priced above what we believed to be competitive for the feature set provided. Some where a relational object database which added overhead and complexity to the use and implementation, which in certain situation maybe desirable. There are good solutions that have a reasonable price but didn’t offer things like being able to specify your own primary keys or a what we thought was a clean API thereby complicating the implementation. Others where true replacements for a full blown backend RDMS and their pricing was commensurate with the scale of their solution and accompanying tools. Again we were looking for a balance between performance, flexibility, simple-use across all three platforms from Microsoft and at a super competitive price, which we now offer in the HSS Database product.

Ok, now that we’ve gone over some of the information behind the HSS Database, lets move on to some details.

HSS Database Usage

Short list of some reasons to use the HSS Database:

  • Local cache of data from a source DBMS whether it be from the cloud or your own servers
  • Local cache of synchronized data from a remote data source
  • Allows only the data you need at the moment to be loaded into memory
  • Stand alone application data storage
  • Encryption of persisted data

Basic process to implement:

  • Define your data model
  • Implement your objects, create your classes etc.
  • Mark your objects properties with the appropriate attributes
  • Create (open) a database object instance
  • Start adding objects

HSSDB-Intro-Process

Things you need to know about the HSS Database:

  • Does not use ORM (object relational mapping), is a No SQL, code first approach
  • Database files are stored based on the runtime environment automatically
  • Supports the use of Object LINQ Queries
  • Very small footprint ~100KB depending on runtime
  • No connection string required, just the name of your database
  • You specify the folder for your database files
  • Optional password if encryption required
  • Two files per stored type, one for the index and one for the data
  • Complete API in a single DLL, no external dependencies

That was the intro post of the “HSS Database” series of articles. Stay tuned for the rest of the posts.

HSS Database: Product Page

About: support

Support Team User for HighSpeed-Solutions, LLC. and general user who enjoys writing technical articles and helping others leverage technology. Contact us for comments or questions.


5 comments

  1. zoowy says:

    what is the attribute for a member wich is list of objects of type X in an object of type Y?
    thx

    • admin says:

      HSS DB does not support a single property that is itself a collection of other objects. You are required to maintain your references externally.

  2. Early says:

    Fianlly! This is just what I was looking for.

  3. Mhm, very great design :) .

  4. Ethan Hyatt says:

    Great post, I just bookmarked it on Digg.

leave a comment

Your email address will not be published. Required fields are marked *

*