Add config and schema for benchmark

This commit is contained in:
Adrien Bouvais 2025-01-14 22:32:31 +01:00
parent 173b302976
commit 672d79cbea
4 changed files with 193 additions and 92 deletions

View File

@ -29,13 +29,12 @@ pub fn myLog(
}
pub fn main() !void {
const to_test = [_]usize{500_000};
{
const to_test = [_]usize{ 500, 50_000, 5_000_000 };
var line_buffer: [1024 * 1024]u8 = undefined;
var db_engine = DBEngine.init("benchmark", "schema/example");
for (to_test) |users_count| {
var db_engine = DBEngine.init("benchmarkDB", "schema/benchmark");
defer db_engine.deinit();
for (to_test) |users_count| {
{
const null_term_query_str = try std.fmt.bufPrintZ(&line_buffer, "DELETE User {{}}", .{});
var parser = ziqlParser.init(&db_engine.file_engine, &db_engine.schema_engine);
@ -58,7 +57,7 @@ pub fn main() !void {
var writer = array.writer();
try writer.print(
"ADD User (name = '{s}', email='{s}', age={d}, scores=[ {d} ], best_friend=none, friends=none, bday={s}, a_time={s}, last_order={s})",
"ADD User (name = '{s}', email='{s}')",
.{
names[rng.uintAtMost(usize, names.len - 1)],
emails[rng.uintAtMost(usize, emails.len - 1)],
@ -146,4 +145,3 @@ pub fn main() !void {
}
}
}
}

View File

@ -17,6 +17,7 @@ pub const HELP_MESSAGE = struct {
\\run To run a query.
\\db Create or chose a database.
\\schema Initialize the database schema.
\\dump To export data in other format and backup.
\\quit Stop the CLI with memory safety.
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
@ -24,9 +25,9 @@ pub const HELP_MESSAGE = struct {
;
pub const db: []const u8 =
\\Available commands:
\\new Create a new database using a path to a sub folder.
\\use Select an existing folder to use as database.
\\use Select or create a folder to use as database.
\\metrics Print some metrics of the current database.
\\state Print the current db state (Ok, MissingSchemaEngine, MissingFileEngine).
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
@ -34,7 +35,16 @@ pub const HELP_MESSAGE = struct {
pub const schema: []const u8 =
\\Available commands:
\\describe Print the schema use by the currently database.
\\init Take the path to a schema file and initialize the database.
\\use Take the path to a schema file and initialize the database.
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
;
pub const dump: []const u8 =
\\Available commands:
\\csv Export all database in a csv format.
\\json Export all database in a json format. (Not implemented)
\\zid Export all database in a zid format. (Not implemented)
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\

73
lib/config_benchmark.zig Normal file
View File

@ -0,0 +1,73 @@
pub const BUFFER_SIZE = 1024 * 10; // Used a bit everywhere. The size for the schema for example. 10kB
pub const MAX_FILE_SIZE = 1024 * 1024; // 1MB
pub const CPU_CORE = 16;
// Debug
pub const PRINT_STATE = false;
pub const DONT_SEND = true;
pub const DONT_SEND_ERROR = false;
pub const RESET_LOG_AT_RESTART = false; // If true, will reset the log file at the start of the db, otherwise just keep adding to it
// Help message
pub const HELP_MESSAGE = struct {
pub const main: []const u8 =
\\Welcome to ZipponDB v0.2!
\\
\\Available commands:
\\run To run a query.
\\db Create or chose a database.
\\schema Initialize the database schema.
\\dump To export data in other format and backup.
\\quit Stop the CLI with memory safety.
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
;
pub const db: []const u8 =
\\Available commands:
\\use Select or create a folder to use as database.
\\metrics Print some metrics of the current database.
\\state Print the current db state (Ok, MissingSchemaEngine, MissingFileEngine).
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
;
pub const schema: []const u8 =
\\Available commands:
\\describe Print the schema use by the currently database.
\\use Take the path to a schema file and initialize the database.
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
;
pub const dump: []const u8 =
\\Available commands:
\\csv Export all database in a csv format.
\\json Export all database in a json format. (Not implemented)
\\zid Export all database in a zid format. (Not implemented)
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
;
pub const no_engine: []const u8 =
\\To start using ZipponDB you need to create a new database.
\\This is a directory/folder that will be use to store data, logs, backup, ect.
\\To create one use 'db new path/to/directory'. E.g. 'db new data'.
\\Or use an existing one with 'db use'.
\\
\\You can also set the environment variable ZIPPONDB_PATH to the desire path.
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\
;
pub const no_schema: []const u8 =
\\A database was found here `{s}` but no schema find inside.
\\To start a database, you need to attach it a schema using a schema file.
\\By using 'schema init path/to/schema'. For more informations on how to create a schema: TODO add link
\\
\\You can also set the environment variable ZIPPONDB_SCHEMA to the path to a schema file.
\\
\\For more informations: https://mrbounty.github.io/ZipponDB/Schema
\\
;
};

20
schema/benchmark Normal file
View File

@ -0,0 +1,20 @@
User (
name: str,
email: str,
orders: []Order,
)
Order (
items: []Item,
at: datetime,
)
Item (
name: str,
price: float,
category: Category,
)
Category (
name: str,
)