Database creation

Database can be created, opened or deleted before or after environment startup. To create a database, new database name should be set to db configuration namespace. If no database exists, it will be created automatically.

Sophia v2.2 does not save database scheme information.

By default databases are created in sophia.path/database_name folder. It is possible to set custom folder per database using db.database_name.path It might be useful to separate databases on different disk drives.

Create or open database before environment start:

void *env = sp_env();
sp_setstring(env, "sophia.path", "./storage", 0);
sp_setstring(env, "db", "test", 0);
sp_open(env);
void *db = sp_getobject(env, "db.test");
sp_destroy(env);

Database schema

Sophia stores data in rows. Each row has strictly typed fields.

Following field types are supported: string, u64, u64_rev, u32, u32_rev, u16, u16_rev, u8, u8_rev.

Atleast one field must be specified as a key(n). Where n is a key order position. Several fields can be selected as an index primary key.

Example:

void *env = sp_env();
sp_setstring(env, "db", "test", 0);
sp_setstring(env, "db.test.scheme", "id", 0);
sp_setstring(env, "db.test.scheme.id", "u32,key(0)", 0);
sp_setstring(env, "db.test.scheme", "data", 0);
sp_setstring(env, "db.test.scheme.data", "string", 0);

If scheme is not defined, following scheme will be automatically used:

void *env = sp_env();
sp_setstring(env, "db", "test", 0);
sp_setstring(env, "db.test.scheme", "key", 0);
sp_setstring(env, "db.test.scheme.key", "string,key(0)", 0);
sp_setstring(env, "db.test.scheme", "value", 0);
sp_setstring(env, "db.test.scheme.value", "string, 0);

results matching ""

    No results matching ""