Keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies

Embodiments relate to keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies. A request including information is received, the request being intended for processing on a local database. A model is used to process the information of the request. Responsive to the model determining that information relates to sensitive data, the request is transferred to a remote database associated with a geography meeting a requirement for the sensitive data in order to execute the request.

BACKGROUND

The present invention generally relates to computer systems, and more specifically, to computer-implemented methods, computer systems, and computer program products configured and arranged for keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies.

In computing, a database is an organized collection of data stored and accessed electronically from a computer system. Access to this data is usually provided by a database management system (DBMS) including an integrated set of computer software that allows users to interact with one or more databases and provides access to all of the data contained in the database, although restrictions may exist that limit access to particular data. The DBMS provides various functions that allow entry, storage, and retrieval of large quantities of information and provides ways to manage how that information is organized.

For many organizations, meeting data and database regulatory compliance and security requirements is a top priority. Failing to meet regulatory requirements can make result in substantial fines and penalties. Similarly, a security breach can cause further issues regarding the services associated with the database. The challenge in maintaining database compliance and security evolves with new threats and new regulations. At the heart of many of these requirements is sensitive data that is stored in an enterprise database system.

SUMMARY

Embodiments of the present invention are directed to computer-implemented methods for keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies. A non-limiting example computer-implemented method includes receiving a request comprising information, the request being intended for processing on a local database, and using a model to process the information of the request. Also, the computer-implemented method includes responsive to the model determining that information relates to sensitive data, transferring the request to a remote database associated with a geography meeting a requirement for the sensitive data in order to execute the request.

DETAILED DESCRIPTION

One or more embodiments of the present invention provide computer-implemented methods, computer systems, and computer program products arranged and configured for keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies. One or more embodiments of the invention are configured to extract geographical information from pieces of sensitive data entered onto a database and then decide where to store that data according to privacy law regulations. If the resolved coordinates associated with the sensitive data map to a geography other than the one covered by the local regulation, the data is forwarded for storage on a foreign server that contemplates and/or complies with the regulation in charge of that geography. By using a machine learning model to process query rows, even subtle characteristics can be captured and used to determine the appropriate server on which to store this data according to one or more embodiments of the invention.

Privacy law regulations are becoming popular around the world. For that reason, it has become mandatory that companies abide by the new regulations to avoid penalties and give clarity to customers that their data is being properly handled. One concern is that some regulations require data processors to store data under certain geographies, for example, to store private information from citizens of the countries in the geography where that regulation applies.

Software applications are configured to maintain database compliance with data protection regulations by sensing the presence of sensitive data intended for one or more (database) servers and transferring the data to one or more servers in compliant geographies. Moreover, one or more embodiments of the invention resolve the problem with database storage on computer systems which is a technical solution to a technical problem, which could not be performed in the human mind with or without the assistance of pen/paper. Further, one or more embodiments could help avoid and/or prevent a malicious computer attack or intrusion, a computer security threat, a serious malfunction of software/hardware, a violation of data privacy laws and protections, etc., thereby improving the functioning of a computer system itself as well as multiple computer systems interconnected in a cloud environment, thereby preventing further exposure to the potential problem.

As shown inFIG.1, the computer system100has one or more central processing units (CPU(s))101a,101b,101c, etc., (collectively or generically referred to as processor(s)101). The processors101can be a single-core processor, multi-core processor, computing cluster, or any number of other configurations. The processors101, also referred to as processing circuits, are coupled via a system bus102to a system memory103and various other components. The system memory103can include a read only memory (ROM)104and a random access memory (RAM)105. The ROM104is coupled to the system bus102and may include a basic input/output system (BIOS) or its successors like Unified Extensible Firmware Interface (UEFI), which controls certain basic functions of the computer system100. The RAM is read-write memory coupled to the system bus102for use by the processors101. The system memory103provides temporary memory space for operations of said instructions during operation. The system memory103can include random access memory (RAM), read only memory, flash memory, or any other suitable memory systems.

The computer system100comprises an input/output (I/O) adapter106and a communications adapter107coupled to the system bus102. The I/O adapter106may be a small computer system interface (SCSI) adapter that communicates with a hard disk108and/or any other similar component. The I/O adapter106and the hard disk108are collectively referred to herein as a mass storage110.

