/NoSQLDatabase

In this project, we explored how a NoSQL database can be constructed and used. (1) Implemented in C++ using the facilities of the standard C++ Libraries and Visual Studio 2015. (2)Implemented a template class providing key/value in-memory databases where each value consists of: Metadata: An item name string A category name string A text description of the item A time-date string recording the date and time the value was written to the database. a finite number (possibly zero) of child relationships with other values. Each element of the child relationships collection is the key of another item in the database. Any item holding a key in this collection is the parent of the element accessed by the key. An instance of the template type1. This might be a string, a container of a set of values of the same type, or some other collection of data captured in some, perhaps custom, data structure. (3) Support for addition and deletion of key/value pairs. (3) Support for editing of values including the addition and/or deletion of relationships, editing text metadata, and replacing an existing value's instance with a new instance. Editing of keys is forbidden. Support to, persist database contents to an XML file2. It is intended that this process be reversible, e.g., the database can be restored or augmented3 from an existing XML file as well as write its contents out to an XML file. Shall accept a positive time interval or number of writes after which the database contents are persisted. This scheduled "save" process shall continue until cancelled. By default, timed saving is turned off. (4) Support queries for: The value of a specified key. The children of a specified key. The set of all keys matching a specified pattern which defaults to all keys. All keys that contain a specified string in their item name All keys that contain a specified string in their category name All keys that contain a specified string in their template data section when that makes sense. All keys that contain values written within a specified time-date interval. If only one end of the interval is provided shall take the present as the other end of the interval. Each query accepts a list of keys4 and returns a collection of keys from the list that match the query. (2) Support for making the same kinds of queries, cited in the requirement above, on the set of keys returned by an earlier query. (1) Support for forming a union of the keys from two or more earlier queries. (2) Submit with contents, in the form of an XML file, that describe your project's package structure and dependency relationships that can be loaded when your project is graded. (2) A Test executive that clearly demonstrates you've met all the functional requirements above. The XML file you supply in the previous requirement will be used as part of that demonstration. (5) Support regular expression matching for the query types described above.

Primary LanguageC++

Watchers