Coder Social home page Coder Social logo

arselon / htms Goto Github PK

View Code? Open in Web Editor NEW
2.0 2.0 0.0 260 KB

HTMS software - object tabular network database management system for Python programs. May be used in common or instead of ORM, for example in Django apps.

License: Apache License 2.0

Python 100.00%
database tabular network nosql python django

htms's Introduction

Tabular network database

 

Tags: tabular network database, hypertable, HT, HTMS, object-oriented software, nosql, python

 

Tabular network database (TNDB) or the hypertable (HT) - is a new generation of databases.

 

This project is a approach to building data models and implementing software at the junction of the relational, network and object-relational mapping concepts. The new data model was called a "Tabular Network". Tabular network database may be of interest in subject areas in which existing SQL and NoSQL systems are not always effective: in AI, in big data processing, in adaptive applications with self-modifying database structures, in embedded systems etc.

The first functionally complete implementation of the TNDB application programming interface (API) was called the HyperTable Management System - HTMS.

Simplicity was one of the main goals of creating HTMS. Using the HTMS is no more complicated than the APIs of well-known object-relational mapping (ORM) realizations, for example such as Django ORM. But the tabular network model is much closer to the real world than the relational model, so to design the databases easier.

 

The hypertable is a set of cross-referenced tables:

  • records are grouped into tables, and all records (rows) in the same table have the same set of fields (columns);
  • tables do not have headings: the set of columns of any table is a certain subset of common hypertable's attributes, i.e tabular structures in HT are defined as projections of a HT attribute set;
  • there are two disjoint attribute classes:
    • attributes, called data type attributes - DTA, define fields with self-defined data values;
    • attributes, called reference type attributes - RTA, define fields with values that are interpreted as links to rows in tables.
  • field values can be not only atomic, but also sets;
  • starting from the 3rd version of HTMS there are two kinds of RTA: simple links (were in HTMS version 2) and numbered or "weighted" links. Simple link is a physical address row in HT: pair tuple (table number, row number), i.e. the values of RTA fields are explicit links to any rows in any tables in the hypertable. Numbered ("weighted") link - is a simple link plus weight (real number): triple tuple (table number, row number, weight). In what follows, for simplicity, the numbered links will simply be called weights.

Full description of the tabular network data model see: Tabular network data model series.

 

The HTMS includes the following levels and packages:

  • The "object-level" of the HTMS includes HT_Obj class for creating the HT objects, and Obj_RAM class for mapping (transforming) objects to/from the rows of tables. The main functional class at this level is Obj_RAM, the methods of which provide the basic operations for manipulating, searching and filtering data, which are similar in results to the objects methods in the ORM;
  • The "mid-level" of the HTMS API is a set of classes and functions that form the basis for object-level: for organizing HT structures in general as well as models of individual tables (an analog of the models in Django ORM) and support common operations with the attributes, tables, rows and fields (create, change, delete etc.) and for formation search waves;
  • The "low-level" HTMS API is a set of classes and utility functions - the basis for the mid-level and object-level. In HTMS low level used the special software from file-level (imported from module cage_err.py from cage-api) for error processing;
  • The "file-level" HTMS API is a subsystem Cage of remote cached access to database files on servers on the network (description see github.com/Arselon/Cage).

The HTMS user interface created as a universal HT screen editor - HTed, implemented as a website. It can connect to any data server regardless of application. HTed is used to create, design, and edit database files compatible with the HTMS.

For most applications, using object-level and mid-level classes and functions is sufficient. Both of them together are a logical level of the HTMS. Packages are available on PyPI: htms-obj and htms-mid-api

Low-level and file-level - for advanced developers if they want to get inside the HTMS technology. Both of them together are a physical level of the HTMS. Packages are available on PyPI: htms-low-api and cage

 


Copyright 2019-2022 Arslan S. Aliev

Software licensed under the Apache License, Version 2.0 (the "License"); you may not use this software except in compliance with the License. You may obtain a copy of the License at www.apache.org. Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

HTMS API v.3.1.0, readme.md red. 06.08.2022

htms's People

Contributors

arselon avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.