Berkeley DB:存储密钥的值列表

问题描述 投票:0回答:1

考虑一个示例应用程序,我们需要将客户名称作为主键存储,并将其事务列表存储为Berkeley db中的值。伯克利是否支持针对主键存储值列表?如果是这样,如何设计实体?

berkeley-db berkeley-db-je berkeley-db-xml
1个回答
0
投票

最常见的方法是将记录保存为数据存储类型,例如XML(或JSON,如果您更喜欢那种东西)。这是我在C#中创建的一个示例,它将记录存储为数据库中的JSON对象:

        static void Main(string[] args)
    {
        var db = BTreeDatabase.Open("customers.db", new BTreeDatabaseConfig {Creation = CreatePolicy.ALWAYS});

        for (int i = 0; i < 10000; i++)
        {
            var customer = new Customer
            {
                customerName = nameGenerator.GenerateRandomFirstAndLastName()
            };
            var list = new List<Transaction>();
            for (int j = 0; j < 10; j++)
            {
                list.Add(new Transaction
                    {txAmount = random.NextDouble(), txDate = DateTime.Now, txId = randomString()});
            }

            customer.transactions = list;
            db.Put(new DatabaseEntry(Encoding.Default.GetBytes(customer.customerName)),
                new DatabaseEntry(Encoding.Default.GetBytes(JsonConvert.SerializeObject(customer))));
        }

        WriteLine("Completed!");
        ReadLine();
    }

当然,这不是最有效的方式,因为我存储了两次客户名称,但它应该是一个很好的起点。

© www.soinside.com 2019 - 2024. All rights reserved.