Software111for execution on the computer system100may be stored in the mass storage110. The mass storage110is an example of a tangible storage medium readable by the processors101, where the software111is stored as instructions for execution by the processors101to cause the computer system100to operate, such as is described herein below with respect to the various Figures. Examples of computer program product and the execution of such instruction is discussed herein in more detail. The communications adapter107interconnects the system bus102with a network112, which may be an outside network, enabling the computer system100to communicate with other such systems. In one embodiment, a portion of the system memory103and the mass storage110collectively store an operating system, which may be any appropriate operating system to coordinate the functions of the various components shown inFIG.1.

Additional input/output devices are shown as connected to the system bus102via a display adapter115and an interface adapter116. In one embodiment, the adapters106,107,115, and116may be connected to one or more I/O buses that are connected to the system bus102via an intermediate bus bridge (not shown). A display119(e.g., a screen or a display monitor) is connected to the system bus102by the display adapter115, which may include a graphics controller to improve the performance of graphics intensive applications and a video controller. A keyboard121, a mouse122, a speaker123, a camera124, etc., can be interconnected to the system bus102via the interface adapter116, which may include, for example, a Super I/O chip integrating multiple device adapters into a single integrated circuit. Suitable I/O buses for connecting peripheral devices such as hard disk controllers, network adapters, and graphics adapters typically include common protocols, such as the Peripheral Component Interconnect (PCI) and the Peripheral Component Interconnect Express (PCIe). Thus, as configured inFIG.1, the computer system100includes processing capability in the form of the processors101, and, storage capability including the system memory103and the mass storage110, input means such as the keyboard121, camera124, and the mouse122, and output capability including the speaker123and the display119.

In some embodiments, the communications adapter107can transmit data using any suitable interface or protocol, such as the internet small computer system interface, among others. The network112may be a cellular network, a radio network, a wide area network (WAN), a local area network (LAN), or the Internet, among others. An external computing device may connect to the computer system100through the network112. In some examples, an external computing device may be an external webserver or a cloud computing node.

It is to be understood that the block diagram ofFIG.1is not intended to indicate that the computer system100is to include all of the components shown inFIG.1. Rather, the computer system100can include any appropriate fewer or additional components not illustrated inFIG.1(e.g., additional memory components, embedded controllers, modules, additional network interfaces, etc.). Further, the embodiments described herein with respect to computer system100may be implemented with any appropriate logic, wherein the logic, as referred to herein, can include any suitable hardware (e.g., a processor, an embedded controller, or an application specific integrated circuit, among others), software (e.g., an application, among others), firmware, or any suitable combination of hardware, software, and firmware, in various embodiments.

FIG.2is a block diagram of an example computing environment200which is configured to keep databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies according to one or more embodiments of the inventions. Computing environment200can include computer system(s)202coupled to computer systems220A,220B,220C through220Z and coupled to one or more user computer systems230via a network270. Computer systems220A,220B,220C through220Z can generally be referred to as remote computer systems220, which may be foreign computer systems such as servers. Computer systems202,220, and230can include any of the hardware and software components and functionality discussed in computer system100ofFIG.1. Computing environment200may be representative of one or more portions of a cloud computing environment. Computer systems220are the hardware on which applications run and may include various servers, mainframes, etc. In one or more embodiments, computer system202may be representative of a single server or one or more servers. Computer system202includes one or more software applications204configured to keep databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies, thereby maintaining database compliance in accordance with one or more embodiments. Moreover, software applications204are configured to perform/take/cause actions to prevent and resolve database compliance issues on computer systems. Functions of computing environment200can use and/or be implemented in workloads of workload layer90and can use any of the components of hardware and software layer60depicted inFIG.15.

FIGS.3A and3Bdepict a flowchart of a computer-implemented method300for training model210to classify sensitive data and non-sensitive data to be utilized for keeping databases compliant with data protection regulations such that the data can be transferred to compliant geographies in accordance with one or more embodiments.

At block302of the computer-implemented method300, software application204of computer system202is configured to receive a request212from the user of user computer system230to perform an action on and/or intended for a local database214. Local database214is the main database associated and geographically located with one or more services240performed by one or more computer systems202. The desired action to be performed on local database214could be to insert/store data, update data, delete data, select/read data, etc., on and/or associated with local database214coupled to computer system202. Local database214can be representative of numerous local databases in a local geography. The local geography may be, for example, in the United States, in North America, etc. Computer systems220A,220B,220C through220Z can be representative of a foreign geography and/or foreign region such as, for example, Country A, B, C through Z.

