Hello, I've released a new version of DBIx::Class::Tree::Mobius.
http://search.cpan.org/~vdg/DBIx-Class-Tree-Mobius-0.201/lib/DBIx/Class/Tree/Mobius.pm https://github.com/vdg/DBIx-Class-Tree-Mobius What's new since the experimental versions (0.00002_01 and 0.00001_04) : The encoding has changed a bit. So if anyone was using these development version 0.00002_01 and 0.00001_04, be very careful, the new encoding is *NOT* compatible with the old one. I can provide a migration script if you need one. First change, root nodes are now coded with 'b' column = 1 instead of 'null'. Because it's more correct mathematically but also because this allows DBIx::Class::Tree::Mobius to manage them more like any other nodes using an abstract super root node (a, b, c, d) = ( 1, 0, 0, 1 ) This super node is represented internally as a resultset->new({}) empty object and I use ->in_storage dbic function to test if a node is the super node or not. I'm not very pleased with this choice but I was not able to find a better solution. Does someone has an idea? Secondly, DBIx::Class::Tree::Mobius doesn't store any more a new mobius representation with a distinct index when inserting a child. Instead, all leaves (nodes with no child) are using the same encoding with the position index 2. This is a huge performance improvement using DBIx::Class::Tree::Mobius with thousands of leaves but relatively less inner nodes (I guess a case very common in real world usage of SQL tree encoding). I've used DBIx::Class::Tree::Mobius in production (MySQL) with several hundreds of thousand of leaves and 2 thousands inner nodes without any perceptible slowdown inserting a new child. With the old encoding of 0.00002_01, adding a new child to a node already parent of hundred of thousand of children (in this case a 'folder' of images) could take many seconds. Another advantage of this lazy allocation of new index - the 'x' of the Möbius encoding (ax+b)/(cx+d) - is that the tree size is only limited by the number of inner nodes, not by the number of its leaves. Valentin.
_______________________________________________ List: http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbix-class IRC: irc.perl.org#dbix-class SVN: http://dev.catalyst.perl.org/repos/bast/DBIx-Class/ Searchable Archive: http://www.grokbase.com/group/[email protected]
