Tuesday, June 17, 2008

DataObjects.Net v4.0 EAP is available

It's done - finally. You can find the files at the tail of the list here . As is was said, nothing sensational for now. The .rar content is similar to former Xtensive.Sql builds - there are:
- Compilation & test running instructions
- Help (currently only "stable" classes are documented; everything that's in development is either not documented at all, or quite poorly documented)
- Source code, including our tests (so EAP builds are available for Professional \ Enterprise edition users only)
- Binaries.

I'd recommend to pay attention mainly on Xtensive.Storage.Tests now - they give some imagination of changes.

What does work, and what does not:
- For now only simplest (i.e. non-transactional) in-memory storage provider "works" (i.e. SqlDom isn't used at all). We're planning to "fix" this till the end of this month.
- Xtensive.Integrity is also unused, so no undo-redo, atomicity and so on. Again, should be available quite shortly.
- There are just few rather poor examples of Xtensive.Storage.Rse-based queries for now. That's the part we're mainly working on now, as well as with persistence. When it's done, we'll switch to LINQ support.
- There are no collections at all. Their implementation seems to be less complex now, and doesn't require low-level support, since everything is entity now, including collection item. Hopefully we'll be able to show them working in July.

So it's actually almost the earliest point when we could show Xtensive.Storage.

On the other hand, the results we have now seems quite promising. E.g. there are some benchmarks of our indexing engine:
- The simplest Int32 => Int32 in-memory index maintaining two default measures (Count, Size) is just 5 times slower then Dictionary on data modification (Add, Remove). Seems very good (Dictionary is almost perfect).
- The real simple in-memory Tuple-based index (again, over (Int32, Int32) row with first column as key) allows to insert \ remove about 200K rows/sec. That's more then almost any database can do on rather usual PC (the most comparable example is Berkeley DB - purely index-based database). The same index in SQL Server 2005 (in the fastest configuration of the database - i.e. no durability, etc.) handles ~ 6K inserts per second. So I estimate we'll be able to handle about 50...100K inserts per second by file system-based index (that doesn't exist for now as well).
- Other operations on in-memory indexes (fetch, seek, enumeration) show nearly the same performance as SQL Server 2005.
- Measures beat everything - i.e. we calculate Count and Sum / Avg for ranges with performance of OLAP. Almost instantly, independently of index size.

Ok, let's stop my boast for now. I understand that actually we're quite late, taking into account our original roadmap. But we're doing all to deliver this new version faster. We're planning to update EAP builds on weekly basis. When we'll reach "alpha" point (= CTP), we'll make it available to everyone. This should happen in the end of this month, or (ok, more likely) in early July. If everything will go smoothly, final v4.0 release should be available in the end of Summer.


  1. Forgot to add - any remarks related to new concepts well be published either here, or in our support forum. We'll start doing this tomorrow.

  2. Hi, I've noticed a typo in namespace name:

    I believe, it should be Xtensive.Storage.Tests.Model.Schemas