For explanation purposes, request212may include the following database command/information: “Insert into users(name, country, comments) Values(‘Joe’; ‘Country D’, ‘Joe has completed his task’)”. Request212can have, be included with, and/or be associated with header/other information as understood by one of ordinary skill in the art.

At block304, software application204delegates processing of request212to a function hooked into the database system. In this context, the hook is a place where code is inserted to customize the original program logic; database extensions such as Foreign Data Wrappers and INSERT/UPDATE/DELETE rule systems can be used to implement a hook on contemporary relational database systems. The inserted code is used to intercept request212and route the request212to the proper geographic location/region as determined herein.

At block306, software application204is configured to scan request212which may include performing text processing on request212and/or employing a text processing model206such as a natural language processing (NLP) model to perform text processing on request212. As understood by one of ordinary skill in the art, NLP combines computational linguistics such as rule-based modeling of human language with statistical, machine learning, and deep learning models. Together, these technologies enable computers to process human language in the form of text or voice data and to understand its full meaning, complete with the writer's intent and sentiment. Using NLP, software application204is configured to capture semantic meaning from the unstructured text and/or structured text of request212and/or the header information associated with request212. Particularly, software application204can scan request212for a country code. For example, text processing can determine in request212(and/or header information associated with request212) that the term ‘Country D’ is the name of a country. Accordingly, software application204is configured to send the name ‘Country D’ to a geotagging service which includes reverse geocoding in order to convert the name of the country (e.g., ‘Country D’) to its latitude and longitude coordinates. In one or more embodiments, software application204may include the functionality of a geotagging service and/or reverse geocoding service. In one or more embodiments, software application204may access and/or communicate with an application programming interface (API) to access the geotagging service and/or reverse geocoding service. Software application204is configured to perform a lookup in geocoding databases216using user information in request212and using header/other information associated with request212(and user) to find a country code for the user. Geocoding databases216include the names of various countries and their associated geographical coordinates (e.g., latitude and longitude coordinates) and also includes their respective country codes. Geocoding databases216include zip code to country code tables/databases, Internet protocol (IP) address to country code tables/databases, and other types of tables/databases that translate user information to a country code. Accordingly, software application204can search geocoding databases216with the country name (e.g., ‘Country D’), IP address of user computer system, and/or zip code of user computer system230to find the country code of the user. The header information of request212may include the IP address, port, zip code, etc. In one or more embodiments, software application204may find a street address in request212and/or header information, and software application204can search with the street address in geocoding databases216to find the country code.

At block308, software application204is configured use the country code and/or the name of the country (e.g., ‘Country D’) to search and find the regulation code for that country/geographic location in regulation code database218. During the training phase, software application204is configured to receive confirmation of the regulation code through administrator input. The country code may be the name of a country, the name of a region, the name of a continent, coalition of countries, etc.; the regulation database218maps the country code to its regulation code. The regulations associated with the regulation codes can include privacy law regulations that instruct how user data is to be handled and stored including the geographies in which the user data can be stored.

At block310, software application204is configured to tokenize the information in request212and provide the tokenized information for request212to feature extraction model208(and/or call on and/or instruct feature extraction model208) to process the tokenized information in request212. The tokenized information can include tokens of the “Values” in request212. Tokenization is a way of separating a piece of text into smaller units called tokens, where tokens can be either words, characters, or subwords. A standard technique for tokenization can be utilized as understood by one of ordinary skill in the art. An example tokenization technique is the white space tokenization, in which spaces are used as delimiters of words. Feature extraction model208is configured to extract word embeddings (i.e., create vectors) of the tokens. Feature extraction model208can be a standard feature extraction model used to convert words/documents to vectors. An example feature extraction model208is doc2vec as understood by one of ordinary skill in the art. The doc2vec model is an unsupervised machine learning algorithm. The doc2vec model is an architecture based on the contiguous bag-of-words and skip-gram models as understood by one of ordinary skill in the art. The objective is to create a numerical representation of the document.

