Compare commits

...

4 Commits

Author SHA1 Message Date
dd90616a66 update version 2021-12-05 22:52:47 +08:00
f49837dbfa change cmake requirement 2021-12-05 22:51:34 +08:00
516fb18c82 更改查询函数 2021-12-05 22:45:55 +08:00
801c9c510b add demo 2021-11-25 13:50:14 +08:00
9 changed files with 40 additions and 400014 deletions

View File

@ -1,7 +1,7 @@
include_directories(./src)
project (invodb)
cmake_minimum_required(VERSION 3.15)
cmake_minimum_required(VERSION 3.0)
set(CMAKE_CXX_STANDARD 17)

Binary file not shown.

View File

@ -3,7 +3,6 @@ const { execSync } = require("child_process")
execSync("rm -rf benchmark.invodb")
let time = 0
function clock() {
let last = time

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

27
docs/test.js Normal file
View File

@ -0,0 +1,27 @@
const invodb = require('..')
invodb.database('test.invodb')
let col = invodb.collection('blog')
if(!col.exist()) col.create();
col.insert({
"id": 7,
"title": "这是一篇文章",
"content": "这是文章内容",
"author": "YuhangQ",
"category": "数据库",
"original-url": null,
"tags": ["数据库", "C++", "数据结构"],
"parameters": {
"hidden": true,
"like": 25565,
},
"comment": [
{"username": "YuhangQ", "content": "文章写的真不错!"},
{"username": "TechCiel", "content": "能提供下打赏渠道吗?"},
]
})
let result = col.query({})
console.log(result)

View File

@ -17,7 +17,7 @@ function collection(collectionName) {
let json = JSON.stringify(object);
core.remove(collectionName, json);
}
function query(object) {
function find(object) {
if(!core.exists(collectionName)) throw `Collection ${collectionName} doesn't exists!`;
let json = JSON.stringify(object);
let res = [];
@ -26,12 +26,18 @@ function collection(collectionName) {
}
return res;
}
function findOne(object) {
let res = find(object);
if(res.length >= 1) return res[0];
return undefined;
}
return {
exist: exist,
create: create,
insert: insert,
remove: remove,
query: query,
find: find,
findOne: findOne,
update: insert
}
}

View File

@ -1,6 +1,6 @@
{
"name": "invodb",
"version": "1.0.23",
"version": "1.1.1",
"description": "a nosql json document database",
"main": "index.js",
"scripts": {

View File

@ -10,6 +10,7 @@ std::fstream PageManager::stream;
int PageManager::loadDatabase(const char *filename) {
Instance().stream.open(filename);
Instance().stream.seekp(0, std::ios::end);
if(!Instance().stream.is_open()) {
std::ofstream file(filename, std::fstream::out);
file.close();
@ -68,12 +69,13 @@ int PageManager::allocate() {
}
index = page.getIntStartFrom(4);
//printf("2allocate: %d\n", index);
page.setIntStartFrom(4, index + 1);
page.save();
// allocate block at the end
// stream.seekp(0, std::ios::end);
// stream.seekp(0, std::ios::end);
// index = stream.tellp() / 1024;
setPage(index, StoragePage(index));
return index;