[Opensim-dev] Object Representation

Dzonatas dzonatas at dzonux.net
Sat Feb 9 21:13:49 UTC 2008


Impalah wrote:
> Well, I've seen enterprise solutions with hibernate and Lucene working 
> together, so the needs for having a good search engine could be 
> covered with this aproach...

Recent slashdot news has pointed out a distributed database based on 
google, more to check-out:
http://www.linuxworld.com/news/2008/020608-hypertable.html
http://www.zvents.com/
http://code.google.com/p/hypertable/wiki/FAQ

>
> I've been looking for info of Atomatrix (not too much, only a bird's 
> eye look). Looks very interesting: atomic objects, distributed 
> computing, etc. Is all that a virtual world needs.

One thing that probably gets confused is the thought to implement 
everything in raw atomatrices, but that would be a resource hog 
space-wise even if it becomes extremely fast to index every detail of 
any possible object. A balance is needed. It is good to use atomatricies 
for general and dynamic areas, but specific data structures (especially 
ones that don't change) are not needed to be defined by atomatrices. 
Instead, a general type is made in a atomatrix structure, and it is used 
as a way to class blob entries. The blob then stores the packed data 
structure. That is why I pointed out the schema for the matrix1 example 
(previously posted here).

Hypertables (or hypercubes, multi-dimensional tables) are similar to 
what Atomatrix does. Atomatrix is more object-orientated based while 
hypetables is more 'view' based (i.e. MapReduce). I'd imagine the main 
different in schema is the resource use with Hypertables geared more 
towards search rather than update speed. Hypertables appears good for an 
archive base.

>
> But it's not incompatible with hibernate, I think. One is the object 
> model (the whole world architecture), the other, the way the objects 
> persists in database (or memory, or whatever we want to use). Maybe if 
> we take a look at the atomatrix code we could find a way to link 
> everything.

NHibernate is cool, but what I have seen so far is that it wants to 
broker directly to SQL and that forces users to base their entire 
environment on the NHibernate/SQL back-end. Anotherwords, it is not 
DB/filesystem agnostic. That is where I see it lack the generality we 
need; for example, when there is a need to share (as in exchange) 
objects between simulators. We can't expect all simulators to use 
NHibernate/SQL brokerage, but that doesn't mean we shouldn't use 
NHibernate. It means that assets being exchanged may break if the assets 
rely on the default setup of NHibernate of one simulator and find it not 
available on the other simulator.

Yes, it is not incompatible with Atomatrix. Atomatrix and NHibernate 
focus at different layers.  Atomatrix can easily encapsulate NHibernate 
data or even provide MapReduce like processes upon such data, but that 
depends on how well we would be able to get NHibernate not to rely on 
direct SQL access. It appears NHibernate has the XML option instead of 
SQL for storage, and XML is easily encapsulated. We would only want to 
be able to encapsulate objects that are not static to the run-time. Such 
static objects, being fitted with NHibernate and Mono, are best to let 
NHibernate do what it does natively. The more dynamic objects, being 
used as exchangeable assets for example, is where I see a more general 
layer is needed for their exchange, security, and other dynamic factory 
features.


>
> Collada is another thing. It's a xml format for saving 3D scenes: good 
> for sharing data between programs but not for having this data working 
> in real time. I tried to use it for my Henshin project (Autocad to 
> Second Life exporter program) but due the way SL treates the 
> primitives (modifications, cuts, texturing...) is a mad to use it: we 
> will need to add some type of "converter" if we want to use the Second 
> Life viewer. One project that uses Collada for importing/exporting is 
> Multiverse (http://www.multiverse.net/) if my memory doesn't fails.

Collada doesn't force anybody to use it natively, but it is a standard 
way to encapsulate such related data for exchange.  The filters (i.e. 
'converters') can be used to move data structures from one optimal 
format to another and back to collada for its exchange. The default 
schema shown on the website is pretty general and not well suited for 
more secure transactions. For example, parts of an object may be owned 
by several users, and we wouldn't want to generally expose all parts of 
an object for anybody to look at it. Collada does present the flow and 
basic protocol (skeleton) to allow such finer security control, but we 
would need to developer the actual methods to control such data.  I 
really like the ability to store an optimized physical model and an 
optimized viewer model of the same object under the same DAE.


The main question to this thread was about a unified database plan, and 
the answer may come in different layers to the database. I suggested a 
couple general layers. There are suggestions here for more specific 
layers.  How unified does it have to be?





More information about the Opensim-dev mailing list