US9270546B2 - Systems and/or methods for on-demand repository bootstrapping at runtime in a scalable, distributed multi-tenant environment - Google Patents
Systems and/or methods for on-demand repository bootstrapping at runtime in a scalable, distributed multi-tenant environment Download PDFInfo
- Publication number
- US9270546B2 US9270546B2 US14/198,298 US201414198298A US9270546B2 US 9270546 B2 US9270546 B2 US 9270546B2 US 201414198298 A US201414198298 A US 201414198298A US 9270546 B2 US9270546 B2 US 9270546B2
- Authority
- US
- United States
- Prior art keywords
- application
- tenant
- repository
- computing system
- repositories
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G06F17/3056—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/04—Processing captured monitoring data, e.g. for logfile generation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/2866—Architectures; Arrangements
- H04L67/30—Profiles
-
- H04L67/42—
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1097—Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
Definitions
- Certain example embodiments described herein relate to scalable, distributed multi-tenant environments. More particularly, certain example embodiments described herein relate to techniques for dynamically bootstrapping repositories or databases for newly created tenants at runtime in scalable, distributed multi-tenant environments. In certain example embodiments, the bootstrapping is triggered dynamically the first time a client application tries to access a specific repository related to a newly created tenant at runtime, leading to a flexible approach for enabling tenant- and application-specific repositories with optional search index mapping (e.g., for searching and/or other purposes).
- Computer applications with database connectivity oftentimes have been designed such that backend components (such as, for example, tables, stored procedures, views, and/or the like), and also the database itself, need to be configured before the start of the applications that use them.
- backend components such as, for example, tables, stored procedures, views, and/or the like
- relational databases have been used to provide information to computer applications, and the components of the relational databases typically are designed and created before such applications try to access them.
- information about the contents of the databases is needed before a database server can be started.
- cloud computing generally involves (1) the delivery of computing as a service rather than a product, and (2) providing shared processing and/or storage resources, software, information, etc., to computers and other devices as an oftentimes metered service over a network (typically the Internet).
- a network typically the Internet
- end users do not necessarily need to know the physical location and configuration of the system that delivers the services.
- Applications typically are delivered to end-users as the service, enabling transparent access to the cloud-based resources.
- repositories may be used in providing backend database functionality and/or the like.
- the number and type(s) of repositories for a given tenant can vary depending on the applications actually used by that tenant, and if users associated with a tenant want to use a specific function of an application for the first time, an initial process of creating the repositories required for that functionality may be triggered.
- an implicated database management system may create several repositories for the tenant including, for example, one repository for permanent storage, and perhaps three additional repositories associated with other technical requirements (e.g., for storing metadata, providing a search index, enabling caching functionality, etc.). Further additional repositories for the tenant may need to be created on demand, e.g., when needed by a different part of the application (e.g., an application instance) or another service that uses the application for storing data.
- a different part of the application e.g., an application instance
- another service that uses the application for storing data.
- applications and/or application instances In conventional, single-tenancy architectures, applications and/or application instances generally will access databases or other repositories with predefined structures. Index mappings (e.g., used for searching) will be linked to the repositories. The applications and/or application instances, in turn, will be configured to access exactly these repositories. All these components generally will be “hardwired” in the system and configured before the various components and/or associated services are started.
- conventional, single-tenancy architectures generally will implement static, predefined installations and deployment processes. Indeed, as alluded to above, the system oftentimes will need to create repositories that in turn have to be configured with all tables, stored procedures, views, etc., as well as a “hardwired” index mapping for an associated search engine. After that, it becomes possible to configure the applications and/or application instances and start everything in the correct order.
- FIG. 1 is an example single-tenancy architecture.
- an application instance e.g., a web application instance
- a predefined repository or database 104 a The information needed for accessing this database 104 a was configured and stored as application settings before the application instance 100 a was started.
- everything is properly configured for a specific tenant and a specific application instance (in this case, application instance 100 a ).
- This predefined configuration is “hardwired” in the system and cannot be dynamically changed for another tenant, application, and/or application instance.
- each application/tenant (or application instance/tenant) combination is provided with its own installation settings to connect to the backend and, in the FIG. 1 example, separate Installations A and B are provided.
- a parallel structure to that described in connection with Installation A is provided for Installation B, with like reference numerals having the “a” and “b” suffixes being provided for, and designating like components in, Installations A and B respectively.
- the database 104 a is configured with a static repository. Thus, it can only be used for one application instance (in this case, application instance 100 a ) and one tenant. If another application instance (e.g., application instance 100 b ) and/or tenant would like to use the web application, it would need another complete installation (e.g., as in Installation B) that is unique to that combination.
- an index mapping 106 a that is configured to match the repository 104 a is provided and configured for a specific application/tenant (or application instance/tenant) combination.
- the naming convention for the search index 108 a is static and non-unique, and it only works with one repository 104 a and provides one searchable index 108 a .
- the index 108 a is updated every time a new document is stored to the permanent repository 104 a , e.g., by reading a “changes feed” using a search plug-in for metadata and an indexing tool for the full-text search.
- U.S. Pat. No. 8,560,699 (which is hereby incorporated by reference herein in its entirety) describes a technique able to start new instances of a service (e.g., a database service) that is customized to fit the needs of a particular user.
- a launch configuration may be provided by the user or may be generated automatically by the system. This is a provisioning-centric approach covering new instances. It does not describe a way of bootstrapping new repositories without user interaction on an already running database instance, however.
- An aspect of certain example embodiments relates to techniques for dynamically setting up and configuring data repository connectivity in a multi-tenant web application, on demand and at runtime, e.g., in a cloud computing and/or other highly distributed and scalable environment.
- Another aspect of certain example embodiments relates to setting up and configuring data repositories while avoiding manual and/or external scripting approaches, and potentially in the absence of detailed knowledge about the requests of the client applications.
- Another aspect of certain example embodiments relates to looking up the location of an already existing repository or, in case one does not exist, creating a new repository including all needed technical enhancements (such as, for example, search indexes, etc.), in order to provide a scalable, flexible, and fault tolerant arrangement suitable for use in a highly distributed and scalable environment such as what might be present in connection with a public and/or private cloud environment.
- technical enhancements such as, for example, search indexes, etc.
- Certain example embodiments thus relate to techniques for dynamically bootstrapping repositories or databases for newly created tenants at runtime in scalable, distributed multi-tenant environments.
- the bootstrapping is triggered dynamically the first time a client application tries to access a specific repository related to a newly created tenant at runtime, leading to a flexible approach for enabling tenant- and application-specific repositories with optional search index mapping.
- bootstrapping is used herein and, as will be appreciated by those skilled in the art, it oftentimes is used generally to refer to the starting of a self-sustaining process that is supposed to proceed without external input. In this context, however, those skilled in the art will further understand that bootstrapping may relate to the basic configuration of repositories, indexes, tables, views, and/or other components, that might be used in a multi-tenant, potentially highly-distributed and scalable environment (such as a cloud computing environment), e.g., where an application (e.g., a web application) accesses a database or other repository.
- an application e.g., a web application
- Certain example embodiments create structured repositories (e.g., databases) for new tenants dynamically at runtime, with the repository being modeled in means other than the tabular relations used in relational databases such as a “Not only SQL” or NoSQL database.
- the creation of the repositories may be carried out by a web application or the like and, apart from or in addition to the creation of repositories, certain example embodiments may also involve the dynamic creation of a search index linked to the newly created repositories.
- Certain example embodiments may undertake like actions in connection with the deletion of a tenant (e.g., when a customer's contract with an application provider ends, etc.).
- a method of managing a distributed, multi-tenant computing system comprising at least one processor and non-transitory storage media hosting a plurality of repositories designated for different respective computing system application-tenant combinations.
- a request for data to be obtained using a computing system application is received from a client application running on a client device, with the request being associated with a requesting computing system application-tenant combination that is based on a requesting tenant associated with the client application and the computing system application to be used in obtaining the data.
- a determination is made, using the computing system, as to whether the non-transitory storage media already stores a repository designated for the requesting computing system application-tenant combination.
- the request for data is handled using the already existing repository designated for the requesting computing system application-tenant combination.
- a new repository designated for the requesting computing system application-tenant combination is dynamically and automatically created at runtime, without having to restart the computing system; the new repository is dynamically and automatically configured at runtime, without having to restart the computing system; and the request for data is handled using the new repository following said dynamic and automatic configuring.
- Processing resources include at least one processor, and are configured to enable a plurality of computing system applications to be performed.
- Non-transitory storage media hosts a plurality of repositories designated for different respective computing system application-tenant combinations.
- the computing system is configured to at least: receive, from a client application running on a client device, a request for data to be obtained using at least one of said computing system applications, the request being associated with a requesting computing system application-tenant combination corresponding to a requesting tenant associated with the client application and the computing system application(s) to be used in obtaining the data; determine whether the non-transitory storage media already stores a repository designated for the requesting computing system application-tenant combination; in response to a determination that there already is a repository designated for the requesting computing system application-tenant combination, handle the request for data using the already existing repository designated for the requesting computing system application-tenant combination; and in response to a determination that there is no existing repository designated for the requesting computing system application-tenant combination (a) dynamically and automatically create and configure, at runtime, a new repository designated for the requesting computing system application-tenant combination, without having to restart the computing system and without having to restart the computing system application(s) to be used in obtaining the data, and (b)
- a distributed, multi-tenant computing system comprises processing resources including at least one processor.
- Tenant installations are backed by virtual and/or physical machines and are designated for respective tenants, with each said tenant installation supporting at least one application and at least one repository accessible by and/or to the respective tenant, and with each said repository being designated for a different application-tenant combination.
- a web application or service is configured to receive a request for a document from a client application.
- the processing resources cooperate to provide to the web application or service a response to the request for the document from the client application such that: when a determination is made that there is a repository already in existence for the specific combination of the tenant and the application involved in the request, that repository is used in responding to the request; and when a determination is made that there is not a repository already in existence for the specific combination of the tenant and the application involved in the request, a new repository is generated in cooperation with the processing resources dynamically and at computing system runtime, bootstrapping is performed for configuring the new repository dynamically and at computing system runtime, and that new repository is used in responding to the request.
- Non-transitory computer readable storage mediums tangibly storing instructions for performing the above-summarized and/or other methods also are provided by certain example embodiments, as well as corresponding computer programs.
- FIG. 1 is an example single-tenancy architecture
- FIG. 2 is a block diagram schematically demonstrating issues that can arise in connection with highly-distributed, multi-tenant scenarios
- FIG. 3 is a block diagram showing example components that may be used in certain example embodiments
- FIG. 4 is a flowchart showing an example process that may be used in connection with certain example embodiments
- FIG. 5 is a more detailed block diagram showing bootstrapping techniques that may be used in connection with certain example embodiments.
- FIG. 6 is a more detailed flowchart showing bootstrapping techniques that may be used in connection with certain example embodiments.
- Certain example embodiments use a bootstrapping technique to dynamically instantiate and configure repository (e.g., database) connectivity for a multi-tenant application (e.g., web application) on demand at runtime, e.g., in a highly distributed environment such as a cloud computing environment.
- repository e.g., database
- the example techniques set forth herein provide a scalable and efficient solution that also is fault tolerant, in certain example implementations.
- the bootstrapping is triggered dynamically the first time a client application tries to access a specific repository related to a newly created tenant at runtime, leading to a flexible approach for enabling tenant- and application-specific repositories with optional search index mapping.
- FIG. 2 is a block diagram schematically demonstrating issues that can arise in connection with highly-distributed, multi-tenant scenarios.
- FIG. 2 shows two virtual machine deployments.
- Virtual Machine A includes web services 202 a that may be used for several tenants, as well as a web application instance (e.g., in Apache Tomcat) 204 a .
- Virtual Machine B includes web services 202 b that may be used for several tenants, as well as a web application instance (e.g, in Tomcat) 204 b .
- an application instance is dynamically deployed in virtual or physical machine (e.g., Virtual Machines A and/or B in FIG.
- the specific settings for all services may not be known in advance, e.g., if the environment uses several repositories for different tenants and applications.
- the main application therefore may need to handle, on-demand and at runtime, several tenants with different web application instances 204 a and 204 b .
- new repositories, etc. may need to be created and configured on-the-fly.
- a registration service may be consulted directly, e.g., if a server-side application is being used by the web application instances 204 a and/or 204 b .
- a load balancer 206 may be provided. The load balancer 206 may help lead to an instance or installation that can handle the request.
- the web application server thus may query the registry service, directly or indirectly, to determine which, if any, running instances of the database fit to the application/tenant combination being used.
- a static repository may not be possible under these circumstances. Instead, on-demand, dynamical reactions to new applications or tenants that come into play at a certain time may be needed, e.g., to bring online and/or access a new instance 208 that includes a new permanent and/or other repository 210 in that new instance 208 . The same is true when it comes to accessing a search index. That is, a static search index may not be possible, and instead a new search index 212 that corresponds with the new permanent repository 210 that has been created may be created.
- Certain example embodiments thus respond to the issues raised in connection with FIG. 2 . That is, because bootstrapping at startup may not be possible, certain example embodiments provide the ability to dynamically create at runtime new repositories for new tenants and for several applications. Furthermore, because index mapping for a search engine or other feature may not be provided in advance, in addition or in the alternative, certain example embodiments provide the ability to create indices for new repositories on-the-fly, e.g., to make the repository searchable.
- FIG. 3 is a block diagram showing example components that may be used in certain example embodiments. Having several web applications 302 a - 302 n deployed in distinct virtual or physical machines 304 a - 304 n , a running instance would be selected for the client application 306 running on the client computing device 308 (which may include processing resources such as, for example, at least one processor 310 and a memory 312 ). This selection may be performed using a load balancer 314 or, alternatively, it may be directly chosen, e.g., if the client application 306 is a server-side web application within the same ecosystem.
- a load balancer 314 or, alternatively, it may be directly chosen, e.g., if the client application 306 is a server-side web application within the same ecosystem.
- determinations are made as to who the tenant is who is trying to access a repository, and which client application the request is coming from (e.g., via a provisioning and/or user management computing system 316 that includes at least one processor 318 a memory 320 and program logic 322 in communication with the deployments 304 a - 304 n ).
- a lookup at the database 324 is initiated to determine whether a repository already exists and is available for the combination of the tenant and application for which it is to be used.
- the database 324 and repositories may, of course, be hosted on a computing system that includes transitory and/or non-transitory media, and the database 324 may be queried by the provisioning and/or user management computing system 316 , etc.
- the database 324 may be database that supports SQL queries, it may be a NoSQL database, etc.
- the deployments 304 a - 304 n may be supported in a cloud computing environment, e.g., where there is a processing system including at least one processor, a memory, storage, and/or the like, on one or more nodes that may or may not be distributed in different implementations.
- Certain example embodiments may use a pattern or other naming scheme for identifying the correct repository.
- the pattern may comprise or consist of the following and/or other example information: the type of the storage (e.g., temporarily or permanent), the application acronym or other identifier, and the tenant ID. For instance, if there is an attempted accession via a tenant “tenant 1 ” and an application “app 1 ”, then a unique key would be created for the repository using this information. An attempt to access the repository would be made and, if the attempt fails, a repository with the generated key would be created.
- the pattern generated has the following format: “permanent_app 1 _tenant 1 ”.
- Determining whether a newly created repository needs a search index may be performed by the first section of the pattern. For instance, if the pattern contains the string “permanent,” it will be available for searching. In that case, an index mapping may be created. The name of this mapping may be made unique by using the same, similar, or different structure for the name of the index as the name of the repository. The name may be unique and refer directly to this exact repository. Thus, it will be appreciated that the same structure may, for example, be used for repository naming and index naming, so both the index and the repository could be called “permanent_app 1 _tenant 1 ”.
- mapping is called “permanent_app 1 _tenant 1 _mapping”, or the like.
- Such functions may be undertaken by the provisioning and/or user management computing system 316 , e.g., in cooperation with the database 324 and the newly created repository.
- Such techniques are advantageous because they may in certain example embodiments enable the web application to scale at runtime, replicate it without significant downtimes, provide a fault tolerant system, and/or the like, even if new repositories need to be created at runtime for newly created tenants and/or new applications that will make use of the web application.
- FIG. 4 is a flowchart showing an example process that may be used in connection with certain example embodiments.
- a client application accesses a web application to perform a desired task.
- the task might be anything and may involve, for example, uploading or downloading data and/or a document.
- the web application obtains a tenant ID that may be retrieved from, for example, a user management system or the like, e.g., in step S 404 . If the user from which this request comes from belongs to a tenant that has not already been created, then the example techniques described herein may come into play and the attendant advantages realized.
- the location of the database server is obtained from the registry where all running services may be listed, e.g., to find the repositories of this specific tenant, assuming that they have already been created.
- the web application can attempt to access the database for the tenant in step S 408 . If the database with the ID described above already exists, the process is ended and the desired operation can take place (e.g., the web application can write or retrieve the requested data, etc.). Similar operations take place if a search is being made for a document. That is, if an index has already been created, the web application can search the index and retrieve the result set from the database. Thus, as shown in step S 410 , the desired operations are performed with respect to the target repository and/or index, if possible, and the FIG. 4 process may be ended.
- the desired operation are performed with respect to the target repository and/or index, if possible, and the FIG. 4 process may be ended.
- step S 412 the components deemed necessary may be created in step S 412 .
- This may involve, for example, the generation of a repository ID for the new database as described above, the creation of repository, the registration of the newly created repository with the database and/or registry, etc.
- step S 414 involves the creation of an index mapping for the search engine.
- the name of the index may have the same or similar naming convention as the repository ID in certain example implementations.
- After creating the index it may be introduced into the database with a search plug-in, it may be linked to the corresponding changes feed of the newly created repository, etc., in step S 416 .
- a changes feed in certain example embodiments automatically provide information about changes in the repository and, thus, this functionality may be used to update a search index automatically by listening to the feed instead of polling or pushing the data to search index, for example.
- FIG. 5 is a more detailed block diagram showing bootstrapping techniques that may be used in connection with certain example embodiments.
- the applications are identified in FIG. 5 as Apps 1 , 2 , 4 , and n, although others may be provided.
- the highly-distributed environment is a cloud computing environment, and the web application or service 502 is provided for performing document storage operations.
- first and second installations 504 a - 504 b are shown for Tenants A and B, respectively.
- Each of Tenants A and B has licensed several applications in the ecosystem.
- Each installation includes at least one repository for every application used by the tenant associated with that installation, and this relationship may hold true for all tenants that are available at present and/or will be present at a time in the future.
- one database e.g., one NoSQL database
- the node 506 may be a physical node or backed by a virtual machine or the like. If new capacity is needed, it is possible to add a new node and begin creating new repositories for new tenants, replicating a repository to a new database, etc., e.g. if the data or traffic of one tenant cannot be handled by a single node any longer.
- Tenant B has its own repositories and can be run on the same node 506 as Tenant A.
- a client application 508 (which may in certain example embodiments be a server-side application, a remote client application, and/or the like) tries to download or upload a document to the web application or service 502 , an attempt is made to retrieve the document from a specific application that the corresponding tenant has licensed. In this regard, the web application or service 502 attempts to determine where the document might be found or might need to be stored.
- certain information is gathered. This may include, for example, the tenant ID of the user the request comes from, in addition to already-available information including the application type or acronym, the repository type (e.g., permanent or temporary), and the user token itself.
- the tenant ID for example, can be retrieved from the user management system 510 .
- the location where the database and the search engine run and retrieve the information from may be obtained from the registry service 512 .
- This information may be provided by a provisioning tool 514 , which helps provide these settings, as new instances are created.
- the information that is provided may include, for example, an absolute or relative path in a file system, a URL, a GUID, a UUID, and/or the like.
- the provisioning tool 514 may in certain example embodiments alternative or additionally be used to set up and maintain the entire environment (or at least parts thereof), e.g., to startup new database instances, register tenants, etc.
- the web application or service 502 tries to connect to exactly that specific repository at the database node 506 that was retrieved from the registry service 512 . It also determines if the repository has already been created and is available on this node. To achieve this, a request is made to the database and a check as to whether the repository exists is made (e.g., in decision block 514 ). If the repository already exists, it can be retrieved and delivered to the web application or service 502 by requesting it directly, e.g., as indicated by block 516 . With that already-existing repository, the web application or service 502 can store or access the requested document on this database instance.
- decision block 514 determines that the repository does not yet exist, it will be created with the specific ID, e.g., as indicated in block 518 . If the repository is a “permanent” type repository, an index will be created as indicated in block 520 .
- the index may be named with the same or similar pattern already used to create the repository ID. This approach is advantageous in certain example embodiments, e.g., in that it is feasible to connect this index via a changes feed to the corresponding repository, to keep it up-to-date, and to identify it easily when search requests arrive at the application server.
- the newly created repository is then directly available in the application server and can be used for further requests, the initial request now being completed.
- the document can be delivered to or uploaded from the client application 508 , e.g., as appropriate.
- FIG. 6 is a more detailed flowchart showing bootstrapping techniques that may be used in connection with certain example embodiments.
- the FIG. 6 example process starts when the web application or service 502 receives a request from another application.
- the application is designated “app 1 ” and comes from a user that belongs to a specific tenant called “tenant 1 ”.
- the type of the requested document is of type “permanent” storage.
- the web application or service 502 compiles this information in step S 602 using the predefined pattern format and, in this example, the pattern “permanent_app 1 _tenant 1 ” is generated.
- the generated pattern now can be used for a lookup operation.
- step S 604 A determination is made in step S 604 as to whether the repository including all technically related repositories, configurations, index mappings, and/or the like already exists. If the repository already exists, the connection details and so on are delivered to the service layer that is responsible for retrieving and processing the data, e.g., so that the desired information can be operated on.
- Step S 602 states “Compile pattern for lookup for repository and/or search index” and, thus, it will be appreciated that the example techniques discussed herein may be used in connection with looking up a search index.
- step S 606 bootstrapping is triggered in step S 606 , with all of its associated technical implications.
- step S 608 A check is made in step S 608 as to whether the already-compiled repository pattern contains the string “permanent.” All technically related processes that are needed for further operations may also be prepared, e.g., as discussed above. One example could b the lookup or creation of a search index.
- the repository pattern contains the string “permanent”, the actual main repository and the related technical repositories are created in step S 610 .
- one repository is created for the configuration settings of exactly this tenant, and one repository that contains already-computed links for accessing special data via a HTTP client, like a web browser, is created as well.
- the main repository may need to be searchable. This may be expressly specified, or inferred from the presence of the string “permanent” in its ID. For instance, in this example scenario, it might be desirable to be able to search for metadata of all stored documents or files. Similarly, it might be desirable to perform a full-text search for text documents that satisfy specific criteria, like “has to be a file of type PDF or plain text and doesn't exceed the maximum file size for the indexation”, etc. Thus, after creating the index mapping for the full text search, it might be desirable to ensure that metadata also is searchable. These operations for setting up such searches are shown in FIG. 6 in connection with step S 612 .
- step S 614 involves configuring and activating a search plug-in for the search engine.
- the search plug-in may be directly connected to the database in certain example embodiments.
- the plug-in may be correctly configured and connected to the changes feed of the database or, more precisely, connected to the corresponding database instance that is elected to handle the data of the current tenant.
- connection to a changes feed may be a part of the technical preparation for automatic configuration of a searchable repository, and it thus could in some implementations be a further example of the technical needs for an example bootstrapping process.
- step S 616 the repository bundle with the search is enabled in step S 616 . It also now becomes possible to update the information in the registry service with the changes to the assignments of this tenant and prepare the newly created repositories with their initial settings, e.g., as shown in step S 618 .
- the new permanent repository is provided with already stored data and/or is formatted appropriately, e.g., at the time a user of a newly created tenant accesses it. For example, a root folder may be established, and a design documents for the view that will be created on demand may be stored therein.
- a design document can be any document that is required to be able to use the repository such as, for example, a configuration file, JavaScript snippet used to query data comparable to a stored procedure in an RDBMS, etc. After everything needed is created at runtime, this root folder can be created and the design documents for all newly created repositories can be saved thereto.
- Step S 618 then performs the appropriate configuration for the newly created temporary repository. It will be appreciated that the implementation details might be altered in some cases, as between permanent and temporary repositories. For example, as alluded to here, there typically is not a search index for the temporary repository, the number and/or type of design documents may differ, etc.
- step S 622 the information about the requested repository is returned to the service layer of the web application or service 502 to process and send or retrieve the data. Finally, the content is returned to the client application from the web application or service 502 , and the process ends.
- Certain example embodiments are able to react dynamically to newly created tenants and are able to scale horizontally and use available resources very efficiently. That is, certain example embodiments advantageously enable horizontal scaling by making use of additional database instances that may deployed by a provisioning tool or the like, on demand.
- certain example embodiments are not necessarily limited to a fixed number of tenants or repositories and can distribute data (potentially equally) across instances. Indeed, it may be possible in certain example embodiments to directly access the repository for new tenants or new applications that will eventually come into play without taking down the server infrastructure. It follows that the server infrastructure of certain example embodiments is more failsafe and overall availability is improved.
- system, subsystem, service, engine, module, programmed logic circuitry, and the like may be implemented as any suitable combination of software, hardware, firmware, and/or the like.
- storage locations herein may be any suitable combination of disk drive devices, memory locations, solid state drives, CD-ROMs, DVDs, tape backups, storage area network (SAN) systems, and/or any other appropriate tangible non-transitory computer readable storage medium.
- Cloud and/or distributed storage e.g., using file sharing means, for instance, also may be used in certain example embodiments.
- the techniques described herein may be accomplished by having at least one processor execute instructions that may be tangibly stored on a non-transitory computer readable storage medium.
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims (25)
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/198,298 US9270546B2 (en) | 2014-03-05 | 2014-03-05 | Systems and/or methods for on-demand repository bootstrapping at runtime in a scalable, distributed multi-tenant environment |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/198,298 US9270546B2 (en) | 2014-03-05 | 2014-03-05 | Systems and/or methods for on-demand repository bootstrapping at runtime in a scalable, distributed multi-tenant environment |
Publications (2)
Publication Number | Publication Date |
---|---|
US20150254290A1 US20150254290A1 (en) | 2015-09-10 |
US9270546B2 true US9270546B2 (en) | 2016-02-23 |
Family
ID=54017551
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US14/198,298 Active 2034-09-06 US9270546B2 (en) | 2014-03-05 | 2014-03-05 | Systems and/or methods for on-demand repository bootstrapping at runtime in a scalable, distributed multi-tenant environment |
Country Status (1)
Country | Link |
---|---|
US (1) | US9270546B2 (en) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528592B2 (en) * | 2018-01-04 | 2020-01-07 | Sap Se | Database scaling for multi-tenant applications |
WO2020171902A1 (en) * | 2019-02-19 | 2020-08-27 | Oracle International Corporation | Tenant replication bootstrap for a multi-tenant identity cloud service |
US10764273B2 (en) | 2018-06-28 | 2020-09-01 | Oracle International Corporation | Session synchronization across multiple devices in an identity cloud service |
US10798165B2 (en) | 2018-04-02 | 2020-10-06 | Oracle International Corporation | Tenant data comparison for a multi-tenant identity cloud service |
US10931656B2 (en) | 2018-03-27 | 2021-02-23 | Oracle International Corporation | Cross-region trust for a multi-tenant identity cloud service |
US11061929B2 (en) | 2019-02-08 | 2021-07-13 | Oracle International Corporation | Replication of resource type and schema metadata for a multi-tenant identity cloud service |
US11165634B2 (en) | 2018-04-02 | 2021-11-02 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US11258775B2 (en) | 2018-04-04 | 2022-02-22 | Oracle International Corporation | Local write for a multi-tenant identity cloud service |
US11669321B2 (en) | 2019-02-20 | 2023-06-06 | Oracle International Corporation | Automated database upgrade for a multi-tenant identity cloud service |
US12326902B2 (en) | 2021-09-09 | 2025-06-10 | Microsoft Technology Licensing, Llc | Standing query to reactive database |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11100440B1 (en) * | 2014-11-05 | 2021-08-24 | eStack LLC | Just in time inventory process and fulfillment system |
CN111428114B (en) * | 2020-03-27 | 2024-04-09 | 中国工商银行股份有限公司 | Index creation method and device of elastic search engine |
CN115587093A (en) * | 2022-09-29 | 2023-01-10 | 浪潮软件股份有限公司 | A multi-hall tenant dynamic expansion system and its implementation method |
Citations (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044301A1 (en) * | 2003-08-20 | 2005-02-24 | Vasilevsky Alexander David | Method and apparatus for providing virtual computing services |
US20110276963A1 (en) * | 2010-05-04 | 2011-11-10 | Riverbed Technology, Inc. | Virtual Data Storage Devices and Applications Over Wide Area Networks |
US8122055B2 (en) | 2007-04-26 | 2012-02-21 | Microsoft Corporation | Hosted multi-tenant application with per-tenant unshared private databases |
US20120144332A1 (en) * | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Systems and methods for generating a dashboard in a multi-tenant database system environment |
US20120144024A1 (en) * | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Method and system for user session discovery in a multi-tenant environment |
US20120144023A1 (en) * | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Method and system for validating configuration data in a multi-tenant environment |
US20120151568A1 (en) * | 2010-12-13 | 2012-06-14 | International Business Machines Corporation | Method and system for authenticating a rich client to a web or cloud application |
US20120174113A1 (en) * | 2010-12-29 | 2012-07-05 | Michael Pohlmann | Tenant virtualization controller for a multi-tenancy environment |
US8352941B1 (en) * | 2009-06-29 | 2013-01-08 | Emc Corporation | Scalable and secure high-level storage access for cloud computing platforms |
US20130232172A1 (en) * | 2012-03-01 | 2013-09-05 | Salesforce.Com, Inc. | Methods and systems for matching expressions |
US8533155B2 (en) * | 2009-10-30 | 2013-09-10 | Hitachi Data Systems Corporation | Fixed content storage within a partitioned content platform, with replication |
US8560699B1 (en) | 2010-12-28 | 2013-10-15 | Amazon Technologies, Inc. | Enforceable launch configurations |
US20130290960A1 (en) * | 2008-05-02 | 2013-10-31 | Skytap | Multitenant hosted virtual machine infrastructure |
US20130332550A1 (en) * | 2010-06-07 | 2013-12-12 | Salesforce.Com, Inc. | Methods and systems for providing customized domain messages |
US20140012826A1 (en) * | 2012-07-03 | 2014-01-09 | Salesforce.Com, Inc. | Methods and systems for regulating user engagement |
US20140068568A1 (en) * | 2012-09-04 | 2014-03-06 | Salesforce.Com, Inc. | System and method for dynamically debugging data in a multi-tenant database environment |
US20140074973A1 (en) * | 2012-09-07 | 2014-03-13 | Oracle International Corporation | System and method for orchestration of services for use with a cloud computing environment |
US20140075426A1 (en) * | 2012-09-07 | 2014-03-13 | Oracle International Corporation | System and method for dynamic modification of service definition packages with a cloud computing environment |
US20140075412A1 (en) * | 2012-09-07 | 2014-03-13 | Oracle International Corporation | System and method for elasticity management of services with a cloud computing environment |
US20140082033A1 (en) * | 2012-09-14 | 2014-03-20 | Salesforce.Com, Inc. | Methods and systems for managing files in an on-demand system |
US20140101649A1 (en) * | 2012-10-05 | 2014-04-10 | International Business Machines Corporation | Virtual machine based controller and upgrade mechanism |
US8793348B2 (en) * | 2009-09-18 | 2014-07-29 | Group Business Software Ag | Process for installing software application and platform operating system |
US8868582B2 (en) * | 2010-08-23 | 2014-10-21 | Sap Ag | Repository infrastructure for on demand platforms |
US20140324857A1 (en) * | 2013-04-29 | 2014-10-30 | International Business Machines Corporation | Dynamic assignment of business logic based on schema mapping metadata |
US20140351821A1 (en) * | 2013-05-24 | 2014-11-27 | International Business Machines Corporation | Strategic Placement of Jobs for Spatial Elasticity in a High-Performance Computing Environment |
US20140359594A1 (en) * | 2013-06-04 | 2014-12-04 | Sap Ag | Repository layer strategy adaptation for software solution hosting |
US20150012630A1 (en) * | 2013-07-03 | 2015-01-08 | International Business Machines Corporation | Enforcing runtime policies in a networked computing environment |
US20150039650A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Profile-enabled dynamic runtime environment for web application servers |
US9104514B2 (en) * | 2011-01-11 | 2015-08-11 | International Business Machines Corporation | Automated deployment of applications with tenant-isolation requirements |
US20150234651A1 (en) * | 2014-02-20 | 2015-08-20 | International Business Machines Corporation | Managing deployment of application pattern based applications on runtime platforms |
US20150242197A1 (en) * | 2014-02-25 | 2015-08-27 | Red Hat, Inc. | Automatic Installing and Scaling of Application Resources in a Multi-Tenant Platform-as-a-Service (PaaS) System |
US9137172B2 (en) * | 2012-05-02 | 2015-09-15 | Salesforce.Com, Inc. | Managing multiple proxy servers in a multi-tenant application system environment |
-
2014
- 2014-03-05 US US14/198,298 patent/US9270546B2/en active Active
Patent Citations (33)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050044301A1 (en) * | 2003-08-20 | 2005-02-24 | Vasilevsky Alexander David | Method and apparatus for providing virtual computing services |
US8122055B2 (en) | 2007-04-26 | 2012-02-21 | Microsoft Corporation | Hosted multi-tenant application with per-tenant unshared private databases |
US20130290506A1 (en) * | 2008-05-02 | 2013-10-31 | Skytap | Multitenant hosted virtual machine infrastructure |
US20130290960A1 (en) * | 2008-05-02 | 2013-10-31 | Skytap | Multitenant hosted virtual machine infrastructure |
US8352941B1 (en) * | 2009-06-29 | 2013-01-08 | Emc Corporation | Scalable and secure high-level storage access for cloud computing platforms |
US8793348B2 (en) * | 2009-09-18 | 2014-07-29 | Group Business Software Ag | Process for installing software application and platform operating system |
US8533155B2 (en) * | 2009-10-30 | 2013-09-10 | Hitachi Data Systems Corporation | Fixed content storage within a partitioned content platform, with replication |
US20110276963A1 (en) * | 2010-05-04 | 2011-11-10 | Riverbed Technology, Inc. | Virtual Data Storage Devices and Applications Over Wide Area Networks |
US20130332550A1 (en) * | 2010-06-07 | 2013-12-12 | Salesforce.Com, Inc. | Methods and systems for providing customized domain messages |
US8868582B2 (en) * | 2010-08-23 | 2014-10-21 | Sap Ag | Repository infrastructure for on demand platforms |
US20120144023A1 (en) * | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Method and system for validating configuration data in a multi-tenant environment |
US20120144024A1 (en) * | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Method and system for user session discovery in a multi-tenant environment |
US20120144332A1 (en) * | 2010-12-03 | 2012-06-07 | Salesforce.Com, Inc. | Systems and methods for generating a dashboard in a multi-tenant database system environment |
US20120151568A1 (en) * | 2010-12-13 | 2012-06-14 | International Business Machines Corporation | Method and system for authenticating a rich client to a web or cloud application |
US8560699B1 (en) | 2010-12-28 | 2013-10-15 | Amazon Technologies, Inc. | Enforceable launch configurations |
US20120174113A1 (en) * | 2010-12-29 | 2012-07-05 | Michael Pohlmann | Tenant virtualization controller for a multi-tenancy environment |
US9104514B2 (en) * | 2011-01-11 | 2015-08-11 | International Business Machines Corporation | Automated deployment of applications with tenant-isolation requirements |
US20130232172A1 (en) * | 2012-03-01 | 2013-09-05 | Salesforce.Com, Inc. | Methods and systems for matching expressions |
US9137172B2 (en) * | 2012-05-02 | 2015-09-15 | Salesforce.Com, Inc. | Managing multiple proxy servers in a multi-tenant application system environment |
US20140012826A1 (en) * | 2012-07-03 | 2014-01-09 | Salesforce.Com, Inc. | Methods and systems for regulating user engagement |
US20140068568A1 (en) * | 2012-09-04 | 2014-03-06 | Salesforce.Com, Inc. | System and method for dynamically debugging data in a multi-tenant database environment |
US20140075412A1 (en) * | 2012-09-07 | 2014-03-13 | Oracle International Corporation | System and method for elasticity management of services with a cloud computing environment |
US20140075426A1 (en) * | 2012-09-07 | 2014-03-13 | Oracle International Corporation | System and method for dynamic modification of service definition packages with a cloud computing environment |
US20140074973A1 (en) * | 2012-09-07 | 2014-03-13 | Oracle International Corporation | System and method for orchestration of services for use with a cloud computing environment |
US20140082033A1 (en) * | 2012-09-14 | 2014-03-20 | Salesforce.Com, Inc. | Methods and systems for managing files in an on-demand system |
US20140101649A1 (en) * | 2012-10-05 | 2014-04-10 | International Business Machines Corporation | Virtual machine based controller and upgrade mechanism |
US20140324857A1 (en) * | 2013-04-29 | 2014-10-30 | International Business Machines Corporation | Dynamic assignment of business logic based on schema mapping metadata |
US20140351821A1 (en) * | 2013-05-24 | 2014-11-27 | International Business Machines Corporation | Strategic Placement of Jobs for Spatial Elasticity in a High-Performance Computing Environment |
US20140359594A1 (en) * | 2013-06-04 | 2014-12-04 | Sap Ag | Repository layer strategy adaptation for software solution hosting |
US20150012630A1 (en) * | 2013-07-03 | 2015-01-08 | International Business Machines Corporation | Enforcing runtime policies in a networked computing environment |
US20150039650A1 (en) * | 2013-07-31 | 2015-02-05 | International Business Machines Corporation | Profile-enabled dynamic runtime environment for web application servers |
US20150234651A1 (en) * | 2014-02-20 | 2015-08-20 | International Business Machines Corporation | Managing deployment of application pattern based applications on runtime platforms |
US20150242197A1 (en) * | 2014-02-25 | 2015-08-27 | Red Hat, Inc. | Automatic Installing and Scaling of Application Resources in a Multi-Tenant Platform-as-a-Service (PaaS) System |
Non-Patent Citations (4)
Title |
---|
Cabuk, Serdar, et al., "Towards automated security policy enforcement in multi-tenant virtual data centers", Journal of Computer Security, vol. 18, Issue 1, IOS Press, Amsterdam, The Netherlands, Jan. 2010, pp. 89-121. * |
Das, Sudipto et al., "ElasTraS: An Elastic, Scalable, and Self-Managing Transactional Database for the Cloud," ACM Transactions on Database Systems, vol. 38, No. 1, Article 5, Apr. 2013, pp. 5:1-5:45. |
Krebs, Rouven, et al., "Architectural Concerns in Multi-Tenant SaaS Applications", CLOSER 2012, Porto, Portugal, Apr. 18-21, 2012, pp. 426-431. * |
Schiller, Oliver et al., "ProRea-Live Database Migration for Multi-tenant RDBMS with Snapshot Isolation," 16th International Conference on Extending Database Technology, Mar. 19-21, 2013, 12 pp. |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10528592B2 (en) * | 2018-01-04 | 2020-01-07 | Sap Se | Database scaling for multi-tenant applications |
US10931656B2 (en) | 2018-03-27 | 2021-02-23 | Oracle International Corporation | Cross-region trust for a multi-tenant identity cloud service |
US11528262B2 (en) | 2018-03-27 | 2022-12-13 | Oracle International Corporation | Cross-region trust for a multi-tenant identity cloud service |
US11165634B2 (en) | 2018-04-02 | 2021-11-02 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US10798165B2 (en) | 2018-04-02 | 2020-10-06 | Oracle International Corporation | Tenant data comparison for a multi-tenant identity cloud service |
US11652685B2 (en) | 2018-04-02 | 2023-05-16 | Oracle International Corporation | Data replication conflict detection and resolution for a multi-tenant identity cloud service |
US11258775B2 (en) | 2018-04-04 | 2022-02-22 | Oracle International Corporation | Local write for a multi-tenant identity cloud service |
US10764273B2 (en) | 2018-06-28 | 2020-09-01 | Oracle International Corporation | Session synchronization across multiple devices in an identity cloud service |
US11411944B2 (en) | 2018-06-28 | 2022-08-09 | Oracle International Corporation | Session synchronization across multiple devices in an identity cloud service |
US11061929B2 (en) | 2019-02-08 | 2021-07-13 | Oracle International Corporation | Replication of resource type and schema metadata for a multi-tenant identity cloud service |
US11321343B2 (en) | 2019-02-19 | 2022-05-03 | Oracle International Corporation | Tenant replication bootstrap for a multi-tenant identity cloud service |
WO2020171902A1 (en) * | 2019-02-19 | 2020-08-27 | Oracle International Corporation | Tenant replication bootstrap for a multi-tenant identity cloud service |
US11669321B2 (en) | 2019-02-20 | 2023-06-06 | Oracle International Corporation | Automated database upgrade for a multi-tenant identity cloud service |
US12326902B2 (en) | 2021-09-09 | 2025-06-10 | Microsoft Technology Licensing, Llc | Standing query to reactive database |
Also Published As
Publication number | Publication date |
---|---|
US20150254290A1 (en) | 2015-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9270546B2 (en) | Systems and/or methods for on-demand repository bootstrapping at runtime in a scalable, distributed multi-tenant environment | |
US9110899B2 (en) | Multi-tenancy in database namespace | |
US10482080B2 (en) | Exchanging shared containers and adapting tenants in multi-tenancy database systems | |
US10452646B2 (en) | Deploying changes in a multi-tenancy database system | |
US10740315B2 (en) | Transitioning between system sharing types in multi-tenancy database systems | |
US10581676B2 (en) | System and method for providing configuration settings to services in a cloud infrastructure | |
US10929247B2 (en) | Automatic creation of application-centric extended metadata for a storage appliance | |
US9817994B2 (en) | System and method for integrating a database with a service deployed on a cloud platform | |
US9836297B2 (en) | Computer implemented method and system for automatically deploying and versioning scripts in a computing environment | |
US10922303B1 (en) | Early detection of corrupt data partition exports | |
US20170195183A1 (en) | Distributed computing dependency management system | |
US11640378B2 (en) | Archiving objects in a database environment | |
US20160259811A1 (en) | Method and system for metadata synchronization | |
US10169465B2 (en) | Dynamic runtime environment configuration for query applications | |
US10949413B2 (en) | Method and system for supporting data consistency on an active standby database after DML redirection to a primary database | |
US10261996B2 (en) | Content localization using fallback translations | |
US10262046B2 (en) | Profile-enabled dynamic runtime environment for web application servers | |
TW201229795A (en) | Web service patterns for globally distributed service fabric | |
US10503748B1 (en) | ELT management service with publish/subscribe architecture | |
US20140280368A1 (en) | View variants in database schema mapping | |
US10346085B1 (en) | Distributed restore anywhere for directory services | |
US10210228B2 (en) | Federated management of a plurality of metadata storage mechanisms | |
US9904600B2 (en) | Generating initial copy in replication initialization | |
SPS | Sap hana master guide | |
US11659019B2 (en) | Resource mapping during universal resource locator changes in distributed computing systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SOFTWARE AG, GERMANY Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:LEHMANN, MARC;WAGMANN, CHRISTOPH;REEL/FRAME:032358/0932 Effective date: 20140227 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 4 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 8 |
|
AS | Assignment |
Owner name: SOFTWARE GMBH, GERMANY Free format text: CHANGE OF NAME;ASSIGNOR:MOSEL BIDCO AG;REEL/FRAME:069715/0411 Effective date: 20240919 Owner name: MOSEL BIDCO AG, GERMANY Free format text: MERGER;ASSIGNOR:SOFTWARE AG;REEL/FRAME:069715/0235 Effective date: 20240822 |