97 lines
2.5 KiB
JavaScript
97 lines
2.5 KiB
JavaScript
|
|
// grid-db/src/index.js
|
|||
|
|
// Grid-DB · 自研逻辑格点数据库 · 主入口
|
|||
|
|
// PRJ-GDB-001 · Phase 0
|
|||
|
|
// 版权:国作登字-2026-A-00037559
|
|||
|
|
|
|||
|
|
'use strict';
|
|||
|
|
|
|||
|
|
const path = require('path');
|
|||
|
|
const fs = require('fs');
|
|||
|
|
|
|||
|
|
const GridCell = require('./core/grid-cell');
|
|||
|
|
const WAL = require('./storage/wal');
|
|||
|
|
const PageManager = require('./storage/page-manager');
|
|||
|
|
const EventLog = require('./events/event-log');
|
|||
|
|
const GridAPI = require('./api/grid-api');
|
|||
|
|
const BTree = require('./index/btree');
|
|||
|
|
const NamespaceManager = require('./core/namespace');
|
|||
|
|
const RangeScanner = require('./query/scan');
|
|||
|
|
const NearbyQuery = require('./query/nearby');
|
|||
|
|
const SecondaryIndex = require('./index/secondary-index');
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* Grid-DB 初始化器
|
|||
|
|
*
|
|||
|
|
* 本体论锚定 [ONT-PATCH-006]:
|
|||
|
|
* 笔需要纸来承载笔迹。
|
|||
|
|
* Grid-DB = 纸。纸上有格子(格点),每个格子是最小寻址单元。
|
|||
|
|
* 笔在格子里写字,格子记住了所有笔迹。
|
|||
|
|
* 纸不属于笔,纸属于写字的人。
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
/**
|
|||
|
|
* 打开或创建一个 Grid-DB 实例
|
|||
|
|
*
|
|||
|
|
* @param {object} [config]
|
|||
|
|
* @param {string} [config.dataDir] 数据目录(默认 grid-db/data)
|
|||
|
|
* @param {number} [config.pageSize] 页大小(默认 4096)
|
|||
|
|
* @returns {GridAPI}
|
|||
|
|
*/
|
|||
|
|
function open(config = {}) {
|
|||
|
|
const dataDir = config.dataDir || path.resolve(__dirname, '../data');
|
|||
|
|
|
|||
|
|
if (!fs.existsSync(dataDir)) {
|
|||
|
|
fs.mkdirSync(dataDir, { recursive: true });
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
return new GridAPI({
|
|||
|
|
dataDir,
|
|||
|
|
pageSize: config.pageSize || PageManager.DEFAULT_PAGE_SIZE
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// ── CLI 入口 ──
|
|||
|
|
|
|||
|
|
if (require.main === module) {
|
|||
|
|
const cmd = process.argv[2];
|
|||
|
|
|
|||
|
|
if (cmd === 'status') {
|
|||
|
|
const db = open();
|
|||
|
|
const status = db.stats();
|
|||
|
|
// eslint-disable-next-line no-console
|
|||
|
|
console.log(JSON.stringify(status, null, 2));
|
|||
|
|
db.close();
|
|||
|
|
} else {
|
|||
|
|
// eslint-disable-next-line no-console
|
|||
|
|
console.log([
|
|||
|
|
'🗄️ Grid-DB v0.1.0 · PRJ-GDB-001 · Phase 0',
|
|||
|
|
'',
|
|||
|
|
'本体论锚定:Grid-DB = 纸 · 格点 = 格子 · WAL = 草稿本',
|
|||
|
|
'',
|
|||
|
|
'用法:',
|
|||
|
|
' node grid-db/src/index.js status 查看数据库状态',
|
|||
|
|
'',
|
|||
|
|
'组件:',
|
|||
|
|
' GridAPI 统一 API 接口',
|
|||
|
|
' GridCell 格点数据模型',
|
|||
|
|
' WAL Write-Ahead Log',
|
|||
|
|
' PageManager 页管理器',
|
|||
|
|
' EventLog 事件溯源日志',
|
|||
|
|
].join('\n'));
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
module.exports = {
|
|||
|
|
open,
|
|||
|
|
GridAPI,
|
|||
|
|
GridCell,
|
|||
|
|
WAL,
|
|||
|
|
PageManager,
|
|||
|
|
EventLog,
|
|||
|
|
BTree,
|
|||
|
|
NamespaceManager,
|
|||
|
|
RangeScanner,
|
|||
|
|
NearbyQuery,
|
|||
|
|
SecondaryIndex
|
|||
|
|
};
|