The feature extraction model208(e.g., doc2vec) receives tokens of the information in the request212and creates feature vectors402, as depicted inFIG.4. A feature vector is an n-dimensional vector of numerical features that represent some object. The feature extraction model208generates a paragraph identification (ID) feature vector that identifies the document and/or request212. Additionally, software application204is configured to provide the regulation code and country code to feature extraction model208as additional tokens, such that feature extraction model208generates additional feature vectors for the regulation code and country code, respectively. The feature vectors402are the word vectors that hold the numeric representation and represent the concept of a paragraph. Particularly, the paragraph ID vector is the identification vector that holds the numeric representation identifying the document and represents the concept of a document/request. During the training phase, using a keyboard, mouse, touch screen, etc., the user can add weights to each of the feature vectors402inFIG.4. Each weight can indicate the importance of a feature vector in determining the contribution of the feature vector to the decision of whether the data is sensitive or not sensitive. As such, having a heavy weight has more influence than other weights. The various feature vectors402and their weights form a paragraph matrix. In creating the paragraph matrix, software application204may check that there is a country code, and if so, the feature vector402for the country code is assigned a heavy weight. Software application204may check if there is a regulation code, and if so, the feature vector402for the regulation code is assigned a heavy weight.

Software application204is configured to receive input from the administrator (operator) of a classification for information in request212according to the country code, and software application204is configured to attach the sensitive/non-sensitive flag (i.e., sensitiveness classification) to the paragraph matrix with a heavy weight. Using a keyboard, mouse, touch screen, etc., the administrator can input sensitive or not sensitive to classify the paragraph matrix, thereby classifying the information of request212as sensitive or not sensitive data. Alternatively, and/or additionally, the sensitiveness classification may be attached to the document vector prior to input to model210. In one or more embodiments, a special user interface is provided to the user so that the user can classify the request.

Referring toFIG.3A, at block312, software application204(e.g., using feature extraction model208) is configured to concatenate and/or combine the individual feature vectors402of the paragraph matrix into a document vector404of each of the individual feature vectors402.

At block314, as part of training a machine learning model210, software application204is configured to input to model210the document vector404having feature vectors402, weights corresponding to each of feature vectors402, and the sensitive/non-sensitive tag. Document vector404is added to a model training database of model210. In one or more embodiments of the invention, the administrator can label the document vector404as sensitive or non-sensitive for input to model210, and in this case, alternative methods (other than doc2vec) could be used to characterize the words that belong to the document. In one or more embodiments of the invention, model210can be a logistic regression model that uses the input to classify/label the output as sensitive data or non-sensitive data. The model210includes engines/classifiers that can be configured and arranged to execute machine learning algorithms as understood by one of ordinary skill in the art. In general, machine learning algorithms, in effect, extract features from received data (e.g., inputs to the model210) in order to “classify” the received data. Examples of suitable classifiers include but are not limited to neural networks, support vector machines (SVMs), logistic regression, decision trees, hidden Markov models (HMIs), etc. The end result of the classifier's operations, i.e., the “classification,” is to predict a class for the data. The machine learning algorithms apply machine learning techniques to the received data in order to, over time, create/train/update a unique “model.” The learning or training performed by the engines/classifiers can be supervised, unsupervised, or a hybrid that includes aspects of supervised and unsupervised learning. Supervised learning is when training data is already available and classified/labeled. Unsupervised learning is when training data is not classified/labeled so must be developed through iterations of the classifier. Unsupervised learning can utilize additional learning/training methods including, for example, clustering, anomaly detection, neural networks, deep learning, and the like.

Referring toFIG.3B, at block316, software application204is configured to execute model210(e.g., logistic regression model) and check if the output from model210has the classification of sensitive data or non-sensitive data (i.e., not sensitive) for request212. At block318, in response to the classification of non-sensitive/not sensitive being output from model210, software application204is configured to perform the action of request212on one or more local databases214. The action of request212may be to insert data into local database214, for example, to “Insert into users(name, country, comments) Values(‘Joe’; ‘Country D’, ‘Joe has completed his task’)” in a table of local database214. Local databases214are databases that are local to and/or in the same geographical location or region as one or more services240performed for user computer system230that has sent request212. The services240are associated with local databases214. For example, the services240may require use of data in local databases214to execute and perform as intended. The user may be interacting with a service240originating from, executed at least in part in, and/or deemed to be in the same geography as local database214. Example services may include, but are not limited, financial transactions, gaming services, social media services, online services, etc., which are performed (at least in part) on one or more computer systems202and facilitate electronic interactions with the user of user computer system230. The request212is intended to be performed on local database214, and software application204is configured to determine if the request212is permitted to be performed on local databases214or remote databases222A,222B,22C, through222Z that at different geographical locations/regions from local databases214. In some cases, a geographical location or region could be greater than the country boundaries; as such a local database could be in the same geographical location/region as the user on user computer system230.

