Tuesday, June 17, 2008

Other updates: DataObjects.Net v3.X, FiXml and Xtensive.Sql

In addition, today we updated to the latest codebase:
- DataObjects.Net v3.X installers - they resolve the most annoying problems mentioned in our support forum
- Xtensive.MSBuildTasks (FiXml tool is there - if you'll try to compile DataObjects.Net v4.0, you need it)
- Xtensive.Sql - our DOM model for SQL language.

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.

Saturday, June 07, 2008

DataObjects.Net 4.0: early preview will be shown on the next week

We're going to show early DataObjects.Net 4.0 preview on the next weekend. Don't expect anything sensational from it - for now we'll show just a very simple sample application for it showing basic CRUD capabilities. For now we're considering two options describing what and for whom to show this preview:
- Include source code of all core assemblies with tests into the preview and make it available for Enterprise \ Professional Edition users only. Plus: the code isn't well-documented for yet, so source code will help a lot for beginners. Minus: we'll significantly limit our potential test users base.
- Include just core assemblies and make the preview available for anyone. Pluses are obvious, the minus is that we're exposing some of our know-hows publicly before actual release in this case. We don't want to obfuscate everything (we consider it's better to be open from this point), moreover, obfuscated preview is actually less attractive for deep studying.

The final decision here isn't made yet, so any comments \ proposals are welcome. Our further plan is nearly the following:
- CTP - ASAP, hopefully - till the end of this month. It should already allow to build applications based on new DataObjects.Net, but will still have many lacks (at least - related to schema upgrade, LINQ support and limited SQL query capabilities - only RSE-to-SQL queries will be supported).
- Release and official launch in Summer. Hopefully - during the first half of August. Will allow to build generally any king of RDBMS application with it. Should include not just our in-memory storage provider, but file system storage provider as well - i.e. it will offer built-in RDBMS. Will include extendable provider-independent full-text indexing & search engine. This time we're planning to arrange product launch better - there should be offline 1-day sessions in Ekaterinburg at least, and after some short period - in Europe [and/or] USA, dependently on the amount of people that wants to visit them.
- A set of essential updates in Autumn. At least, we're planning to show what really distributed storage means for us.

And one less attractive announcement: we'll change DataObjects.Net prices shortly after publishing the preview - they'll be noticeably higher. But we're thinking about making Express Edition of v4.0 more featured.

Nightly builds are back

Finally it's done - nightly builds for DataObjects.Net are back again. You can find them in DataObjects.Net Downloads section (now they are shipped as installers, rather then .zip). ChangeLog files (they're separate for v3.9.5 and for v3.8.9) list the changes done after release. Note that builds aren't updated if there are no commits.