ANN: Schevo 3.0-beta1 released
mscott at goldenspud.com
Wed Nov 2 19:15:20 CET 2005
Also available at
What's new in version 3.0-beta1?
* Initial release of Schevo 3.0 series.
See the `Schevo website`_ for more information, or go ahead and `get
started with Schevo`_.
.. _Schevo website:
.. _get started with Schevo:
What is Schevo?
Schevo is a next-generation DBMS that focuses on the following:
- **Database Integrity**: Schevo is designed from the ground up to
protect your data. All changes to a Schevo database must be done
using transactions, and Schevo ensures that those transactions
always leave the database in a consistent state.
- **Rapid Development**: Schevo includes features to make it easy and
fun to create even the most complex of databases. Not only is the
schema syntax easy to write and understand, you can also quickly
place initial values in your schema that are required by your
database, and use the same syntax to create sets of sample data to
use during development.
- **User Interface Generation**: Schevo provides user interface
toolkits that take advantage of the richness of the database schema.
You can use the full-featured Schevo Navigator to interact with your
database without writing a single line of code outside of your
database schema. A PyQt-based toolkit is already available, and
TurboGears and NuFox toolkits are in the works.
- **Rich Schema Definition**: The schema for a Schevo database is
written in concise, easy-to-read Python code. Not only does the
schema describe how information in the database is structured, but
also defines all transactions and rules that ensure database
- **Assisted Schema Evolution**: Once a Schevo database is deployed
and is used to store valuable data, you will inevitably make further
changes to the structure of the database. Schevo assists you in
this task and makes it easy to restructure a database and facilitate
the migration of data from one schema version to the next.
Why use Schevo?
The main problem that Schevo was designed to address is that
Relational databases, which use Structured Query Language (SQL), do
not match well with object-oriented programming languages, such as
Java, Python and Ruby. This situation has been labeled the
"object-relational impedance mismatch" problem, and it is a
significant barrier to the rapid development and evolution of database
Because of this mismatch, database applications tend to have three
distinct layers of code: SQL within the database, object-oriented code
within the application, and an object-relational mapping (ORM) layer
to mediate between the SQL and the object language. These extra
layers add additional complexity and inflexibility to what are already
complex and inflexible databases. Schevo eliminates these extra
Schevo solves the object-relational impedance mismatch problem by
combining relational features with the object-oriented programming
language Python. A database schema defined in Schevo results in a
database that enforces the same integrity constraints supported by the
Relational model, with the added benefit of Python objects.
The benefit of this is that application developers can create their
entire application using the full power of the Python language without
having to introduce another language (SQL) that has its own language
constructs, its own datatypes, and a limited set of behavior.
Instead, a Schevo database stores Schevo objects which use native
Python datatypes and include any behavior defined for those objects.
In addition, Schevo objects contain a great deal of metadata that is
available for introspection to support the development of rich user
interfaces with a minimal amount of code.
In fact, Schevo includes a GUI Navigator that can display a fully
interactive interface into any Schevo database. The Navigator is
constructed on-the-fly based solely on the metadata available within
the Schevo database file. The Navigator allows you to display,
create, update, and delete any object within the database, within the
rules and constraints defined for that database.
Matthew R. Scott
More information about the Python-announce-list