For illustration purposes, computer systems220A,220B,220C, through220Z are each respectively in geographical location/region A, B, C, through Z, which are different from the geographical location/region of local databases214and services240. Each geographical location/region can have a regulation code in regulation database218that identifies the rules about saving types of user data in a foreign geography that is different from the citizenship of the user.

Referring toFIG.3B, at block320, in response to the classification of sensitive being output from model210, software application204is configured to perform the action of request212on corresponding one of remote databases222A,222B,222C through222Z. For example, if the user of user computer system230is in ‘Country D’ which has a regulation code, software application204is configured to transfer the information of request212and/or cause the information of request212to be transferred over network270to remote database222D on computer system220in the geographical location/region of D (i.e., ‘Country D’). To facilitate future data retrieval, software application204may store in local database214a flag or bit indicating that a row is remote.FIG.5depicts a block diagram of example table representations on disks according to one or more embodiments. View502illustrates a portion of an example table representation in local database214. In view502, row504shows that the remote flag/bit520is selected, which designates that data of row504is stored remotely. Row504may store the remote server address to one of the computer systems220, the remote row ID, etc., such that the remote database222can be accessed when needed. View550illustrates a portion of an example table representation in a remote database222such as, for example, remote database222D of computer system220D for geographical location/region D (e.g., ‘Country D’) that meets the regulation code for the user. In view550, row554shows the information for request212that has been transferred by software application204. This process discussed inFIGS.3A and3Bis utilized to train model210thereby resulting in a trained model.

FIGS.6A and6Bdepict a flowchart of a computer-implemented method600for using model210to classify sensitive data and non-sensitive data to be utilized for keeping databases compliant with data protection regulations such that the data can be transferred to compliant geographies in accordance with one or more embodiments. Computer-implemented method600is utilized with trained model210.FIGS.6Aand6B include details fromFIGS.3A and3Bexcept for operations needed for training. The details discussed for processes in computer-implemented method300ofFIGS.3A and3Bmay apply where appropriate to the processes in computer-implemented method600, and some details may not be repeated.

At block602of the computer-implemented method600, software application204of computer system202is configured to receive request212to perform an action (intended) on local database214. As noted above, the desired action could be to insert/store data, update data, delete data, select/read data, etc., on local database214of computer system202. Further details of each type of request212are depicted inFIGS.9-12discussed below. Using the example scenario from above, request212may include the following database command/information: “Insert into users(name, country, comments) Values(‘Joe’; ‘Country D’, ‘Joe has completed his task’)”. Request212may be included with and/or be associated with header information as understood by one of ordinary skill in the art.

At block604, software application204executes a function hooked into the database system to process request212. At block606, software application204is configured to scan request212and/or perform text processing on request212(and/or employ a text processing model206such as the NLP model to perform text processing on request212). As noted above, software application204is configured to capture semantic meaning from the unstructured text/structured text of request212and/or the header information associated with request212in order to obtain a country code and/or use the information associated with request212to obtain the country code. As noted herein, text processing can determine in request212(and/or header information associated with request212) that the term ‘Country D’ is the name of a country. Accordingly, software application204is configured to send the name ‘Country D’ to a geotagging service which includes reverse geocoding in order to convert the name of the country (e.g., ‘Country D’) to its latitude and longitude coordinates. As noted herein, software application204may include the functionality of a geotagging service and/or reverse geocoding service. Additionally, and/or alternatively, software application204may employ/access the geotagging service and/or reverse geocoding service. Software application204is configured to perform and/or cause a lookup in geocoding databases216using user information in request212and using header information associated with request212in order to find a country code for the user.

