 Good evening sir. I am Sukhdev. My MTP topic is enhancement of open source monitoring tool for a small footprint database. This is a table of contents and an introduction part. I will discuss motivation behind this project and introduction of a small footprint database introduction of monitoring tool. Then we will discuss literature survey on a small footprint database. In this survey I studied Berkeley DB, Perch DB and SQL light DB and we will also discuss the comparison among Berkeley DB, Perch DB and SQL light. Now after that we will discuss general mode in SQL light and I studied literature survey on the monitoring tool. In this we will discuss IO zone, Android bench and mobile bench monitoring tool and after that we will discuss problem statement and proposal. At last we will discuss conclusion and the future work. What is motivation behind this project? Nowadays mobile device is not only used for basic purpose but also many other applications. People due to increasing the number of purpose user want to install many applications in mobile device but mobile device has some limitation that is a small memory and battery backup. So there is challenge to manage the many applications in mobile device. So there is a need to measure the performance of mobile device as well as enhance the performance of mobile device. So what I did? I studied many small footprint database as well as monitoring tool for mobile device. What is a small footprint database? It is also a small footprint database also called lightweight database and embedded database. It is specially designed for mobile device because mobile device requires such type of database that takes small memory and low power consumption. So Berkeley DB and SQL light is a small footprint database that we will discuss later. What is monitoring tool? Monitor tool measure the performance of device but in this context I studied only mobile device, mobile benchmark tool that is IO zone and andro bench movable I will discuss later. Literature survey on a small footprint database. First I studied Berkeley DB. Berkeley DB is open source embedded database that is written in still language. If you want to store the data then we have required to store the data only key and value techniques. Means Berkeley DB used to store the data in key and value techniques. For example if you want to store the username and password then username is a key and password SA value. This is application specific database. This is not user specific database because we cannot use edge event. It does not support the rdms user. It has no schema so you cannot we cannot use edge event. We have to forcefully use a key and value techniques. Access method of Berkeley DB is Berkeley DB B tree has mentioned fixed and variable length record. We can access data using this technique. Fixed and variable length record means like a text file. If in text file has many lines each line has a line number. So in this type if we want to store the fixed and variable length record then each variable each record has a record number. Using this record number we can access those records. It has limitation. It does not support rdms. It has no schema so we and it is stored only record key and value techniques. So this is not a user specific but database. This is limitation. Next database I studied Perch DB. Perch DB is an object oriented embedded database. It is also application specific database because if we want to design the app for restaurant searching then we can use the Perch DB. For example if we want to search the restaurant location we can make the object of the restaurant and store various feature of restaurant. So Perch DB also is specific of the specific. We cannot compare the different type of object. So this is not good for mobile device means this is not user specific. So this is a limitation of Perch DB. At last I studied SQLite DB. SQLite DB supports rdms feature. It has a schema but does not support all the feature of rdms but some extra feature that are not present in rdms that is 0 configuration self contained serverless database. SQLite is a serverless 0 content and 0 configuration database because SQLite does not support the server means it has it do not have does not have server so not required to configure. Self content means it does not require the external library but some system library are required that is mem copy mem compare and malloc malloc creates in the memory through malloc it is required. It has a schema so even can even can define even can create the table as you want. So it is good for mobile device. So if you if you want to yeah we found SQLite is better than Perch DB and Berkeley DB. So we have required to if you want to install enhance the performance of SQLite. So we have required to understand the architecture of SQLite. This is a architecture of SQLite. First module interface interface take the SQL command from the user level and give up to the SQL command processor. What does SQL command processor it break the SQL command into token and parse and find the meaning of the that SQL command and give up to virtual machine. Virtual machine link the system using the system library and give the virtual code to the bit tree module and bit tree handle the data to store the physical layer. This is a architecture of SQLite. Then comparison among the Berkeley DB that I have I already discussed SQLite is a native database that has a schema. So user user can use even can design as you want as he want Berkeley DB embedded database but it is stored the data by key and value technique. It does not support the secondary secondary key. So we have to use only the primary key. So it has limitation. First if you object oriented this is application specific. So we cannot use for overall implement overall use of mobile device. Then I studied general mode of SQLite. If you want to enhance the performance of SQLite then we need to know how write and update operation perform in SQLite. There are three method. First one rollback general. Second one write ahead lock wall mode and third one off mode rollback general. Rollback general generally means if you want to update the information from database then first SQLite SQLite create a journal file and copy the original data into journal file then directly update the update data into database. If if successfully commit happen then no need to recover. So after successfully commit roll SQLite delete the delete the roll journal file. If roll if filer occur then we need to recover the original data from the journal file. This is this is a disk and this is OS wafer usually if if you want to update the any data then first we have required to lock shear lock in OS wafer because any updation first we have required to read the data. Second one if data is not available in OS wafer then first copy the data from disk to OS wafer then copy to the OS space user space. Then if you want to update the data then require the reserve lock after that we create the rollback journal file in OS wafer as well as disk. First copy user first copy the data from user space to journal file in OS wafer then transfer the data to the journal file. This is a journal file in disk then we update the those data as we want in OS wafer after that we update the data in disk. If if transition successfully commit then we delete the journal file this file. If successfully not commit then we need to recover the data from journal to the disk. Second one is wall right head lock this is a like rollback journal but it is different means we need to update the data in journal file first after this if successfully commit then we update the original data from journal file to original space. This method provide some concurrency means while committing the data in journal file no need to means another application can use the data from disk. So reader does not block writer and writer does not block to reader this is a advantage of wall and this this advantage means if processor using database means we cannot use you cannot do the transition from the other host machine. And second one is if we have many write many read and seldom write then it it is provide means it does not fast means it it is slow as well as compared to rollback journal. Then third one is off mode if you want to only speed does not want to means reliable data for example if you want to play the video or playing the game so no need to reliable data only needs speed. So we can off the mode no no need of rollback journal or wall side of page and side of page not implemented in SQLite and side of page in technique we need to create two page one is side of page two ways one side of image and second was new page what it does first update the data in new page after successful commit only page page mapper point to new page and remove the address of the old page now after remove address of old page garbage collector collect the data collect the old page so need no need to erase immediately this is a feature of side of page we will discuss what is problem we will discuss later what is problem on SQLite you know why side of page is better then rollback and wall that I studied I studied literature survey on monitoring tool first one is IO zone and second one end of bench and third one is movie bench IO first I would like to discuss what is the IO input output characteristic of the any trans transaction first one IO type means read or write and second IO size means size matter means input output can be different size especially locality means sequence or random access temporal locality means we store hot or cold hot means we frequently access the data and cold means we not frequently access the data so IO zone IO zone is not a open source monitoring tool it is a basically measure the performance of file system means file system has a read operation write operation recently read and recently write operation so IO zone used to measure the throughput of read write and recently read write operation it has some limitation it does not include the F synchronous operation but SQLite falsely used to flush the data using a F synchronous operation so it cannot be used to measure the performance of SQLite and second one is it cannot measure the performance of android device because IO zone required to super user access in user level but android device does not has any facility to super user access the super user in user level so this is a limitation of IO zone so that we cannot measure the performance in android device as well as SQLite then second one I studied android bench android bench is a storage bench parameter tool that is not open source but it is especially designed for the android device it measures the sequential random operation correctly but it does not include the F synchronous operation so it measures the performance approximately of a SQLite but not a efficient way this is a structure of android bench this is target partition we can change as we want select for clicking this button and this is file size means for default setting read size read buffer is 32 MB and write a 2 MB and we can change this buffer size and default transaction set to 300 we can change as we want and this is limitation it does not include the F synchronous call and do not allow the synchronous direct synchronous like that so we need to enhance those feature then third I studied movi bench movi one is a open source monitoring tool it is its combined it is it is combined feature of IO zone and movi android bench means is it measures the correct performance of SQLite in android device I will discuss what is possible enhancement in movi bench this is a measure in measure tab we can click the all button in all button measure the overall performance of android device and if you want to measure the only SQLite throughput then we can click this SQLite button then it will measure the insert update and write transaction of this this is file input output in this button we can measure the sequence layer and random write operation and we can customize the all this is a measure tab and second one is setting tab setting tab we can change the partition means it has external or even to sd measure the sd perform sd card performance and like that we can change the thread number 1 to 100 and we can select a sequence rates and random write sequence rate like that get insert update this is these are the facility of movi bench then problem problem statement and proposal we know flash memory has two critical drawback first one is if you want to update the segment update the data in flash memory then first require to erase the those data and then write new data in SQLite rollback and wall not overcome of this problem means in rollback general what what it does first erase the original data and write it back in that space that is a problem of in rollback general if we have any other technique that not required to erase the data immediately so we can enhance the performance of SQLite so we studied side of aging side of aging does not require to erase the data immediately but garbage garbage collector erase the data after after commit commit transition so we can use side of aging in the SQL SQLite so that it can it can enhance the performance of SQLite so my proposal is side of aging is better solution in SQLite so we can implement side of aging SQLite but problem is that how we can measure the side of side of aging performance so that we can compare the is side of aging is better than wall rollback general or not so problem movie bench only measure the performance of rollback general wall and off mode of in SQLite but it does not has feature to measure the performance of side of aging so we need to enhance the source code of movie bench so that it can measure the performance of side of aging then we will we can compare the performance of side of aging and wall or rollback general my proposal is we need to change the source code of movie bench we we can add the module that will measure the performance of side of aging conclusion part in in small foot database database literacy survey we found SQLite give the better performance means overall good among the Berkeley DB first DB and SQLite after that we studied the rollback is general wall we found rollback general and wall does not overcome the problem of place memory so we propose that side of aging is better than the rollback general and wall so we we can implement the side of aging SQLite this is a possible optimization on SQLite then on literature survey of monitoring tool we found movie bench is better among the IO zone and endow bench but movie bench does not provide the measure the performance of side of aging so we need to enhance the source code since movie bench is open source so we can change the source code as you want so we need to add we need to change the source code of movie bench so that it can measure the performance of side of aging after that we will compare the performance of side of aging and the wall feature work implement I want to implement M side of aging in SQLite and I want to also change the source code of movie bench so that it can measure the performance of side of aging thank you