zoukankan      html  css  js  c++  java
  • C#开源数据库介绍

    1:前言

         今天给大家介绍一个内存数据库,纯C#写的。SharpHSql。这个数据库我的意见是:对于大量高并发的情况最好还是不要用这个数据库。可能有些朋友会问“那你还给大家介绍? ”。呵呵,别慌,我们虽然不能在开发环境运用这个框架,但是我们可以看看他是怎么一步一步实现了数据库的。(有些地方和Oracle的逻辑是一样的)。如果您有兴趣就继续往下看。

    2:提供的功能

         该框架完全支持sql92标准,如下语句都可以运行

         1:DROP TABLE IF EXIST xxx

         2:CREATE TABLE xxx (id int NOT NULL PRIMARY KEY, name longvarchar); 

         3:INSERT INTO xxx () values ()

         4:Update xxx set aa=bb where cc=1

         5:Select * from a,b,c where a.id=b.id and b.id=c.id order by a.id

         6:select count(a) ,sum(b) from xxx group by id

         7:Delete from xxx

         8:CALL ABS(-1); 

         9:SHOW DATABASES;

        10:SHOW TABLES;

        11:SHOW ALIAS;

        12:SHOW PARAMETERS

        13:SHOW COLUMNS

        14:支持Sql语句和存储过程

        15:支持事务

        运行该框架会产生4中文件

        1:.cfg文件,用于存放一些数据库的信息和其它文件的位置 

        2:.log文件,用于存放所有的DDL SQL 

        3:.data文件,用于存放Cache的二进制序列化流 

        4:.backup文件,用于存放.data一样的数据 

    3:大概的框架逻辑

        看如下的序列图

     

       简单介绍一下重要的类

       Database:一个数据库,多个数据库存储到DatabaseController 中的HashTable中。

       Table:表,多个表名存储到 Database的HashTable中。表中含有以ArrayList存储的Column(列)和Index(索引),Cache(数据)

       Column:一列的描述,包含列名称,列值类型,列值是否为空什么的

       Row:行,提供众多有关行的方法但不存储数据

       Select:查询,提供众多查询的方法

       Access:权限,所有User以ArrayList形式存储到这里

       Cache:数据或是缓存对象,完成内存数据与文件数据的转换

       Index:索引,一棵AVL树,当有row更新时,切索引存在,则需要更新这棵树 

       Transaction:事务,

    4:后记

       该框架在启动的时候是把所有的数据加载到内存中去,并且对于数据文件时独占访问的。这样就导致他的应用环境最适合与手机等移动设备。

       最后给大家留个思考的问题

       1:针对各种操作的的执行序列是什么,为什么这样。其他商业数据库的执行序列又是什么那?(图中已经提供了) 

  • 相关阅读:
    Optimal Logging
    表单设计平台主要功能截图介绍
    表单设计器在线测试地址
    React-Native 之控件布局
    Week,Month, Year 日期区间辅助类
    WPF 文本框添加水印效果
    WPF 自定义窗口
    正则表达式总结
    基于Extjs的web表单设计器 第七节——取数公式设计之取数公式的使用
    基于Extjs的web表单设计器 第七节——取数公式设计之取数公式定义
  • 原文地址:https://www.cnblogs.com/tommyli/p/1605930.html
Copyright © 2011-2022 走看看