At block608, software application204is configured use the country code and/or the name of the country (e.g., ‘Country D’) to search and find the regulation code for that country/geographic location in regulation code database218. At block610, software application204is configured to tokenize the information in request212and provide the tokenized information in request212to feature extraction model208(e.g., call on and/or instruct feature extraction model208) to process the information of request212. As noted herein, the tokenized information can include the “Values” in request212. Feature extraction model208is configured to extract word embeddings (i.e., create vectors) of the tokens. The feature extraction model208(e.g., doc2vec) receives tokens of the information in the request212and creates feature vectors402, as depicted inFIG.7. As an example, feature extraction model208may be doc2vec or some other feature extraction model as understood by one of ordinary skill in the art.FIG.7depicts a block diagram of feature vectors702in accordance with one or more embodiments. Feature vectors702are analogous to feature vectors402except that the weights are removed. Since model210has been trained, the user does not add weights to the feature vectors702as previously done for feature vectors402during the training phase inFIG.4. The individual feature vectors702may be concatenated and/or combined into a document vector704of each of the individual feature vectors702, just as previously discussed for document vector404inFIG.4. The feature extraction model208generates a paragraph identification (ID) feature vector that identifies the document and/or request212. Additionally, software application204is configured to provide tokens of the regulation code and country code to feature extraction model208, such that feature extraction model208generates additional feature vectors for the regulation code and country code, respectively. The various feature vectors402combined form what is called a paragraph matrix. The paragraph matrix denotes the set of feature vectors. In creating the paragraph matrix, software application204may check that there is a country code, and if so, the feature vector402for the country code is added to the paragraph matrix. Software application204may check if there is a regulation code, and if so, the feature vector402for the regulation code is added to the paragraph matrix.

Referring toFIG.6A, at block612, software application204(e.g., using feature extraction model208) is configured to concatenate and/or combine the individual feature vectors702of the paragraph matrix into a document vector704of each of the individual feature vectors702. At block614, software application204is configured to input to model210the document vector704having feature vectors702in order for model210to classify the information of request212as either sensitive data or non-sensitive data (i.e., not sensitive data). Since the model210is trained, software application204does not need the user to input the sensitive/non-sensitive tag and the weights.

Referring toFIG.6B, at block616, software application204is configured to check if the output from model210has the classification of sensitive data or non-sensitive data (i.e., not sensitive) for request212. At block618, in response to the classification of non-sensitive/not sensitive being output from model210, software application204is configured to perform the action of request212on one or more local databases214. Continuing the example scenario, the action of request212may be to insert data into local database214, for example, to “Insert into users(name, country, comments) Values(‘Joe’; ‘Country D’, ‘Joe has completed his task’)” in a table of local database214.

At block620, in response to the classification of sensitive being output from model210, software application204is configured to cause the action of request212to be performed on the corresponding one of remote databases222A,222B,222C through222Z, which is according to the regulation code. For example, if the user of user computer system230is in and/or associated with ‘Country D’ which has a regulation code, software application204is configured to transfer the information of request212and/or cause the information of request212to be transferred over network270to remote database222D on computer system220in the geographical location/region of D (i.e., ‘Country D’). This meets the requirement of the regulation code for the user. To facilitate future data retrieval, software application204may store in local database214a remote flag/bit520indicating that a row is remote as depicted inFIG.5.

In one or more embodiments, model210may classify request212(in particular the document vector704) as sensitive but there may not be a destination country or geographical location/region. For example, if no explicit country code is identified, software application204has (i) a classification flag that tells software application204that the data is sensitive and (ii) the feature vectors702of each element featured in the user's request212. In that case, software application204may perform a look up in the trained database of model210for the closest match of feature vector702to a saved feature vector, identify the destination country where that trained data has been stored, and store the user's request data in a computer system220in that same country. Alternatively, and/or additionally, software application204may notify the database administrator when data tagged as sensitive does not have an associated destination country, in which case such data could be manually migrated to a remote location.

FIG.8is a flowchart of an example computer-implemented geocoding process800in accordance with one or more embodiments. Request212is received by computer system202. Software application204on computer system202may call and/or employ one or more geocoding services and NLP models to perform the geocoding process800. At block802, software application204is configured to search request212for geocoded data. Searching request212also includes searching header information and other information associated with request212. The header information may be utilized to send the request212from user computer system230to computer system202. As discussed herein, geocoded data can include the name of a country such as “Country D”, the zip code of the user and/or user computer system230, IP address of the user computer system230(or modem), etc.

At block804, software application204is configured to perform and/or cause a lookup of the country code in geocoding databases216using the geocoded data. At block806, software application204is configured to check if the country code is found. If (YES) the country code is found, software application204provides the country code at block810. If (NO) the country code is not found, software application is configured to employ and/or request NLP-assisted reverse geocoding using, for example, text processing model206(NLP model) at block808. The output from text processing model210is provided to block804.

FIG.9is a flowchart of an example computer-implemented store procedure900in accordance with one or more embodiments. Request212is received by computer system202. At block902, software application204is configured to check if the (sensitive) remote flag/bit520is set in a row corresponding to request212in the table of local database214. If (NO) there is no sensitive flag set, software application204is configured to insert/store the information of request212in the local database table of local database214at block920.

