On 16/03/2009, at 10:02 AM, Chris Anderson wrote:

Damien once mentioned on IRC a clever way to do ordered lists. Keep
each item in it's own document, and store the list position as a
float. To insert an item between two others, average their
position-floats and use that. In the case of replication with other
items on the list from remote nodes, approximate order should be
preserved.

I've user that technique in the past. The problem is that after a while you end up rounding off due to limited precision, and the user is left wondering why they can't change the order of their items. And you can't just renumber because that's begging the question.

An alternative is to use ascii strings and rely on the fact that a < am < b, which allows infinite subdivision, although the problem then is that string length is unbounded, and then you need to consider the lifetime of the data and the insertion statistics, so it's not suitable for all ordering problems.

I think it's obvious that any system such as this is going to require unbounded precision - which is what the string length represent.

Antony Blakey
--------------------------
CTO, Linkuistics Pty Ltd
Ph: 0438 840 787

The greatest challenge to any thinker is stating the problem in a way that will allow a solution
  -- Bertrand Russell

Reply via email to