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 { 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 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(); defer db_engine.deinit();
for (to_test) |users_count| {
{ {
const null_term_query_str = try std.fmt.bufPrintZ(&line_buffer, "DELETE User {{}}", .{}); 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); var parser = ziqlParser.init(&db_engine.file_engine, &db_engine.schema_engine);
@ -58,7 +57,7 @@ pub fn main() !void {
var writer = array.writer(); var writer = array.writer();
try writer.print( 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)], names[rng.uintAtMost(usize, names.len - 1)],
emails[rng.uintAtMost(usize, emails.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. \\run To run a query.
\\db Create or chose a database. \\db Create or chose a database.
\\schema Initialize the database schema. \\schema Initialize the database schema.
\\dump To export data in other format and backup.
\\quit Stop the CLI with memory safety. \\quit Stop the CLI with memory safety.
\\ \\
\\For more informations: https://mrbounty.github.io/ZipponDB/cli \\For more informations: https://mrbounty.github.io/ZipponDB/cli
@ -24,9 +25,9 @@ pub const HELP_MESSAGE = struct {
; ;
pub const db: []const u8 = pub const db: []const u8 =
\\Available commands: \\Available commands:
\\new Create a new database using a path to a sub folder. \\use Select or create a folder to use as database.
\\use Select an existing folder to use as database.
\\metrics Print some metrics of the current 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 \\For more informations: https://mrbounty.github.io/ZipponDB/cli
\\ \\
@ -34,7 +35,16 @@ pub const HELP_MESSAGE = struct {
pub const schema: []const u8 = pub const schema: []const u8 =
\\Available commands: \\Available commands:
\\describe Print the schema use by the currently database. \\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 \\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,
)