WO2024196264A1 - Methods and systems for facilitating data store migration - Google Patents
Methods and systems for facilitating data store migration Download PDFInfo
- Publication number
- WO2024196264A1 WO2024196264A1 PCT/NZ2023/050037 NZ2023050037W WO2024196264A1 WO 2024196264 A1 WO2024196264 A1 WO 2024196264A1 NZ 2023050037 W NZ2023050037 W NZ 2023050037W WO 2024196264 A1 WO2024196264 A1 WO 2024196264A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data store
- data
- schema
- application
- interface package
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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/21—Design, administration or maintenance of databases
- G06F16/214—Database migration support
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0604—Improving or facilitating administration, e.g. storage management
- G06F3/0607—Improving or facilitating administration, e.g. storage management by facilitating the process of upgrading existing storage systems, e.g. for improving compatibility between host and storage device
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
Definitions
- Embodiments generally relate to methods, systems, and computer-readable media for facilitating data store migration, and in some embodiments, for facilitating data store schema changes to accommodate read and write applications.
- Some embodiments relate to a method comprising: providing a first data store interface package associated with a first data store, the first data store package comprising a first schema compatible with the structural representation of data in the first data store; importing, by a first application, the first data store interface package; configuring the first application to write to the first data store in accordance with the first data store interface package; determining data to be written to the first data store; writing data to the first data store according to the first schema; importing, by a second application or Application Protocol Interface (API), the first data store interface package; configuring the second application or Application Protocol Interface (API) to read from the first data store in accordance with the first data store interface package; and after data has been written to the first data store, reading data from the first data store according to the first schema.
- API Application Protocol Interface
- Some embodiments relate to a method comprising: determining a first data store interface package associated with a first data store, the first data store package comprising a first schema compatible with the structural representation of data in the first data store; determining data to be written to the first data store; determining first schema and first data store identifier from the first data store interface package; writing data to the first data store according to the first schema; and sending a notification that the data has been written to the first data store to one or more of (i) a data store migration module; (ii) a second application to be configured to read from the first data store; and (iii) an application protocol interface (API) to be configured to facilitate reading from the first data store by a second application.
- API application protocol interface
- Determining a first data store interface package may comprise importing a published version of the first data store interface package or receiving the first data store interface package from the data store migration module.
- the method prior to receiving the first data store package, the method comprises writing data to a second data store according to a second schema.
- Some embodiments relate to a method comprising: a method comprising: determining a first data store interface package associated with a first data store, the first data store package comprising a first schema compatible with the structural representation of data in the first data store; determining first schema and first data store from the first data store interface package; and reading at least a subset of the data from the first data store according to the first schema.
- the method further comprises: receiving a request for the at least a subset of the data from a second application; and providing the at least the subset of data to the second application.
- Determining the first data store interface package may comprise importing a published version of the first data store interface package or receiving the first data store interface package from a data store migration module.
- the method comprises reading data from a second data store according to a second schema.
- Some embodiments relate to a method comprising: determining a first data store interface package associated with the first data store, the first data store package comprising a first schema compatible with the structural representation of data in the first data store, wherein a first application is to be configured to write to the first data store and an application protocol interface, API, is to be configured to facilitate reading from the first data store by a second application; providing the first data store interface package to the first application to cause the first application to write data to the first data store according to the first schema; receiving a notification that the data has been written to the first data store; responsive to receiving the notification, provide the first data store interface package to the API to cause the API to read at least a subset of the data from the first data store according to the first schema.
- Some embodiments relate to a method comprising: determining a first data store interface package associated with the first data store, the first data store package comprising a first schema compatible with the structural representation of data in the first data store, wherein a first application is to be configured to write to the first data store and an application protocol interface, API, is to be configured to facilitate reading from the first data store by a second application; publish the first data store interface package so that it is accessible to the first application and the API; receiving a notification that the data has been written to the first data store; and responsive to receiving the notification, sending a message to the API to configure the API to read data from the first data store according to the first schema based on the published first data store interface package.
- the method may further comprise deploying the first data store.
- the first application prior to providing the first data store interface package to the first application, is configured to write data to a second data store according to a second schema, and the API is configured to read data from the second data store according to a second schema or according to a third schema different from the first and second schema, and wherein the API is configured to continue to read data from the second data store until the first data store interface package is provided to the API.
- the first data store interface package comprises read and write functionality for interfacing with the first data store.
- the first data store interface package comprises a round-trip test to assess consistency of the read and write functionality.
- the first data store may be a table, such as a DynamoDB table.
- Some embodiments relate to a system comprising: one or more processors; and memory comprising computer executable instructions, which when executed by the one or more processors, cause the system to perform any one of the described methods.
- Some embodiments relate to a computer-readable storage medium storing instructions that, when executed by a computer, cause the computer to perform the method of any one of the described methods.
- Figures 1 A to 1C are schematic illustrations is a schematic illustration of an example process of performing schema migration, according to some embodiments.
- Figures 2A to 2C are schematic illustrations of an example process of performing schema migration, according to some embodiments.
- Figure 3 is a block diagram of an example architecture comprising a system configured to perform the process of Figures 2A to 2C, according to some embodiments.
- Figure 4 is a process flow diagram of a method of facilitating database migration, according to some embodiments.
- Figure 5 is a process flow diagram of a method of facilitating database migration, according to some embodiments.
- Figure 6 is a process flow diagram of a method of facilitating database migration, according to some embodiments.
- Embodiments generally relate to methods, systems, and computer-readable media for facilitating data store migration, and in some embodiments, for facilitating data store schema changes to accommodate read and write applications.
- Schema such as database or data store schema relates to how data is organised within the database or data store; that is, the structural representation of data.
- a schema may include logical constraints such as table names, fields, data types and relationships between objects. Data may be written to and/or read from the database or data store in accordance with the schema of the respective database or data store.
- the schema refers to the structural representation of data but not the semantics of the data represented.
- the schema may be enforced by a database management system, such as in SQLbased systems. For example, this may be the approach taken for relational database or data store such as SQL-based databases and data stores.
- a database management system such as in SQLbased systems. For example, this may be the approach taken for relational database or data store such as SQL-based databases and data stores.
- some database management systems only support partial enforcement of schema when data is written and no enforcement when data is read (“Schema-in-Write”), or vice versa (“Schema-on-Read”).
- Schema-in-Write the application writing the data is responsible for structuring the data being stored in the database or data store.
- Schema-on-Read the application reading the data is responsible for structuring the retrieved data from the database or data store. This may be the case for non-relational databases or data stores, No-SQL or ‘document stores’ databases, such as DynamoDB.
- Schema migration may involve changing from a first table or data store having a first schema to a second table or data store having a second schema.
- a first application may be configured to write to a first data store, such as a table, and an Application Programming Interface (API) may be configured to read from the first data store.
- API Application Programming Interface
- the first application and the API may be configured to conform to the first schema of the data store when writing to or reading from the first table.
- the API creates or deploys the second data store (data store #2).
- the second data store may be deployed alongside the first data store (data store #1).
- the first application is still writing to the first data store, and the second application is still configured to read from the first data store. This is because the second data store has not yet been populated with data.
- the API may be tasked with defining the second schema for the second data store.
- the first application is configured to begin writing to the second data store.
- the first application may be modified such that it writes to the data store in a format that matches or conforms to the second schema of the second table.
- the second application is still configured to read from the first data store.
- the first application e.g. its source code
- the first application may be configured to update or change the version label of the data store to be used - e.g, version 1.0.3 is changed to the next major version, 2.0.0.
- the first application e.g. its source code
- the first application may be configured to update or change the version label of the data store to be used, but may also be configured to accommodate the changes to the interface.
- the first application may need to be modified to determine and provide or write the new or additional data according to the second schema.
- the second application is configured to read from the second data store.
- the second application may be modified such that it is accommodated to request and read data in the format of the second schema of the second table. As with the modification of the first application described above, this may involve modifications to the source code of the API. The first table may then be removed.
- This architecture requires the first application to write to a table or data store from which the second application reads. Having writing and reading functionality in two different places can be a source of friction.
- the table schema expected by the first application and the table schema expected by the second application may diverge, and potentially cause problems for the second application in reading from the table or data store.
- To ensure that the expected table schema is consistent or identical across the first application and the second application tends to involve testing that spans both the first and second applications, and can be quite involved.
- change management in terms of performing the process of Figures 1A to 1C to change the table can be complicated and can be particularly impactful for the second application when something goes awry.
- Described embodiments provide an improved process for performing data store or schema migration, such as facilitating changing from a first data store having a first data schema to a second data store having a second (and different) schema.
- the improved process may facilitate data store schema changes accommodating both read and write applications with minimal service interruption, and lessening or removing responsibility for managing schema changes, interface changes and/or database changes and improving or ensuring the first and/or second applications or APIs are operable with the respective data stores. This may involve configuring or causing the applications and/or API to use a data store interface package for interfacing with the data store associated with the data store interface package.
- the data store interface package may enforce schema on read and on write.
- a data store interface package is created or determined for a respective data store.
- the data store interface package may comprise an identifier of the respective data store to which it relates.
- the data store interface package may comprise or define a schema for the respective data store.
- the schema may define how data is to be represented structurally in the data store. For example, the schema may define that there are two data fields to be populated on writing to the data store, and that data in two fields will be returned to an application or API reading from the data store.
- the data store interface package may comprise an interface configured to translate or transform data between interface data representations, compatible with the first application and API, and schema data representation, compatible with the first data store.
- the interface may transform data to be written to the data store from the form received by the application into a form compatible with the data store, and to translate or transform data to be read by an application or API from the form stored in the data store into a form compatible with the application or API.
- the interface may comprise functions and/or type definition, which when incorporated by the applications and/or API facilitate effective interoperability between the application and/or API and the data store.
- An example instance of the type may be:
- An example representation in the data store (in JSON) may be: ⁇
- the data store interface package is associated or coupled to the respective data store to which it relates.
- the data store interface package may be explicitly named or used in a list of dependencies for the application and/or API.
- Each version of the data store interface package is associated with a data store exclusive or unique to that version. This effectively makes explicit the version of the schema to be used when reading from or writing to the data store.
- the data representation within the data store is held or maintained independently from the consumer and producer of the data (for example, the first or second application and/or API). That is, neither the consumer nor the producer owns or is responsible for the data representation within the data store.
- publication of and/or management of the data store interface package is managed by a data store migration module, as discussed in more detail below.
- the data store interface package being independent of both the consumer and producer of the data may be capable of more effectively coordinating across the distinct components of the consumer and producer.
- Figures 2A to 2C illustrate an example process for data store or schema migration which involves changing from a first table or data store having a first schema to a second table or data store having a second schema.
- a first application may be configured to write to a first data store, such as a table, and an Application Programming Interface (API) may be configured to read from the first data store.
- the first application and the API may be configured to conform to the first schema of the data store when writing to or reading from the first table.
- a first data store interface package is published, and a respective first data store, such as a first table, is deployed.
- the first data store interface package may be published and the first data store deployed by a database management engine configured to manage the database.
- the first data store interface package comprises or defines a first schema to be used when writing to and reading from the first data store.
- the first data store interface package may comprise a first data store identifier, and/or a first interface for transforming the data between interface data representations, compatible with the first application and API, and schema data representation, compatible with the first data store.
- the first data store interface package may be associated with or coupled to the first data store.
- the first application imports the data store interface package which informs it of the first schema to be used when writing to the first data store.
- the API imports the data store interface package which informs it of the first schema to be used when reading from the first data store.
- the application and API may be capable of interacting with the data store in the manner specified by the data store interface data package.
- the database management engine may also publish a second data store interface package and deploy a respective second data store.
- the database management engine may be configured to deploy multiple data stores, each with a respective data store interface package including a data store specific schema.
- the database management engine may be configured to publish a data store interface package and deploy a respective data store in response to a trigger from a data store migration module.
- the data store migration module may be configured to determine a suitable time for performing data store or schema migration.
- a second data store interface package is published and a respective second data store deployed.
- the first application is prompted to change from writing to the first data store to writing to the second data store.
- the first application imports the second data store interface package, determines the second schema and the second data store from the second data store interface package, and writes the relevant data to the second data store according to the second schema.
- the API continues to read data from the first data store according to the first schema.
- the API is updated to use the second data store interface package.
- the first application or database management engine may inform the API that the second data store or table has been populated.
- the API then connects to the second data store, and configures itself to read from the second data store according to the second schema, as determined from the second data store interface package.
- FIG. 3 illustrates an example network or architecture 300 comprising a system 302, according to some embodiments.
- the system 302 may be an accounting system or platform for managing accounts associated with a plurality of businesses or organisations.
- the accounting system 302 may be connected to or otherwise access a database 306 configured to store or record data associated with accounting records and financial accounts of the organisations.
- the accounting system 302 may directly access the database 306, or may access the database via communications network 310.
- the system 302 is configured to communicate with one or more financial institutions (e.g., banks) 304 or other third party financial systems, for example, via the communications network 310.
- the system 302 may be configured to receive financial information or banking data, such as financial records and/or financial documents, for example, as may be associated with transactions monitored by the system 302.
- the system 302 may be arranged to receive bank feeds associated with transactions (for example, as may be required to be reconciled by the accounting system 202), and/or invoices or credit notes or receipts associated with transactions to be reconciled from third party entities.
- the system 302 may be configured to access and import the financial information over the communications network 310 through a bank feed or document (such as user- or accountant-created document), or over the communications network 310 via an application Programming interface (API). Accessing the financial information may comprise providing account credentials of the plurality of users to obtain access to the financial information for the plurality of users.
- a bank feed or document such as user- or accountant-created document
- API application Programming interface
- items of information stored in the database 306 may be referred to as objects, and may each be associated with an object id.
- objects examples include organisations, contacts, apps, business type, employees, etc.
- a plurality of servers and/or computing devices 308 associated with the plurality of organisations may be configured to communicate with the accounting platform 304 across the communications network 310 to avail of the accounting services provided by the accounting platform 304.
- a plurality of servers 312 may be configured to provide additional services to the accounting platform 304, for example to enhance or compliment the services provided by the accounting platform to the organisations, which may be customers (including individuals) of the accounting platform 404.
- the servers 310 may be hosted by partners of the accounting platform 304, which may be pre-approved or vetted by the accounting platform 304.
- the system 302 comprises one or more processors 314, program memory 316, and data memory 318.
- the processor(s) 314 may include an integrated electronic circuit that performs the calculations such as a microprocessor, graphic processing unit, for example.
- Memory 316 and 318 may comprise both volatile and non-volatile memory for storing executable program code, and data, respectively.
- Memory 316 comprises program code (for example modules or engines) which when executed by the processor 314, provides the various computational capabilities and functionality of the system 302.
- Memory 318 comprises data accessible to the program code to facilitate the program code in executing its functionality. In some embodiments, any part of the data of data memory 318 may be also or instead stored at a remote location from the system 302, but accessible to the system 302 to allow the system to perform its functionality.
- the system 302 comprises a network interface 320 to facilitate communications with components of the system 302 across the communications network 310.
- the network interface 320 may comprise a combination of network interface hardware and network interface software suitable for establishing, maintaining and facilitating communication over a relevant communication channel.
- the system 304 may be implemented as a distributed system comprising multiple server systems configured to communicate over a network to provide the functionality of the system 302.
- one or more of the program code may be deployed on one or more disparate or remote servers, which may cooperate to provide the functionality of the system 302 described.
- Program memory 316 may comprise one or more builder modules 322.
- the builder module(s) 322 are configured to determine connections or relationships between entities in raw data to facilitate the construction and/or development of a graph data structure (“graph”) 324.
- the raw data may be collated and/or stored in database 306, such as accounting and/or financial information.
- the relationship may represented by an edge of the graph data structure 324 and the entities are represented by vertices interconnected by the edge.
- the edge(s) and/or vertices may be determined directly, or identified, from the raw data.
- the edge(s) and/or vertices may be determined from information already stored in the graph 324, and/or from other external sources.
- the edge(s) and/or vertices may be determined by inference.
- the builder module(s) 204 may comprise an inference engine 326 configured to infer one or more edges and/or vertices based on the raw data, data from the graph 324 and/or other data sources.
- the inference engine 326 may be configured to make inferences about a specific topic or theme.
- one or more builder modules 322 may be configured to determine connections or associations between objects of a first type and objects of a second type.
- the first and second object types may be different object types or the same object types.
- one or more builder modules 322 may be configured to determine connections between organisations and apps being used by the organisations.
- the builder module(s) 322 may request or subscribe to receive application connection data, such as notifications or events indicative of app or API connection or call requests by organisations to connect to avail of services and/or products provided by servers 312 to the organisations using the accounting platform 302.
- the builder module(s) 322 may request or fetch the application connection data, which may be maintained and stored in database 306.
- the builder module(s) 322 and/or the accounting system or platform 302 may be configured to monitor or track activity on the API of the servers 312.
- the builder module(s) 322 and/or accounting system 302 may be configured to track which organisation is making a call to which API (or which service provided by server 312) and when.
- the builder module(s) 322 and/or accounting system 302 may be configured to track when an organisation is making calls to an API of a server 312, how many calls the organisation is making calls to the API of the server 312 and/or how regularly.
- the builder module(s) 322 (or the inference engine 326 of the builder module 322) may determine or infer that a particular organisation has installed a particular app.
- the builder module(s) 322 may determine or infer that a particular organisation has uninstalled a particular app based on a lack of API calls over a period of time.
- one or more builder modules 322 are configured to determine connections, such as entity relationships, between organisations and contacts, and contacts and contacts, such as to determine where the contact entity is the same entity as the organisation entity or another contact entity, or does business with the organisation entity or another contact entity, for example.
- the raw data used by the system 302 may comprise contact and organisation data.
- Each organisation that uses or has an account with the accounting platform may have or maintain a contact list or contact address book.
- the contacts in the contact list may be customers and/or suppliers of the organisation.
- the accounting platform 302 may maintain a contact table comprising details of at least some of the contact lists of organisations that have an account with the accounting platform 302.
- the creation of a new contact entry in a contact list or address book may instigate an instruction (e.g. a streamed event) to be sent to a builder module 322 to create an edge between the organisation and the contact.
- an instruction e.g. a streamed event
- the builder module 322 may be subscribed to receive events indicative of such actions or occurrences.
- the builder module 322 may generate message(s) (for example, an event) for transmitting to a write interface of a graph interface module 328 for mapping the edge and vertices information to relevant table(s) of the graph data structure 324.
- the message comprises information indicative of the edge and the vertex pair.
- fields, such as “attributes” of the edge element may be populated or annotated with an indication of a strength of the determination or inference, contributing evidence, and/or dates/versions of inference.
- the graph interface module 328 may be configured to communicate or cooperate with one or more first application or service modules 330 to provide services, views and/or products, for example to organisations or users of the accounting platform 302.
- the service module(s) 330 may be configured to provide service or views based on or built on information derived from the graph 324.
- a read interface of the graph interface module 328 is configured to receive read and process read requests received from the service module(s) 330 and to provide the required information to the service module(s) 330.
- the first or service application module 330 may be configured to determine data for writing to the database 333, such as a first data store 338, or a second data store 340.
- the first or service application module 330 may determine the data from the graph data structure 324.
- the data may comprise object type correlation data.
- the object type correlation data may comprise a plurality of pairs of objects of a first object type considered to be correlated, such as pairs of applications or “app” considered to be relatively highly correlated with one another.
- the first or service application module 330 may be configured to write to data stores or tables of the database 330 in batches. The write request may conform to the schema associated with the respective data store.
- the first or service application module 330 may be configured to determine or derive information for writing to the first data store (or second data store, or subsequent data stores) according to one or more of the methods described in International (PCT) patent application PCT/NZ2022/050152 entitled “Methods and systems for building and/or using a graph structure”, filed on 24 November 2022, the entire content of which is incorporated herein by reference.
- PCT International
- the second application module 334 may comprise an application (“app”) recommendation module configured to generate recommendations, such as to organisations or users of an accounting platform, as to which apps they may be interested in installing.
- the app recommendation module may be configured to generate recommendations based on data determined from a data store of the database.
- the application recommendation module may be configured to determine that a user has an interest in a particular app, (for example, the user may have installed the particular app, or may be searching for a particular app), and based on the user’s interest in that app, the app recommendation module may request, from the data store (in some embodiments, via API) a list of all (or any) apps linked or associated with that particular app.
- app recommendation module may be configured to determine that a user has an interest in a particular app, (for example, the user may have installed the particular app, or may be searching for a particular app), and based on the user’s interest in that app, the app recommendation module may send a read request to the data store (in some embodiments via the API), for a list of all (or any) apps associated or linked to that particular app.
- the read request may conform to the schema associated with the respective data store.
- the app recommendation module may recommend App 1 to Org Z because the app recommendation module determines that the user associated with Org Z was interested in App 2, and that App 1 and App 2 are associated in the data store.
- the second application module 334 may comprise a business register module.
- the business register module may be configured to provide details of a business register based on data stored in the data store.
- the data may comprise one or more contacts, entity names and/or aliases associated with an entity identifier.
- the association may be “is associated with”, “is the same as”, “works at”, “works for” etc.
- the business register module may be configured to receive a request for organisation or contact details from a user, such as a user of the accounting platform associated with a particular organization.
- the business register module may be configured to send a read request to the data store (in some embodiments via the API), wherein the request conforms to the schema associated with the respective data store.
- the second application module 334 may comprise a correlation module configured to determine correlation data.
- the correlation data may be indicative of a correlation or a level of correlation between a first object of first object type and a second or other object(s) of the first object type.
- the first object type may be organisations, contacts, apps, business type, employees, etc.
- the first object type may be a contact’s business type and the second object type may be an organisation.
- the correlation module may be configured to make recommendations to a user based on the correlation data.
- the correlation module may be configured to send a read request to the data store for correlation data (in some embodiments via the API), wherein the request conforms to the schema associated with the respective data store.
- the correlation module may recommend one or more decorator businesses to the user, on the basis that if the user has recently had some renovation work done, they may be interested in engaging a decorator.
- Program memory may comprise a database management engine 332.
- the database management engine 332 may be configured to manage data stored in database 330.
- the database management engine 332 may comprise a data store migration module 334.
- the data store migration module 334 may be configured to facilitate data store schema changes to accommodate read and write applications.
- the database management engine 332 and/or data store migration module 334 may be configured to generate, publish and/or make available, data store interface packages, such as first data store interface package 342, and second data store interface package 344.
- the data store package(s) 342, 344 may be associated with, coupled to a respective data store 338, 340.
- the data store(s) 338, 340 may be tables, such as DynamoDB tables.
- the data store interface package(s) 342, 344 may comprise read and write functionality for interfacing with the respective data store 338, 340.
- the data store interface package 342, 344 may comprise round-trip test functionality to assess consistency of the read and write functionality.
- round-trip test functionality may comprise computer executable code configured to cause test input data to be written to the associated data store using write functionality of the data store interface package, reading the data from the data store using the read functionality of the data store interface package, and comparing the data written with the data read to determine an assessment of the integrity of the data (e.g. whether values are present and correct, whether the structure is unchanged, etc.); in other words, whether the same data was read as was written.
- FIG. 4 there is shown a process flow of the method 400 of facilitating database schema changes, according to some embodiments.
- the method 400 or at least some of the steps of the method 400, may be implemented by the processor(s) 314 of the system 302 executing code (for example, first application module 330) stored in program memory 316.
- code for example, first application module 330
- a first application module 330 may be configured to write, and/or may write data to a second data store 340, such as a table, according to a second schema. Examples of the first application are discussed in more detail above.
- the first application module 330 determines the first data store interface package 342. For example, the first application module 330 may receive the first data store interface package 342 from the data store migration module 332 or may retrieve or import it from data memory 318, for example, following receipt of a prompt to do so from the data store migration module 342.
- the first application module 330 determines data to write to the first data store 338. For example, the first application module 330 may determine data to be written to the first data store 338 from the graph data structure 324, as discussed above. In some embodiments, the first application module 330 may be configured to determine or derive information for writing to the first data store (or second data store, or subsequent data stores) according to one or more of the methods described in International (PCT) patent application PCT/NZ2022/050152 entitled “Methods and systems for building and/or using a graph structure”, filed on 24 November 2022, the entire content of which is incorporated herein by reference.
- PCT International
- the first application module 330 determines the first schema and the first data store 338 from the first data store interface package 342.
- the first application module 330 may configure itself to write data to the first data store 338 according to the first schema.
- the first application module 330 may import functionality and/or code from the first data store interface package 342 to enable the first application module 330 to write data to the first data store in a manner that is compatible with the first data store.
- the first application module 330 may use an interface defined or provided in the first data store interface package 342 to transform data from an interface representation to a data store representation in accordance with the first schema.
- facilitating a change from a first data store to a second data store does not involve a change in schema.
- both the first and second data store may represent data structurally according to a common or a same schema.
- facilitating a change from a first data store to a second data store does not involve a change in interface.
- both the first and second data store may use the same interface; that is the same functionality to convert or transform between interface data (such as that provided to the interface by the first application, or read by the second application or API) and schema data (such as that stored in the data store).
- facilitating a change from a first data store to a second data store involves a change in schema and/or a change in interface.
- modifications to the first application, second application and/or API may be necessary to accommodate the change. For example, it may be necessary to determine what data is to be provided to the first data store where a change in schema involves the expansion of the scheme to include an additional data field. It may be necessary to provide the data in a different format to accommodate the interface of the data store interface package.
- the first application module 330 writes the data to the first data store 338 according to the first schema.
- the method 500 may be implemented by the processor(s) of the system executing code (for example, the database management engine 331 or data store migration module 332) stored in program memory 316.
- code for example, the database management engine 331 or data store migration module 332
- the data store migration module 332 may determine a first data store interface package 342 associated with a first data store 338.
- the first data store package 342 may comprise a first schema associated with the first data store 338.
- the first data store 338 may be a table, such as DynamoDB table.
- the first data store interface package 342 may comprise read and write functionality for interfacing with the first data store 338, as discussed above.
- the first application module 330 is to be configured to write to the first data store 338 and a second application module 334 is to be configured to read from the first data store 338.
- the first application module 330 is to be configured to write to the first data store and an Application Programming Interface, API, 336 is to be configured to facilitate reading from the first data store 338 by a second application module 334.
- the data store migration module 332 may provide the first data store interface package 342 to the first application module 330 to cause the first application module 330 to write data to the first data store 342 according to the first schema. In other embodiments, the data store migration module 332 may cause the first application module 330 to retrieve or import the first data store interface package 342, for example, from a data memory 318. For example, the data store migration module 332 may publish the first data store interface package 342, and may deploy the first data store 338.
- the second application module 334 or API 336 may have been configured to read from the second data store 340 according to a second or third schema, as discussed below.
- the second application module 334 or API 336 may continue to read from the second data store 340 according to a second or third schema while the first application module 330 populates the first data store 338 with data.
- the data store migration module 332 determines that the data has been written to the first data store 338.
- the data store migration module 332 may receive a notification that the data has been written to the first data store 338, for example, from the first application module 330.
- the data store migration module 332 may provide, or otherwise make accessible (for example, through publication), the first data store interface package 342 to the second application module 334 or API 346 to configure the second application module 334 or API 346 to read data from the first data store 338 according to the first schema.
- the second application module 334 or API 346 may connect to the first data store 338.
- the data store migration module 332 may provide, or otherwise make accessible (for example, through publication), the first data store interface package 342 to the second application module 334 or API 336 before determining that the data has been written to the first data store 338.
- the data store migration module 332 may then provide an instruction or message to the second application module 334 or API 336 to configure itself to read data from the first data store 338 according to the first schema.
- the data store migration module 332 may cause the second application module 334 or API 336 to retrieve or import the first data store interface package 342, for example, from a data memory 318, and may configure itself to read data from the first data store 338 according to the first schema.
- the method 600 or at least some steps of method 600, may be implemented by the processor(s) of the system executing code (for example, API 336 or second application module 334) stored in program memory 316.
- a second application module 334 may read data, such as a subset of data, from the second data store 340. Examples of the second application are discussed in more detail above. In some embodiments, the second application module 334 or API 336 may read the subset of data from the second data store 340 according to the second schema.
- the second application module 334 or API 336 determines the first data store interface package. For example, the second application module 334 or API 336 may receive the first data store interface package 342 from the data store migration module 332 or may retrieve it from data memory 318, for example, following receipt of a prompt to do so from the data store migration module 332.
- the second application module 335 or API 336 determines the first data store 338 and the first schema from the first data store interface package.
- the second application module 335 or API 336 may configure itself to read data from the first data store 338 according to the first schema.
- the second application module 335 or API 336 may import functionality and/or code from the first data store interface package 342 to enable the second application module 335 or API 336 to read data from the first data store in a manner that is compatible with the first data store.
- the second application module 335 or API 336 may use an interface defined or provided in the first data store interface package 342 to transform data from a schema representation to an interface representation in accordance with the first schema.
- the API 336 may receive a request for a subset of data from a requesting application.
- the API 336 or second application module 334 reads the subset of data from the first data store 338 according to the first schema. In the case of the API 336 reading the subset of data, the API 336 may provide the subset of data to the requesting application, at 612.
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Description
Claims
Priority Applications (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| AU2023437442A AU2023437442A1 (en) | 2023-03-23 | 2023-03-23 | Methods and systems for facilitating data store migration |
| PCT/NZ2023/050037 WO2024196264A1 (en) | 2023-03-23 | 2023-03-23 | Methods and systems for facilitating data store migration |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| PCT/NZ2023/050037 WO2024196264A1 (en) | 2023-03-23 | 2023-03-23 | Methods and systems for facilitating data store migration |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| WO2024196264A1 true WO2024196264A1 (en) | 2024-09-26 |
Family
ID=92842023
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| PCT/NZ2023/050037 Pending WO2024196264A1 (en) | 2023-03-23 | 2023-03-23 | Methods and systems for facilitating data store migration |
Country Status (2)
| Country | Link |
|---|---|
| AU (1) | AU2023437442A1 (en) |
| WO (1) | WO2024196264A1 (en) |
Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11016954B1 (en) * | 2017-09-01 | 2021-05-25 | Amazon Technologies, Inc. | Distributed data set extraction for migration |
-
2023
- 2023-03-23 AU AU2023437442A patent/AU2023437442A1/en active Pending
- 2023-03-23 WO PCT/NZ2023/050037 patent/WO2024196264A1/en active Pending
Patent Citations (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11016954B1 (en) * | 2017-09-01 | 2021-05-25 | Amazon Technologies, Inc. | Distributed data set extraction for migration |
Also Published As
| Publication number | Publication date |
|---|---|
| AU2023437442A1 (en) | 2025-10-02 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11341118B2 (en) | Atomic application of multiple updates to a hierarchical data structure | |
| US11847110B2 (en) | Method and system for supporting data consistency on an active standby database after DML redirection to a primary database | |
| US9009292B2 (en) | Context-based data pre-fetching and notification for mobile applications | |
| US7350184B2 (en) | System and method for enterprise application interactions | |
| US7213049B2 (en) | System and method for transaction processing with transaction property feature | |
| US7933296B2 (en) | Services for data sharing and synchronization | |
| US9584949B2 (en) | Cloud based master data management architecture | |
| US20020069192A1 (en) | Modular distributed mobile data applications | |
| US20080208806A1 (en) | Techniques for a web services data access layer | |
| US8060586B2 (en) | Dynamic web service deployment and integration | |
| ZA200600754B (en) | Platform for data services across disperate application frameworks | |
| MX2008011058A (en) | Rss data-processing object. | |
| US20120303692A1 (en) | Federation of master data management systems | |
| US20120150547A1 (en) | Integration of crm applications to ecs application user interface | |
| US20110145322A1 (en) | Remote client management | |
| US20170011128A1 (en) | Dynamic domain query and query translation | |
| US8584140B2 (en) | Systems and methods for receiving and sending messages about changes to data attributes | |
| US8626716B1 (en) | Service broker enhancements | |
| US8893108B1 (en) | Method and system for context-based software updates | |
| US8484204B2 (en) | Dynamic metadata | |
| US7680838B1 (en) | Maintaining data synchronization in a file-sharing environment | |
| US20060271384A1 (en) | Reference data aggregate service population | |
| AU2023437442A1 (en) | Methods and systems for facilitating data store migration | |
| CN117707557B (en) | Management method and system for describing and controlling saas software package installation | |
| US20250335170A1 (en) | Fine grained telemetry sharing |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| 121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 23928908 Country of ref document: EP Kind code of ref document: A1 |
|
| WWE | Wipo information: entry into national phase |
Ref document number: AU2023437442 Country of ref document: AU |
|
| ENP | Entry into the national phase |
Ref document number: 2023437442 Country of ref document: AU Date of ref document: 20230323 Kind code of ref document: A |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 2023928908 Country of ref document: EP |
|
| NENP | Non-entry into the national phase |
Ref country code: DE |
|
| WWE | Wipo information: entry into national phase |
Ref document number: 11202506189V Country of ref document: SG |
|
| WWP | Wipo information: published in national office |
Ref document number: 11202506189V Country of ref document: SG |
|
| ENP | Entry into the national phase |
Ref document number: 2023928908 Country of ref document: EP Effective date: 20251023 |
|
| ENP | Entry into the national phase |
Ref document number: 2023928908 Country of ref document: EP Effective date: 20251023 |
|
| ENP | Entry into the national phase |
Ref document number: 2023928908 Country of ref document: EP Effective date: 20251023 |
|
| ENP | Entry into the national phase |
Ref document number: 2023928908 Country of ref document: EP Effective date: 20251023 |
|
| ENP | Entry into the national phase |
Ref document number: 2023928908 Country of ref document: EP Effective date: 20251023 |