At block904, if there is a (sensitive) remote flag/bit520set, software application204is configured to get the (stored) country code of the local database server (e.g., computer system202). Also, software application204is configured to retrieve the country code and/or regulation code for request212.

At block906, software application204is configured to check if the country code of the local database server (e.g., computer system202) meets the regulation of the regulation code for request212. If (YES) the country code of the local database server meets the regulation code, software application204is configured to insert/store the information of request212in the local database table of local database214at block920. If (NO) the country code of the local database server does not meet the regulation code for request212, software application204is configured to search for and select a remote database server meeting the regulation of the regulation code for request212. For example, software application204may search the respective country codes associated with computer systems220A-220Z in respective geographical locations/regions A-Z to find a country code that meets and/or matches the county code(s) of the regulation. For example, the regulation code for request212may require that the request212be processed in geographical location/region D. In this case, software application204is configured to select computer system220D with the country code for geographical location/region D.

At block908, software application204is configured to cause the insertion (storage) of the request212on selected computer system (e.g., computer system220D). As an example remote server which is interchangeably used as remote database server, computer system220(e.g., computer system220D) is configured to insert the information of request212in a row of remote database table of remote database222(e.g., remote database222D) and generate a row identification (ID) at block912. As the remote server, computer system220(e.g., computer system220D) is configured to reply to software application204of computer system202with the generated ID at block914.

At blocks916,918, in response to receiving the remote row ID of the remote table in remote database222, software application204is configured to create a row in the local database table of local database214pointing to the remote server (e.g., computer system220D) and update the inserted row in local database214with the remote row ID.

FIG.10is a flowchart of an example computer-implemented select/read procedure1000in accordance with one or more embodiments. At block1002, software application204is configured to receive request212from user computer system230. At block1004, software application204is configured to check if the row associated with request212is stored on a remote server. For example, software application204may check if (sensitive) remote flag/bit520is set for the row corresponding to request212in the table of local database214. If (NO) there is no sensitive flag set and if the row is stored in local database214, software application204is configured to select/read the row(s) in the local database table of local database214at block1014.

At block1006, if there is a (sensitive) remote flag/bit520set and if the row(s) corresponding to request212is not stored in the table of local database214, software application204is configured to retrieve the remote server address (i.e., the pointer, remote row ID, etc.) of the remote server (e.g., computer system220). Continuing the example scenario, the remote server may be computer system220D and the remote server address may be saved in the local row of local database214.

At block1008, software application204is configured to forward the select/read query (i.e., request212) and the remote row ID to the remote server address of the remote server (e.g., computer system220D) to cause the selection/reading of the remote rows on computer system (e.g., computer system220D). At block1010, the remote server (e.g., computer system220D) is configured to select/read remote row(s) in remote database222(e.g., remote database222D), particularly, the information in the remote row(s). At block1012, software application204is configured to receive the data of the remote row(s) from the remote server and pass the data to, for example, the user of user computer system230.

FIG.11is a flowchart of an example computer-implemented update/change procedure1100in accordance with one or more embodiments. At block1102, software application204is configured to receive request212from user computer system230. At block1104, software application204is configured to check if the row associated with request212is stored on a remote server. For example, software application204may check if (sensitive) remote flag/bit520is set for the row corresponding to request212in the table of local database214. If (NO) there is no sensitive flag set and the row is stored in local database214, software application204is configured to update/change the row(s) in the local database table of local database214at block1114.

At block1106, if (YES) there is a (sensitive) remote flag/bit520set and if the row(s) corresponding to request212is not stored in the table of local database214, software application204is configured to retrieve the remote server address (i.e., the pointer, remote row ID, etc.) of the remote server (e.g., computer system220). Again, the remote server may be computer system220D and the remote server address may be saved in the local row of local database214. Although the example scenario is used for consistency and explanation purposes, it should be appreciated that the remote server could be any of the remote computer systems220.

At block1108, software application204is configured to forward the update/read query (i.e., request212) and the remote row ID to the remote server address of the remote server (e.g., computer system220D) to cause the update/change of the information in the remote rows on computer system (e.g., computer system220D). At block1110, the remote server (e.g., computer system220D) is configured to update/change information of remote row(s) in remote database222(e.g., remote database222D). At block1112, software application204is configured to receive confirmation that the update/change to the remote row(s) from the remote server.

