自定义比较器

使用自定义比较器,需要实现 NoSQL Assistant 预先定义的LevelDBAdminInterface.IComparator接口:

public interface IComparator
{
    /// <summary>
    /// 对两个键进行比较
    /// </summary>
    /// <param name="key1"></param>
    /// <param name="key2"></param>
    /// <returns></returns>
    int Compare(byte[] key1, byte[] key2);
}

下面是一个使用自定义比较器的例子:

/// <summary>
/// 用户自定义的比较器需要实现IComparator接口,类名必须为CustomComparator,这是一个例子,脚本不能使用命名空间
/// </summary>
public class CustomComparator : LevelDBAdminInterface.IComparator
{
    public int Compare(byte[] key1, byte[] key2)
    {
        int i = 0;
        for (; i < key1.Length && i < key2.Length; i++)
        {
            int diff = key1[i] - key2[i];
            if (diff != 0)
                return diff;
        }

        if (i < key1.Length)
        {
            return 1;
        }

        if (i < key2.Length)
        {
            return -1;
        }

        return 0;
    }
}
最后,在软件上的COMP Name内输入比较器的名字(注意,不是此处定义的类名);在COMP Impl中输入比较器的实现即可。

关于LevelDB比较器,请参考:https://github.com/google/leveldb/blob/main/doc/index.md#comparators