sqlamp is an implementation of Materialized Path for SQLAlchemy.
Project description
:mod:`sqlamp` --- Materialized Path for SQLAlchemy
==================================================
:mod:`sqlamp` is an implementation of an efficient algorithm for working
with hierarchical data structures --- `Materialized Path`. :mod:`sqlamp`
uses (and depends of) `SQLAlchemy <http://sqlalchemy.org>`_.
`Materialized Path` is a way to store (and fetch) a trees in a relational
databases. It is the compromise between `Nested Sets` and `Adjacency
Relations` in respect to simplicity and efficiency. Method was proposed
by `Vadim Tropashko`_ in his book `SQL Design Patterns`_. Vadim's
description of the method can be read in his article `Trees in SQL:
Nested Sets and Materialized Path (by Vadim Tropashko)`_.
Implemented features:
* Saving node roots --- if no parent set for node. The tree will have
a new `tree_id`.
* Saving child nodes --- if node has some parent. The whole dirty job
of setting values in `tree_id`, `path` and `depth` fields is done
by `sqlamp`.
* Fetching node's descendants, ancestors and children using the most
efficient way available (see :class:`MPInstanceManager`)
* Autochecking exhaustion of tree size limits --- maximum number of
children, maximum nesting level (see :class:`MPManager` to learn
more about limits fine-tuning) is done during session flush.
* Rebuilding all trees (see :meth:`MPClassManager.rebuild_all_trees`)
and any subtree (:meth:`MPClassManager.rebuild_subtree`) on the
basis of Adjacency Relations.
Moving of nodes is not yet implemented.
Known-to-work supported DBMS include `sqlite`_ (tested with 3.6.14),
`MySQL`_ (tested using both MyISAM and InnoDB with server version 5.1.34)
and `PostgreSQL`_ (tested with 8.3.7), but sqlamp should work with any
other DBMS supported by SQLAlchemy.
.. _`Vadim Tropashko`: http://vadimtropashko.wordpress.com
.. _`Sql Design Patterns`:
http://www.rampant-books.com/book_2006_1_sql_coding_styles.htm
.. _`Trees in SQL: Nested Sets and Materialized Path (by Vadim Tropashko)`:
http://www.dbazine.com/oracle/or-articles/tropashko4
.. _`sqlite`: http://sqlite.org
.. _`MySQL`: http://mysql.com
.. _`PostgreSQL`: http://postgresql.org
==================================================
:mod:`sqlamp` is an implementation of an efficient algorithm for working
with hierarchical data structures --- `Materialized Path`. :mod:`sqlamp`
uses (and depends of) `SQLAlchemy <http://sqlalchemy.org>`_.
`Materialized Path` is a way to store (and fetch) a trees in a relational
databases. It is the compromise between `Nested Sets` and `Adjacency
Relations` in respect to simplicity and efficiency. Method was proposed
by `Vadim Tropashko`_ in his book `SQL Design Patterns`_. Vadim's
description of the method can be read in his article `Trees in SQL:
Nested Sets and Materialized Path (by Vadim Tropashko)`_.
Implemented features:
* Saving node roots --- if no parent set for node. The tree will have
a new `tree_id`.
* Saving child nodes --- if node has some parent. The whole dirty job
of setting values in `tree_id`, `path` and `depth` fields is done
by `sqlamp`.
* Fetching node's descendants, ancestors and children using the most
efficient way available (see :class:`MPInstanceManager`)
* Autochecking exhaustion of tree size limits --- maximum number of
children, maximum nesting level (see :class:`MPManager` to learn
more about limits fine-tuning) is done during session flush.
* Rebuilding all trees (see :meth:`MPClassManager.rebuild_all_trees`)
and any subtree (:meth:`MPClassManager.rebuild_subtree`) on the
basis of Adjacency Relations.
Moving of nodes is not yet implemented.
Known-to-work supported DBMS include `sqlite`_ (tested with 3.6.14),
`MySQL`_ (tested using both MyISAM and InnoDB with server version 5.1.34)
and `PostgreSQL`_ (tested with 8.3.7), but sqlamp should work with any
other DBMS supported by SQLAlchemy.
.. _`Vadim Tropashko`: http://vadimtropashko.wordpress.com
.. _`Sql Design Patterns`:
http://www.rampant-books.com/book_2006_1_sql_coding_styles.htm
.. _`Trees in SQL: Nested Sets and Materialized Path (by Vadim Tropashko)`:
http://www.dbazine.com/oracle/or-articles/tropashko4
.. _`sqlite`: http://sqlite.org
.. _`MySQL`: http://mysql.com
.. _`PostgreSQL`: http://postgresql.org
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
sqlamp-0.3.tar.gz
(20.8 kB
view hashes)