Re: I think that relational DBs are dead. See link to my article inside

From: Dmitry Shuklin <shuklin_at_bk.ru>
Date: 5 Jul 2006 04:13:24 -0700
Message-ID: <1152098004.042288.157380_at_m79g2000cwm.googlegroups.com>


Hi Cimode

> > > What other similar models are you refering to?
> >
> > graphs theory, semantic network, frames, neural networks, hierarchical
> > semantic network, M-Network.
> >
> > > > Of course. Just need to create yet anoter .NET class.
> > > All right..What kind of operations are currently supported over neurons
> > > data type?
> >
> > Here is very important issue. I make this DB for neural networks but i
> > don't include any sample neuron implementation into kernel. Neuron
> > models can be implemented in separate DLLs and attached to DB.
> >
> > For example i describe one of neuron model which i am using.
> >
> > - adding link to another neuron
> > - removing link to another neuron
> > - scan all input neurones and compute neuron state.
> > - put current state to output linked neurones
> >
> > all them are just a methods, implemented in class. when some neuron
> > receives thread (message) it can invoke some methods from related
> > neurons. I have a brief articles on russian about neural network models
> > which i am using. briefly them equivalent to finite state grammar and
> > can be used to parse natural language (russian).
> I believe this is a description of the computational operations your
> system can perform on a specific implementation.

yes

> > and there no specific neuron data type. there exists a set of
> > interfaces. some interfaces are mandatory for each neuron, some not.
> > there are many neuron types in one network. but all can communicate
> > with each other via interfaces.
> If you don't define a data type neuron what are the characteristics of
> a *neuron*?

Characteristics defined in interfaces. Of course some classes implementing these interfaces must exists in some DLL. And this DLL must be configured and attached to OODB.

> > Here links to my old english articles. But they are not about this DB.
> >
> > http://www.shuklin.com/ai/ht/en/ai04001f.aspx
> > http://www.shuklin.com/ai/ht/en/ai00002f.pdf
> > http://www.shuklin.com/ai/ht/en/ai00007f.pdf
> > http://www.shuklin.com/ai/ht/en/ai00009f.pdf
> >
> >
> > > By operations I mean operators that can be applied to data of neuron
> > > data type...
> >
> > they completly defined by developer as class methods
> You should note that RM allows to associate in a one-shot declarative
> manner all operators and constraints over values that can be applied to
> a specific ensemble of value. Based on your description (interfaces),
> it seem that all equivalent need to be specified programmatically at
> run time in a recurring manner. I doubt this constitutes a progress...

Hm, all declarative RM constraints in any cases must be implemented in imperative language by some RDBMS. So from implementation point of view it is the same. I don't say that declarativity is bad. I am saying that declarative programming is not suppurted in current version. Unfortunatelly is not supported. But it can be supported in a future.

> > > Can you for instance apply equal operator to state that 2 neurons are
> > > equal?
> > 1.yes,
> How?

they must override and implement System.Object.Equals() then you can compare two instances.

> > 2. models which i am using don't need this feature
> So you are stating that the sample data you are using for testing
> determine how sound is an abstract model?

Sorry, I don't understand this question.

> > > Can you find all neurons that fit a particular description, 2 particular description...
> >
> > 1.yes, O(N) in current version
> > 2. models which i am using don't need this feature
> Keep in mind that RM abstract level allows to dissociate this kind of
> issue from particular context...Once you declare a data type neurons
> and define all its attributes you can image all search combination of
> attribute conditions.

Hm. I don't know all attributes even at runtime. Attributes can be added and removed from each instance of neuron absolutelly independent from all another network. Each neuron is unique. So in my models i don't needed RM as conception at all. But i understand that it is very useful conception. So I tryed to support many of its possibilities.

We should not merge neural model with OODB conceptions.

Neural model use some features of OODB and implement some features which not implemented in OODB kernel. It is different things neural network and OODB.

Neural network is implemented as application that uses OODB and stores neurons as OODB objects.

> > > How do you find for instance ALL neurons that
> > > have a specific wavelength but not a particular configuration (assuming
> > > wavelength and configuration being properties applyable of neuron)?
> >
> > You should scan collection of neurunes and invoke some methods from
> > neurones. Then decide what you want to do with each instance.
> What if you have 2 users doing the same thing over 3 trillions neurons,
> who has priority? how is parallelism handled? throughput?

I have already sayed this. Current version is strongly single user.

> Are the IO
> accesses liner, bidimensional, direct image? How about RAM?

Interesting question. OODB restricts the amount of memory used by the graph of objects or the neural network with larger quantities of class instances. The most frequently used objects are left in the RAM, the others are moved to the physical storage area and are loaded into the RAM upon demand. It unloads the rarely used objects when other objects are loaded to the RAM. The memory amount restriction allows not using the paging file so that it significantly increases the modeling performance of networks with larger quantities of class instances.

> > > How do you support read consistency...
> >
> > It is single user OODB. Let say that this question is open
> Then it is a single application developped on a single post not a real
> server yet. A DBMS important ability is to behave like a server for
> requests...

Current version is experimental single user desktop database engine.

> > > For instance what happens when
> > > you begin a insert transaction with committing over a table then run a
> > > select over the same table...What kind of version of the table does you
> > > select return?
> >
> > there are no tables as they are in RDB. and no inserts. and no selects.
> > as conceptions equivalent to RDB.
> No inserts? no update? How do you keep track of your data? How do you
> update it?

There are objects. No data. Objects has methods. Methods can change objects attributes. Instead of insert you should create NEW object instance. Then you can add this instance into number of collections. Instead of update you should invoke some method from some objects. All this can be done on C# or VB.NET

> > there are collections - collections are instances of objects too
> > you can create instance. find instance. destroy instance.
> > you can add existing instance into collection. one instance can be
> > added to different collections.
> >
> > if you start transaction, and add some instance to some collection then
> > collection is marked as changed by this transaction. you will receive
> > new version of collection instance. collections stores only pointers.
> How about another user coming in? what version of data will he/she get?

It is a single user desktop DB. In a far future I have plans to implement isolation.

> > no data. objects stores only methods. no data. attributes some times
> No data? I will use information instead...

Ok. "no data" it is very bad definition. I want to say, that in common scenario, when you write class on VB.NET this class has a non static fields which contains data.

In my OODB these fields are not serialized into DB storage. You should use OODB API to store object attributes into DB. This is like ASP.NET ViewState.

> Are you saying the system is meant to work only once? Where do you
> store past information? How do you retrieve that past information?

I support undo / redo persistent transactions . System track all object changes beetwen transactions. You can unso transaction, get past information and then redo to get a current version of object. If you needed you can shutdown DB and then restart. All history still remains and undo / redo will still work ok. When you commit or rollback transaction history is cleared and then undo / redo can't switch object versions.

> > > This kind of segregation is done at compile time which
> > > saves resources...
> >
> > In current version i support only runtime constraints. no declarative
> > style. only imperative.
> > In future - will see in future.
> It seems to me you still have a long way to go before saying relational
> is dead?
> I will buy you a copy when done...

If you interested you can download sources of current version. Unfortunatelly english documentation is absent there.

WBR,
Dmitry Received on Wed Jul 05 2006 - 13:13:24 CEST

Original text of this message