This project is read-only.

NuGet Package:

PM> Install-Package lobdb

What can LoBDb.NET offer?

The project LoBDb.NET is an attempt to create a modern business-application development framework. The main idea of the project is to complement the functionality of existing DBMS to some common programming interface that can be accessed with those SQL operators that are implemented identically in all database management products, namely Insert/Select/Update/Delete operators as well as the mechanism of invoking stored procedures. That way everything that helps building business-applications is contained inside a smart database and can be accessed from any modern programming language. Besides, a language-specific wrapper is supposed to be written for each supported programming environment providing an access to the API in an object-oriented manner (currently LoBDb.NET has a wrapper for .NET).
  1. The functionality of a smart database consists of different areas. First of all, LoBDb.NET database stores a physical data model that describes a set of user-defined tables, their columns and indexes. This information is stored in a number of service tables but in contrast to INFORMATION_SCHEMA there is a set of stored procedures that can be used to modify any aspect of the model in a unified way eliminating the need to issue DDL statements.
  2. Secondly, a LoBDb.NET database provides a one-stage recycle bin that helps administrators restoring deleted records. This mechanism is completely transparent for a business-application that issues its DML requests to a special updatable view that is created for each user-defined table and has the name of that table. In its turn, the view returns only active records from the backend table and redirects Insert/Update/Delete operations to the data source using the mechanism of instead-of triggers. Recycling a record is done by issuing a standard Delete operator against a table view; by-turn a record can be restored using a special stored procedure. Only database administrators have permission to access data in real tables. If a business-application doesn’t need a recycle bin, it can be disabled thus forcing Delete operators to delete records bypassing the recycle bin.
  3. Thirdly, the platform provides a built-in security model that controls the data access. Particularly, an administrator can specify that a certain role (or a user) can do the given operations on the specified set of records of the given tables. Those permissions can be granted either for all active table records or for the records that were created by the user that is performing the operation, or for all users from the specified list of business units. Such a list of business units is formed dynamically in relation to the unit that contains the currently logged-in user. For instance, an administrator can declare that all users of a certain role can read records owned by the users from the same business unit and all its child units. In that case the table views are configured in such a way that they return only those records the currently logged-in user is allowed to read and throw an error when that user tries to perform unauthorized operations on the data.
  4. Fourthly, LoBDb.NET extends many built-in DBMS column types. For example, it has a reference column that can point to many tables with a cascade delete option for each of those pointers. Besides, LoBDb.NET provides an enumeration column that restricts its value with a set of predefined values. String columns provide a way to specify a valid string template using regular expressions. Many column types have the default, minimum and maximum value properties.
  5. Fifthly, each user-defined table contains a set of system columns storing such information as the record creation date and time, the date and time of its last update or delete, the record owner, the names of the users that created, updated or deleted the record etc. Ordinary users cannot change those columns as they are populated automatically. For instance, the value of the column that stores the record version is regenerated after the row insertion and after each subsequent update thus implementing the mechanism of optimistic concurrency control.
  6. Lastly, LoBDb.NET supports backup and restore operations between databases created using different DBMS.

Pavel Malkov

Last edited Jul 29, 2012 at 3:07 AM by mapase, version 42