Ruby/Valentina

Ruslan Zasukhin sunshine at public.kherson.ua
Thu Apr 27 16:37:34 CDT 2006


On 4/27/06 2:40 PM, "oerwie" <trosty at mac.com> wrote:

Hi All,

>> * btw, I have not yet mention Inheritance.
>> 
>> So again in short, Valentina Database model will have
>>    Tables = Classes
>>        Instances = Records
>> 
>>    Property of Class
>>        properties of instances.
>> 
>>    Link between Classes
>>        few kinds of links between records.
>> 
>>    Inheritance of Classes
>>        this bring many hidden issues:
>>        - hidden link 1 : 1 of IS-A kind
>>        - hidden mechanism of search on few tables
>>        - hidden mechanism to use links of inherited classes.
>> 
>>    Collections (?)
>>        Different kinds of links can be considered as
>>        Collections of objects. This may fit nice to ODMG points of view.
>> 
>> What is the best, is that having all this Valentina still will be in
>> fundamental based on relational tables...Well Links only are other
>> structures...
>>
>> Deal is that I do not like OO DBMS ideas about how they store information.
>> NOT EFFECTIVE! Although they claim reverse. Even child can see that their
>> way to store objects may work good only on stream access to objects.
>>
> Although the way an OO DBMS is accessed, is mostly a combination of
> query (construct a basic object graph) and stream (keep feeding the
> graph with data as the programmer navigates through it). It's a little
> different then the relational way (just send a query and return the
> data). 

yes

> So there is optimisation possible for the navigation of object
> graphs, and this is what you are doing with the link abstractions, but
> this without sacrificing the query speed and the relational model. Right?

In general yes, right. But all is more interesting.

We bring new things NOT only on high level. For example mature DB Vendors
like Oracle and MS do add some Object wrappers to own dbs, but any such OO
feature is based in deep on some TABLE(s)

We are not afraid to add in fundament something totally new. You see, Links
they bring few benefits in few areas:
    - more effective disk storage
    - more simple and effective SQL
    - ability to introduce new SQL functions
    - more natural and simple database structure
    - more simple and effective low level API
        to navigate between linked records.
    - ... 

------------------------------------
Let me repeat few points.

* Valentina SUPPORT relational model 100%
        we have PK and FK, identity, tables, fields, indexes.
        we can do SQL with joins, group by, ..

* Internally, Valentina keep tables not on pages like do all other, but in
separate logical format.

* Valentina add some OO features such as:

- RecID - each table have it. Eat ZERO disk space!
    in wiki this is shown that others can eat Mbs only
    for this field and its index.

* OID - follow ODMG standard. Again eat ZERO on disk!
        
* ObjectPtr - similar to FK of ULONG type. But work with RecID only.
    so it is simpler than FK.

* Binary Link -- attention. THIS IS NOT A TABLE !!!
    it is other structure on disk.

    *** The fact that we have such kind of link already more Valentina
        from the Relational model.

    We say: that WE EXTEND Relational model by a new abstraction.
------------------------------------

And as I have told, in Valentina we offer to developer few way to work with
his database. So he can choose or even mix them in the same time:

1) SQL way - normal way for current DBMS world.

2) API way and its kind - Class way.
API way give you ability do navigation by graph of records very effective.
But as you have correctly point, it is not stream access, but normal random
access. 

-- 
Best regards,

Ruslan Zasukhin
VP Engineering and New Technology
Paradigma Software, Inc

Valentina - Joining Worlds of Information
http://www.paradigmasoft.com

[I feel the need: the need for speed]




More information about the Valentina mailing list