XML数据库
来源:互联网 发布:王健林怎么了知乎 编辑:程序博客网 时间:2024/06/05 12:40
这是我正在开发的一个产品。很好理解,它是一个数据库产品(或者称为解决方案),而且它直接就用XML存储数据。
以下是一些基本介绍:
区别于现行的主流数据库,它的数据就是直接用XML文件存储的,而且它不是一个简单的关系型,也不是二维的。一份表格中的数据可以包含多个层次:
典型的例子是:订单表,除了包含订单的概要信息(订购单号,客户编号,订购日期等),还应该包含订单明细(产品编号,单价,数量等),以前要设置这样的数据库,一定是分成两个表的。这是因为在标准的关系型数据库,它仅仅是二维的数据结构。很难实现上述要求。而用XML来做就先天有这个优势。
当然,XML也有一些劣势,就是它的存取不是很高效,而且容量有限。但这并不成为大问题,或者这些问题都是相对的。我开发这一套数据库,就是想找到一个在中小型数据应用(尤其是要求数据结构很灵活的情况下)的数据库选择。
当然,虽然数据是用XML存储的,并不是说用户需要去操作那些文件。事实上,我已经开发好一套API,开发人员可以很方便地使用它们。
大致是类似下面这样的使用方式
using System;
using System.Collections.Generic;
using XMLDatabase;
using DataEntities;
using System.Linq;
namespace SampleApplication
{
class Program
{
static void Main(string[] args)
{
///插入1000个订单约54秒
Database db = Database.CreateInstance("Testdb", "E://Temp"); db.Insert var customers = from c1 in db.Select foreach (var item in customers) Order o = new Order(); db.Insert var orders = from o1 in db.Select foreach (var item in orders) Console.Read(); 这套数据库产品会在合适的时候进行发布。以上只是一个简单的演示。 该产品基于.NET Framework 2.0开发。不需要任何外部的API。 每个数据库其实对应了一个文件夹,里面一般会有一个core.xml,是整个数据库的配置文件,记录好了所有的表格设置。 Blobs目录是用来存放二进制大对象的,例如图片。表中此类字段并不真正存图片,而是记录一个指针。该指针定位到Blobs里面来找图片。 ContentType目录是用来存放所有业务实体类型的程序集的。该数据库除了使用纯XML作为存取机制这个亮点之外,还有一个亮点就是完全面向对象。所有表的操作其实都是通过对象来完成的。 Tables里面包含了表格。
if (db != null)
{
db.Create
db.Create
Customer c = new Customer() { CompanyName = "Microsoft", CustomerID = "AAAAAA" };
where c1.CompanyName.ToLower().Contains("mic")//进行过滤
select c1;
{
Console.WriteLine(item);
}
o.OrderId = 1;
o.CustomerID = "AAAAAA";
o.OrderDate = DateTime.Now;
o.OrderItems = new List
o.OrderItems.AddRange(
new[]{
new OrderItem(){ OrderId=o.OrderId, ProductId=1, Quantity=20, UnitPrice=20},
new OrderItem(){ OrderId=o.OrderId, ProductId=1, Quantity=20, UnitPrice=20},
new OrderItem(){ OrderId=o.OrderId, ProductId=1, Quantity=20, UnitPrice=20},
new OrderItem(){ OrderId=o.OrderId, ProductId=1, Quantity=20, UnitPrice=20}
});
select o1;
{
Console.WriteLine(item);
}
}
}
}
}