Database management tool
A method of managing data using a three-tier database to support fast searching and cell-wise access policy management. The method comprises determining access permissions to a three-tier database associated with a user interface by a client application executing on a computer system, wherein the access permissions are applied on a per data cell basis and on a per record basis; presenting records of a selected table of the three-tier database in accordance with the access permissions associated with the user interface by the client application to the user application; receiving an edit by the client application from the user interface; writing the edit to the three-tier database by the client application in accordance with the access permissions; and propagating by the client application change notifications indicating the edit to a plurality of client instances associated with different user interfaces.
1. A management tool for managing a three-tier database to support fast searching and cell-wise access policy management, comprising:
a first-tier database comprising a plurality of tables, wherein each record of the plurality of tables of the first-tier database comprises a first single data cell, a first cell identity, a first key, and a first time and date;
a second-tier database comprising a same number of tables as the first-tier database, wherein each record of the plurality of tables of the second-tier database comprises a second single data cell, a second cell identity, and a second key, wherein a data cell of each record of the second-tier database stores a value of a corresponding data cell of a most current record having the same key and cell identity in the first-tier database;
a third-tier database comprising the same number of tables as the first-tier database, wherein each record of the plurality of tables of the third-tier database comprises a complete record comprising a third key and a plurality of data cells, wherein each data cell of the third-tier database stores a corresponding value of the data cell of a corresponding column in the second-tier database;
a cache that is implemented as a flat text file, wherein the cache is rebuilt occasionally based on a state of the third-tier database existing at the time of initiation of the rebuilding and the cache stores data values stored in the data cells of the third-tier database at the time the cache is rebuilt;
a processor;
a non-transitory memory; and
a client application stored in the non-transitory memory that, when executed by the processor:
launches a client instance associated with a user,
reads a copy of one of the tables out of the cache,
determines an access policy associated with the user associated with the client instance, where the access policy defines records and cells that the user is permitted to access and other records and other cells that the user is not permitted to access,
in accordance with the access policy associated with the user, presents at least some of the records and at least some of the cells to the user,
in accordance with the access policy associated with the user, receives an edit of at least one record and at least one cell from the user,
propagates the edit to a table of the first-tier database that corresponds to the table copied out of the cache,
propagates the edit to a table of the second-tier database that corresponds to the table copied out of the cache, and
propagates the edit to a table of the third-tier database that corresponds to the table copied out of the cache.
2. The tool of claim 1 , wherein the cache is implemented in a scalable cloud storage environment.
3. The tool of claim 1 , wherein access policies are stored in a configuration artifact created by an administrator for the one of the tables of the three-tier database and the client application reads the access policies associated with the one of the tables from the configuration artifact.
4. The tool of claim 3 , wherein the access policies identify access on a per data cell basis and on a per record of the third-tier database basis.
5. The tool of claim 3 , wherein the access policies are defined for each of a plurality of different user roles.
6. The tool of claim 5 , wherein determining an access policy associated with the user comprises determining a user role associated to the user.
7. The tool of claim 1 , wherein the client application propagates the edit in the form of a delta to a delta storage list and presents the delta to the user.
8. A method of managing data using a three-tier database to support fast searching and cell-wise access policy management, comprising:
launching a user interface by a client application executing on a computer system;
presenting a list of a plurality of tables stored in the three-tier database by the client application to the user interface;
receiving a selection of one of the plurality of tables by the client application from the user interface;
looking up records of the selected table by the client application in a flat text file stored in a cache;
determining access permissions associated with the user interface by the client application, wherein the access permissions are applied on a per data cell basis and on a per record basis;
presenting the records of the selected table in accordance with the access permissions associated with the user interface by the client application to the user application;
receiving an edit by the client application from the user interface;
writing the edit to the three-tier database by the client application in accordance with the access permissions;
propagating by the client application change notifications indicating the edit to a plurality of client instances associated with different user interfaces;
determining that changes to the three-tier database have accumulated to above a predefined threshold; and
in response to the changes to the three-tier database exceeding the predefined threshold, updating the cache by the client application based on the changes.
9. The method of claim 8 , further comprising receiving a search request by the client application from the user interface, searching a second-tier database of the three-tier database by the client application, and presenting search results by the client application via the user interface.
10. The method of claim 8 , further comprising receiving a search request by the client application from the user interface that specifies a historical search, searching a first-tier database of the three-tier database by the client application, wherein the first-tier database comprises history information in its records, and presenting search results with edit history information by the client application via the user interface.
11. The method of claim 8 , further comprising receiving a search request by the client application from the user interface that requests file attached to a record in the three-tier database, retrieving a list of one or more links to files associated with the record by the client application from the three-tier database, and presenting the one or more links to files associated with the record by the client application via the user interface, whereby a user of the user interface is enabled to access the one or more files associated with the record using the one or more links to files.
12. The method of claim 8 , further comprising receiving a comma separated variable (CSV) file upload request by the client application from the user interface, reading the CSV file by the client application, and modifying records by the client application in the three-tier database.
13. The method of claim 12 , further comprising determining by the client application that the CSV file upload request conflicts with an access permission associated to the user that initiates the upload request, presenting a notification by the client application via the user interface that a column of data included in the CSV file will not be written into the three-tier database because the user does not have access permission to this column of data and presenting an option to the user to (a) continue the CSV file upload knowing the restricted column of data will not be written into the three-tier database and (b) cancel the CSV file upload.
14. The method of claim 8 , wherein the cache is stored as a JSON file.
15. A method of managing data using a three-tier database to support fast searching and cell-wise access policy management, comprising:
determining access permissions associated with a user interface by a client application executing on a computer system, wherein the access permissions are applied on a per data cell basis and on a per record basis;
receiving an edit of the three-tier database by the client application from the user interface;
writing the edit to the three-tier database by the client application in accordance with the access permissions, wherein the three-tier database comprises a first-tier database comprising a plurality of tables, wherein each record of the plurality of tables in the first-tier database comprises a single data cell, a cell identity, a key, and a time and date, a second-tier database comprising a same number of tables as the first-tier database, wherein each record of the plurality of tables of the second-tier database comprises a second single data cell, a second cell identity, and a second key, wherein a data cell of each record of the second-tier database stores a value of a corresponding data cell of a most current record having the same key and cell identity in the first-tier database, and a third-tier database, comprising the same number of tables as the first-tier database, wherein each record of the plurality of tables of the third-tier database comprises a third key and a plurality of data cells, wherein each data cell of the third-tier database stores a corresponding value of a data cell of a corresponding column in the second-tier database;
receiving a first search request by the client application from the user interface, wherein the first search request stipulates a historical type of search;
in response to the first search request, initiating by the client application a first search in the first-tier database;
returning results of the first search by the client application to the user interface;
receiving a second search request by the client application from the user interface, wherein the second search request does not stipulate a historical type of search;
in response to the second search request, initiating by the client application a second search in the second-tier database; and
returning results of the second search by the client application to the user interface.
16. The method of claim 15 , wherein writing the edit to the three-tier database comprises writing the received edit into the three-tier database in time-based order with other edits received by the client application.
17. The method of claim 15 , further comprising writing the edit to a production database that is separate from the three-tier database.
18. The method of claim 15 , further comprising sending the edit by the client application to a plurality of other logged-in user interfaces.
19. The method of claim 15 , wherein the three-tier database is implemented in a scalable cloud storage environment.
20. The method of claim 15 , wherein writing the edit in accordance with the access permissions comprises determining a role type of the user interface and determining if this role type has access permission to complete the received edit based on one or more data cells effected by the edit request.