Skip to content

caiji-programer/node-db

Repository files navigation

关于项目

用 Typescript + node 实现一个简单的数据库。

几个问题

绝大多数流行数据库都是用c/c++写的,为什么用 Typescript ?

js/typescript最熟练,性能方面,对于一个普通的应用足够了。

实现了哪些功能?

  1. 查询管理器:
    sql解析器,预处理(语义检查),逻辑计划,物理计划,计划执行,关系代数的基本运算;
    目前支持大部分的DML,DDL还不支持,不过可以在启动前通过配置来实现创建数据表等操作;
  2. 存储管理器:
    文件管理,缓冲区;
  3. 索引:
    主索引使用b+树文件,辅助索引目前还不支持;
  4. 事务管理器: 目前还在写。

SQL语句类型支持

SQL语句类型 是否支持
SELECT语句
INSERT语句
UPDATE语句
DELETE语句
WHERE子句
JOIN子句
笛卡尔积
LIKE
ORDER

关于DDL,比如创建数据库,选择数据库,创建数据表等语句可以在启动前通过修改schema.json文件来实现。

安装依赖

  npm install

如何开始

node-db支持两种使用方式

  1. 命令行
  npm run start

启动后可以直接在命令行里输入SQL:

  1. 使用客户端 + 服务器

启动server:

  npm run server

或者开启debug模式:

  npm run server:debug

此外,还需要安装并启动另外一个项目node-db-client

安装

  npm install

运行

  npm run serve

打开:http://localhost:8080/#/home

详情页可以查看表信息以及查看表数据

切换至查询页可以输入SQL执行

或者查看物理计划

目录说明

参考资料

  1. 数据库系统概念
  2. 数据库系统实现
  3. MySQL技术内幕:InnoDB存储引擎

Test

# unit tests
$ npm run test

About

simple database typescript

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published