Directory
eXtremeDB_rt/samples/opendb_hybridDescription
Demonstrates opening a hybrid database using a conventional memory device and a flash simulator.
Used API
mco_db_open_dev()Code snippet
/* Using flash simulator */ fsp.page_size = P_RAMFLASH_PAGE_SIZE; fsp.pages_per_block = P_RAMFLASH_PAGES_PER_BLOCK; fsp.n_blocks = P_RAMFLASH_NUM_BLOCKS; fsp.image_filename = g_flash_image_file_name; /* Setup database memory device as a plain conventional memory region */ dev[0].type = MCO_MEMORY_CONV; /* Set the device as a conventional memory device */ dev[0].assignment = MCO_MEMORY_ASSIGN_DATABASE; /* Assign the device as main database memory */ dev[0].size = P_DB_SIZE; /* Set the device size */ dev[0].dev.conv.ptr = (char*)malloc( dev[0].size ); /* Allocate memory and set device pointer */ dev[0].dev.conv.flags = 0; dev[1].type = MCO_MEMORY_CONV; /* Set the device as a conventional memory device */ dev[1].assignment = MCO_MEMORY_ASSIGN_CACHE; /* Assign the device as a cache buffer */ dev[1].size = P_DB_CACHE_SZ; /* Set the device size */ dev[1].dev.conv.ptr = (char*)malloc( dev[1].size); /* Allocate memory and set device pointer */ dev[1].dev.conv.flags = 0; dev[2].type = MCO_MEMORY_CONV; /* Set the device as a conventional memory device */ dev[2].assignment = MCO_MEMORY_ASSIGN_PERSISTENT; /* Assign the device as a persistent storage */ dev[2].size = mco_flashsim_memory_size(&fsp); /* Set the device size */ dev[2].dev.conv.ptr = (char*)malloc( dev[2].size); /* Allocate memory and set device pointer */ dev[2].dev.conv.flags = 0; /* Initialize and customize the database parameters */ mco_db_params_init ( &db_params ); /* Initialize the params with default values */ db_params.mode_mask = P_DB_MODE_MASK; db_params.mem_page_size = P_DB_MEM_PAGE_SZ; /* Set page size for the in-memory part */ db_params.disk_page_size = P_RAMFLASH_PAGE_SIZE; /* Set page size for the persistent part */ db_params.disk_max_database_size = P_DB_DISK_MAX_SIZE; db_params.db_max_connections = 16; /* Set total number of connections to the database */ db_params.meta_cache_lines = P_DB_META_CACHE_LINES; db_params.meta_cache_ways = P_DB_META_CACHE_WAYS; db_params.flash_gc_ratio = P_DB_FLASH_GC_RATIO; db_params.filesys_media_ptr = &fsp; /* Open a database on the device with given params */ rc = mco_db_open_dev(db_name, hybriddb_get_dictionary(), dev, sizeof(dev)/sizeof(dev[0]), &db_params ); if ( MCO_S_OK == rc ) { ...What to expect as an output
./target/bin/opendb_hybrid Initialize MCO runtime : Successful Sample 'opendb_hybrid' opens a hybrid database using conventional memory and the flash sim. eXtremeDB/rt runtime version 1.4, Fusion Debug Copyright (c) 2001-2024 McObject LLC. All Rights Reserved. Open database : Successful The opened database has the following characteristics: Evaluation runtime ______ : no Check-level _____________ : 3 Multithread support _____ : yes Fixedrec support ________ : yes Shared memory support ___ : no Statistics support ______ : yes Events support __________ : yes Save/Load support _______ : yes RTree index support _____ : yes Unicode support _________ : yes WChar support ___________ : no Persistent storage support: yes Direct pointers mode ____ : no Close database : Successful------ FLASH statistic (image file NULL) ------ FLASH reads : 0 0 Mb (0 Mb by page) FLASH progs : 0 0 Mb FLASH erases : 0 0 Mb FLASH copies : 0 0 Mb FLASH is_free : 0 FLASH is_bad : 0 FLASH mark_bad : 0 FLASH syncs : 0 FLASH time : 0 Bad block map : ................................................................................................................................ ... 0 bad blocks (0 not flagged). Erases min/max : 0 / 0