FIG.12is a flowchart of an example computer-implemented update/change procedure1200in accordance with one or more embodiments. At block1202, software application204is configured to receive request212from user computer system230. At block1204, software application204is configured to check if the row associated with request212is stored on a remote server. For example, software application204may check if (sensitive) remote flag/bit520is set for the row corresponding to request212in the table of local database214. If (NO) there is no sensitive flag set and if the row is stored in local database214, software application204is configured to delete the row(s) in the local database table of local database214at block1214.

At block1206, if (YES) there is a (sensitive) remote flag/bit520set and if the row(s) corresponding to request212is not stored in the table of local database214, software application204is configured to retrieve the remote server address (i.e., the pointer, remote row ID, etc.) of the remote server (e.g., computer system220). Again, the remote server may be computer system220D and the remote server address may be saved in the local row of local database214.

At block1208, software application204is configured to forward the delete query (i.e., request212) and the remote row ID to the remote server address of the remote server (e.g., computer system220D) to cause the update/change of the information in the remote rows on computer system (e.g., computer system220D). At block1210, the remote server (e.g., computer system220D) is configured to delete the remote row(s) in remote database222(e.g., remote database222D). At block1212, software application204is configured to receive confirmation of the deletion of the remote row(s) from the remote server.

FIG.13is a flowchart of a computer-implemented method1300for keeping databases compliant with data protection regulations by sensing the presence of sensitive data and transferring the data to compliant geographies in accordance with one or more embodiments of the invention. Computer-implemented method1300may be performed using computer system202inFIG.2. Functions of computer systems can use and/or implemented in hardware components of hardware and software layer60and/or workloads of workload layer90depicted inFIG.15.

At block1302, software application204is configured to receive a request212comprising information, the request212being intended for processing on a local database214. At block1304, software application204is configured to use a model210to process the information of the request212. At block1306, responsive to the model210determining that information relates to sensitive data, software application204is configured to transfer the request212to a remote database (e.g., one of the remote databases222A-222Z) associated with a geography (e.g., geographical location/region A-Z) meeting a requirement for the sensitive data in order to execute the request212.

Responsive to the model210determining that information relates to non-sensitive data, software application204is configured to cause the information to be processed on the local database214in order to complete the request. A regulation code (e.g., from regulation code database218) is associated with the request212, the model210being configured to use the regulation code to determine that the information relates to the sensitive data. A country code (e.g., from one or more geocoding databases216) is associated with the request212, the model210being configured to use the country code to determine that the information relates to the sensitive data.

Software application204is configured to cause feature extraction model208to convert the information of the request212into feature vectors702and convert the feature vectors702into a document vector704that is used by the model210to determine that the information relates to the sensitive data.

Responsive to the request being a select query, an update query, or a delete query, software application204is configured to determine (e.g., by remote flag/bit520) that one or more rows are stored on the remote database (e.g., one of remote databases222A-222Z on computer systems220A-220Z, respectively) instead of the local database214and retrieve a remote address (e.g., pointer and remote row ID) associated with the remote database.

Responsive to the request212being a store command, software application204is configured to determine a regulation code (e.g., from regulation code database218) associated with the request212, the regulation code comprising the requirement (e.g., a privacy rule or regulation indicating the geographical location/region where user data is to be stored). Software application204is configured to select the remote database (e.g., remote database222D) associated with the geography meeting the requirement of the regulation code. Responsive to transferring the request to the remote database and receiving a remote row identification associated with one or more rows of the remote database, software application204is configured to create a local row in the local database214(e.g., local row504in view502) that contains the remote row identification for the sensitive data.

Characteristics are as follows:

Service Models are as follows:

Deployment Models are as follows:

Referring now toFIG.15, a set of functional abstraction layers provided by cloud computing environment50(FIG.14) is shown. It should be understood in advance that the components, layers, and functions shown inFIG.15are intended to be illustrative only and embodiments of the invention are not limited thereto. As depicted, the following layers and corresponding functions are provided:

Workloads layer90provides examples of functionality for which the cloud computing environment may be utilized. Examples of workloads and functions which may be provided from this layer include: mapping and navigation91; software development and lifecycle management92; virtual classroom education delivery93; data analytics processing94; transaction processing95; and workloads and functions96. Workloads and functions96may include various software applications including software application204, software on computer systems220, etc., discussed herein. Computer systems202,220may include functionality and components of hardware and software layer60.