US20120158795A1 - Entity triggers for materialized view maintenance - Google Patents
Entity triggers for materialized view maintenance Download PDFInfo
- Publication number
- US20120158795A1 US20120158795A1 US13/286,372 US201113286372A US2012158795A1 US 20120158795 A1 US20120158795 A1 US 20120158795A1 US 201113286372 A US201113286372 A US 201113286372A US 2012158795 A1 US2012158795 A1 US 2012158795A1
- Authority
- US
- United States
- Prior art keywords
- local database
- defining
- changes
- materialized view
- triggers
- 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.)
- Abandoned
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR 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/23—Updating
- G06F16/2393—Updating materialised views
Definitions
- the present invention relates generally to databases and, in particular, to mobile database efficiency.
- a mobile device Relative to a server-class computer system, a mobile device has a relatively slow CPU and relatively slow input/output performance (e.g., for reading/writing database files on media cards).
- a mobile device also has a relatively small amount of memory (e.g., RAM), which limits the effectiveness of any kind of in-memory database cache, such as a row cache or page cache.
- Embodiments of the invention include a method comprising defining a mobile business object for a materialized view, defining triggers, within the mobile business object, for changes to a local database affecting the materialized view, and executing a code generator on the mobile business object definition.
- Embodiments of the invention additionally include a computer-readable storage device having computer program logic recorded thereon, execution of which, by a computing device, causes the computing device to perform operations comprising defining a mobile business object for a materialized view, defining triggers, within the mobile business object, for changes to a local database affecting the materialized view, and executing a code generator on the mobile business object definition.
- Embodiments of the invention further include a system comprising a memory configured to store modules comprising a first defining module configured to define a mobile business object for a materialized view, a second defining module configured to define triggers, within the mobile business object, for changes to a local database affecting the materialized view, and an executing module configured to execute a code generator on the mobile business object definition, and one or more processors configured to process the modules.
- modules comprising a first defining module configured to define a mobile business object for a materialized view, a second defining module configured to define triggers, within the mobile business object, for changes to a local database affecting the materialized view, and an executing module configured to execute a code generator on the mobile business object definition, and one or more processors configured to process the modules.
- FIG. 1 is an exemplary enterprise network, in accordance with an embodiment of the present invention.
- FIG. 2 is a flowchart illustrating steps by which such callback handlers can be utilized to implement a materialized view, in accordance with an embodiment of the present invention.
- FIG. 3 is a flowchart illustrating steps by which triggers are defined using an MBO, in accordance with an embodiment of the present invention.
- FIG. 4 depicts an example computer system in which embodiments of the present invention may be implemented.
- modules in this specification and the claims means any combination of hardware or software components for performing the indicated function.
- a module need not be a rigidly defined entity, such that several modules may overlap hardware and software components in functionality.
- a software module may refer to a single line of code within a procedure, the procedure itself being a separate software module.
- One skilled in the relevant arts will understand that the functionality of modules may be defined in accordance with a number of stylistic or performance-optimizing techniques, for example.
- FIG. 1 is an exemplary enterprise network 100 , in accordance with an embodiment of the present invention.
- the enterprise network 100 includes a mobile device 102 , in accordance with a further embodiment of the present invention.
- Mobile device 102 may include, by way of example and not limitation, mobile devices including Java-enabled phones with CLDC 1.1 Java mobile runtime environment such as the B LACKBERRY by R ESEARCH I N M OTION of Waterloo, Ontario, Canada; the A PPLE I P HONE and I P AD by A PPLE C OMPUTER, I NC. of Cupertino, Calif.; Java-enabled phones with the G OOGLE A NDROID operating system by G OOGLE I NC.
- mobile device 102 may also generally be applied to non-mobile devices as well, such as, for example, a personal computer.
- mobile device 102 has a client application 104 installed thereon.
- Client application 104 is able to interface with device inputs and outputs (“I/O”) 106 , such as, for example, a monitor, keypad, or touchscreen display, in accordance with an embodiment of the present invention.
- client application 104 is also able to interface with a local database 108 , which stores a set of data intended for use by client application 104 .
- local database 108 is encrypted by a device-specific encryption key.
- Mobile device 102 is in communication with synchronization server 110 , in accordance with an embodiment of the present invention. Additional mobile devices 112 a - c are similarly in communication with synchronization server 110 , in accordance with a further embodiment of the present invention.
- the various mobile devices can be connected to synchronization server 110 via any one or more communications channels, as would be understood by one skilled in the relevant art.
- connectivity between mobile device 102 and synchronization server 110 may involve, in an exemplary embodiment, communication hops over both a cellular communication network and the Internet.
- the various communication hops may themselves be either public or private networks, and may include components located on the Internet as well as various private intranets.
- Synchronization server 110 sits between the one or more mobile devices 102 and 112 a - c and an Enterprise Information System (“EIS”) 114 , in accordance with an embodiment of the present invention.
- EIS Enterprise Information System
- Synchronization server 110 assists in capturing changes to relevant data made by the EIS 114 and providing the changes to mobile devices 102 and 112 a - c.
- Synchronization server 110 also assists in capturing changes made by the mobile devices 102 and 112 a - c and providing the changes to EIS 114 .
- data available to a mobile device 102 in local database 108 can be synchronized with data from the corresponding data store of EIS 114 , the enterprise data system 116 (or “central database”).
- synchronization server 110 maintains a cache reflecting the data from enterprise data system 116 .
- EIS 114 is connected to synchronization server 110 in order to allow synchronization server 110 to provide the aforementioned data synchronization services, in accordance with an embodiment of the present invention. Communications between EIS 114 and synchronization server 110 can likewise be through any communication channels, as would be understood by one skilled in the relevant art.
- EIS 114 and synchronization server 110 may share a same physical server or distributed server as separate software components therein, or may even be compiled as a single combined application. Therefore, it is understood that synchronization server 110 and EIS 114 may be disposed in a number of different locations within enterprise network 100 , and are shown as separate computing devices in FIG. 1 by way of example, and not limitation.
- EIS 114 further includes, or is otherwise communicatively coupled to, an enterprise data system 116 , in accordance with an embodiment of the present invention.
- data within local database 108 comprises a subset of data from enterprise data system 116 .
- This data may be in for the form of a mobile business object (“MBO”), in accordance with an embodiment of the present invention.
- MBO mobile business object
- An MBO is a business object that can be synchronized between enterprise information system 114 and mobile device 102 . The MBO can be persisted, by storage in local database 108 , in order to allow for access by the mobile device 102 during periods without connectivity to EIS 114 .
- a non-limiting example of MBOs is provided in U.S. patent application Ser. No. 12/503,573, filed on Jul. 15, 2009, Atty. Dkt. No. 1933.0720001, entitled “Metadata Driver Mobile Business Objects,” which is incorporated by reference herein in its entirety.
- Client applications 104 running on mobile device 102 access (read and write) to the local database 108 .
- the local database 108 is accessed by client application 104 via generated classes, where each class (corresponding to the aforementioned MBOs) represents one table, in accordance with an embodiment of the present invention.
- client application 104 Communications between client application 104 and synchronization server 110 may be handled in a number of different ways, as will be recognized by one skilled in the relevant art.
- a communications framework is embedded directly within client application 104 as provided by a code generator or by a developer.
- a helper application may be deployed on mobile device 102 to manage the communications.
- MBOs can be modeled using a publicly available XML based domain-specific language called Applications From XML (“AFX”).
- AFX Applications From XML
- MBOs can be modeled in many different ways, including graphically through the use of visual modeling tools, or textually through the use of domain-specific languages such as AFX. Accordingly, examples presented and discussed herein through the use of AFX are provided by way of example, and not limitation.
- a package definition provides a database definition, defining the name of a local database 108 within mobile device 102 , a database-class definition, and zero or more entity definitions, in accordance with an embodiment of the present invention.
- the database-class definition identifies a class that represents the local database 108 .
- Entity definitions if present, each correspond to an MBO.
- the entity definition in turn defines the name of a class that represents the corresponding MBO.
- Entities are themselves stored within local database 108 , in accordance with an embodiment of the present invention.
- entities are keyed using at least a surrogate key and an alternate key.
- the surrogate key is a key value used by the mobile device 102 to account for the mobile device's inability to access the EIS' 114 key creation process. If the client becomes aware of the EIS 114 key for the entity, this key can be used as an alternate key.
- surrogate keys are provided by synchronization server 110 to mobile device 102 as a batch of keys to be assigned as needed.
- entity definitions include operation definitions for corresponding changes within EIS 114 .
- operation definitions are provided for creating, updating, or deleting data within EIS 114 .
- Entity definitions may also provide named queries, which are predefined queries that can be issued by mobile device 102 against local database 108 , in accordance with an embodiment of the present invention.
- entity definitions may also include definitions indicating that changes made by mobile device 102 can be published to synchronization server 110 , and likewise that changes made by EIS 114 are subscribed to for download to mobile device 102 .
- a non-limiting example object model incorporating the aforementioned elements may therefore read:
- a package “com.example.bank” associated with local database 108 “my-bank” represented by class “MyDatabase” contains a single entity named “Account”. This entity is keyed by a surrogate key, with an alternate key defined by the account ID, which in this instance is the actual unique key used by the backend systems of EIS 114 .
- the Account entity also has several attributes, including the aforementioned surrogate key and account ID, but also a customer ID corresponding to the account and the balance of the account, in accordance with an embodiment of the present invention.
- the Account entity also defines a query “findByCustomer” that allows for a particular Account with the corresponding customer ID to be located and used in an instance of the MBO.
- Account entity defines several operations describing EIS 114 operations for creating, updating, and deleting data corresponding to an entity from within enterprise data system 116 , in accordance with an embodiment of the present invention.
- a code generator is run on the package definition in order to generate code for inclusion in client application 104 .
- This allows a developer of client application 104 to rapidly enable the client application 104 to coordinate the downloading and uploading of changes between mobile device 102 and synchronization server 110 .
- the code generator can also generate code for execution on the synchronization server 110 .
- code client application 104 can utilize generated code derived by the code generator from the package definition to perform certain functions. For example, code generated from the above package generation can be called to resolve the following code sample from client application 104 :
- var accounts Account.findByCustomer(“123”); for (var a in accounts) ⁇ print(“Account: “ + a.accountId + “, balance: “ + a.balance); ⁇
- This code utilizes calls to classes automatically generated by the code generator, in accordance with an embodiment of the present invention.
- the segment Account.findByCustomer(“123”) utilizes the named query “findByCustomer” in order to return matching accounts into the “accounts” variable. Then, for each result “a” in “accounts”, the corresponding account ID and balance can be displayed.
- an end-user may specify selection criteria in a dynamic query, in accordance with an embodiment of the present invention.
- a code generator may specify several options for a developer to choose from in defining the necessary query. For example, the following example code can be customized by a developer to search for accounts matching specific attributes:
- a drop-down menu or other input interface functionality may be provided to the developer in order to customize the attribute and test value used in the above example.
- the data on central database 116 is synchronized with the data in local database 108 through the use of a database synchronization system, such as synchronization server 110 , in accordance with a non-limiting example embodiment of the present invention.
- a database synchronization system such as synchronization server 110
- client application 104 when client application 104 first creates a local database 108 , it sends a subscription request to the server system 114 .
- the server 114 responds by sending, for each database table, a set of rows that need to be inserted into the client's local database. This set of rows may or may not be the same set of rows that would be sent to a different mobile device 112 a - c for a different user.
- the client application inserts these rows one at a time into local database 108 , and maintains table indexes, until all the rows have been inserted.
- the potentially numerous insertions that must be made by client application 104 into local database 108 can overwhelm the resources of mobile device 102 .
- a number of solutions have been considered to alleviate this problem.
- One solution is prepared statement caching. Rather than the client application 104 asking the mobile database software managing local database 108 to parse a SQL “insert” statement every time a row is to be inserted, the parsed statement can be reused. This may potentially reduce the initial download time by 5-10%, for example.
- Another approach is to use long transactions. Since most database systems incur a not insignificant cost for every committed transaction, multiple insert statements can be executed in a single transaction to reduce transaction commit costs as a proportion of the overall download time. Either the complete download can operate as a single transaction, or as a set of transactions each of which is for a batch of inserted rows. As an example, the use of long transactions might improve download performance by a factor of between 3 and 10, although during that shortened download period, the device can still become quite unresponsive.
- a mobile device database 108 stores each table row as a contiguous sequence of bytes, and multiple rows (as many as will fit) are grouped together into fixed length pages (e.g. 1024 bytes). If a SQL “insert” statement is executed with a set of prepared statement parameters, the corresponding sequence of bytes must be constructed from the set of parameter values. If the server knows the expected row representation of the mobile device database, the server can send each row as a preformatted sequence of bytes, reducing the CPU utilization of the mobile device.
- the use of preformatted rows might improve download performance by a factor of 5, although during the shortened download period, the device can still be quite unresponsive, because packing of rows into pages and index maintenance still consumes a lot of CPU time and results in many input/output operations to the storage media on which local database 108 is held.
- the server 114 can be configured to occasionally generate a client database as a file, which is downloaded by each mobile device 102 and 112 a - c when it first subscribes. Simple file download to a mobile device 102 can be quite fast, e.g. a few seconds per megabyte, depending on the speed of the network (or cable) connection between the device and the server. If a database contains a lot of reference data, such as a product catalog, this technique can be particularly effective. However when the set of rows is not the same for each device, then a pregenerated database will not be appropriate. Also if the client database must be encrypted with a device-specific encryption key, then the server will not be able to send to the device an appropriately encrypted database, unless the client first sends its encryption key to the server, which may be considered an unacceptable security risk.
- a mobile device such as mobile device 102
- resources for querying and otherwise working with local database 108 are limited by comparison to the resources of EIS 114 .
- mobile devices are an integral part of many people's work lives, and delivering enterprise-level functionality to them is necessary. This means, for example, finding ways for mobile devices to display a scrollable list of contacts for a large organization having over 10,000 contacts. For even better end-user access of the contact list, supporting incremental search on a contact list of that size compounds the problem even further. Additionally, options can be provided for sorting the list “first, last” or “last, first”, removing several optimization options.
- GUI graphical user interface
- materialized views are used to manage the data set.
- a materialized view is, in accordance with a non-limiting embodiment of the present invention, a database object that contains the results of a query. Additional queries can be run on the materialized view, providing quick access to relevant information from a portion of the database.
- FIG. 2 is a flowchart 200 illustrating steps by which such callback handlers can be utilized to implement a materialized view, in accordance with an embodiment of the present invention.
- the database synchronization system such as, e.g., SUP
- a client application 104 can then register an instance of the callback handler with the database, or with an individual MBO.
- the method starts at step 202 and proceeds to step 204 where a client application 104 registers for a download change callback.
- client application 104 registers for the aforementioned callback handler and provides an implementation of an onImport method, although one of ordinary skill in the relevant art will appreciate that other callback mechanisms can be utilized and are contemplated within the scope of this disclosure.
- the onImport method as implemented by client application 104 , is called to handle a downloaded change at step 206 .
- client application 104 is notified that a change to local database 108 (e.g., create, update, delete) has been received.
- client application 104 is able to take any necessary action to reflect the changes to local database 108 on the materialized view.
- materialized view maintenance can be implemented in a number of ways within the scope of this invention, including re-running the query used to generate the materialized view subsequent to update of local database 108 , or performing incremental updates of the materialized view based on the effect of the downloaded changes. The method then ends at step 210 .
- client application 104 may itself make changes directly to local database 108 , or another client application may do the same. Accounting for this becomes difficult, as each location in the code of client application 104 that makes changes to local database 108 must be extended with code to maintain materialized views.
- the callback handler interface can be extended to capture create/update/delete calls issued by client application 104 , in addition to those issued by downloaded changes. Such callbacks would operate in similar manner to FIG. 2 , but the callback from step 206 would be received for create/update/delete calls issued by client application 104 as well.
- callback handlers are registered with a database class or MBO classes by the client application at runtime, they are not known to the MBO code generator. In this case, it is not possible to guarantee that the materialized views will be maintained. Additionally, materialized views outside of the client application can become problematic, such as during server-side database preparation for the bulk initial download. In that case, the callback handlers are not defined within the deployment unit, and cannot be called.
- Entity triggers are the entity (MBO) analogue to SQL database triggers.
- An entity trigger is defined within the deployment unit (AFX model), as a static operation in a materialized view entity (like a special client-only MBO).
- AFX model deployment unit
- code generation can ensure that triggers are always called at the appropriate times.
- AccountView is defined as a client-only MBO, but it can have extra trigger operations defined.
- FIG. 3 is a flowchart 300 illustrating steps by which triggers are defined using an MBO, in accordance with an embodiment of the present invention.
- the method begins at step 302 and proceeds to step 304 where an MBO is defined for the materialized view.
- an MBO is defined for the materialized view.
- this is the MBO AccountView for the AccountView materialized view.
- the MBO is defined as a client-only MBO so that it is not persisted to EIS 114 .
- an entity trigger is defined for each of create/update/delete, in accordance with an embodiment of the present invention. Using these triggers, it is possible to code a behavior responsive to each type of call that will update the materialized view accordingly.
- the relevant behavior is coded using any one of XScript, C#, Java, or Objective-C, by way of non-limiting example.
- a code generator e.g., AFX code generator
- the functionality can be separated from that of callback handlers, such as user interface refreshing.
- the trigger behavior is coded using XScript
- the code generator can produce equivalent code for the triggers that will execute at both the mobile device 102 and EIS 114 . This is useful, for example, when performing bulk initial download using the aforementioned technique of impersonating the client at server.
- XScript code is deployable on multiple platforms, but end-user developers are able to utilize any language they wish to work with in the code generator.
- the AFX code generator is readily capable of ensuring that entity triggers are called at the appropriate time.
- RBS there is some added complexity. In particular, it is not possible to directly capture when downloaded create/update/delete statements are executed because they are executed by the local database 108 engine, not the MBO layer.
- SUP provides a “ChangeLog” feature, although one of ordinary skill in the art will appreciate that features in other technologies can be similarly utilized.
- the code generator is configured such that if a deployment unit (AFX model) contains entity triggers, then the code generator generates a database class (e.g., “runEntityTriggers”) operation which would retrieve change logs (e.g., “getChangeLogs”) to determine the changed entities. From there, the appropriate entity triggers are directly invoked as appropriate.
- AFX model AFX model
- runEntityTriggers e.g., “runEntityTriggers”
- Derived materialized views are views whose triggers are for create, update and delete operations on other materialized views. These are particularly useful with RBS.
- an after-save trigger for Account would not correctly maintain a letter-count summary view (a view that has one row for each letter of the alphabet, with each row having a letter column and a count column, the count column tracking the number of accounts with a name starting with the corresponding letter of the alphabet), as it would not be able to distinguish create calls from delete calls.
- a trigger is defined against AccountView. Since all changes to AccountView are initiated by the MBO layer (not syncable), it is possible to correctly distinguish create calls from update calls.
- FIG. 4 illustrates an example computer system 400 in which the present invention, or portions thereof, can be implemented as computer-readable code.
- the methods illustrated by flowcharts 200 of FIG. 2 and 300 of FIG. 3 can be implemented in system 400 .
- Various embodiments of the invention are described in terms of this example computer system 400 . After reading this description, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures.
- Computer system 400 includes one or more processors, such as processor 404 .
- Processor 404 can be a special purpose or a general purpose processor.
- Processor 404 is connected to a communication infrastructure 406 (for example, a bus or network).
- Computer system 400 also includes a main memory 408 , preferably random access memory (RAM), and may also include a secondary memory 410 .
- Secondary memory 410 may include, for example, a hard disk drive 412 , a removable storage drive 414 , and/or a memory stick.
- Removable storage drive 414 may comprise a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like.
- the removable storage drive 414 reads from and/or writes to a removable storage unit 418 in a well known manner.
- Removable storage unit 418 may comprise a floppy disk, magnetic tape, optical disk, etc. that is read by and written to by removable storage drive 414 .
- removable storage unit 418 includes a computer usable storage medium having stored therein computer software and/or data.
- secondary memory 410 may include other similar means for allowing computer programs or other instructions to be loaded into computer system 400 .
- Such means may include, for example, a removable storage unit 422 and an interface 420 .
- Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and other removable storage units 422 and interfaces 420 that allow software and data to be transferred from the removable storage unit 422 to computer system 400 .
- Computer system 400 may also include a communications interface 424 .
- Communications interface 424 allows software and data to be transferred between computer system 400 and external devices.
- Communications interface 424 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like.
- Software and data transferred via communications interface 424 are in the form of signals that may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface 424 . These signals are provided to communications interface 424 via a communications path 426 .
- Communications path 426 carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels.
- computer program medium and “computer usable medium” are used to generally refer to media such as removable storage unit 418 , removable storage unit 422 , and a hard disk installed in hard disk drive 412 . Signals carried over communications path 426 can also embody the logic described herein. Computer program medium and computer usable medium can also refer to memories, such as main memory 408 and secondary memory 410 , which can be memory semiconductors (e.g. DRAMs, etc.). These computer program products are means for providing software to computer system 400 .
- Computer programs are stored in main memory 408 and/or secondary memory 410 . Computer programs may also be received via communications interface 424 . Such computer programs, when executed, enable computer system 400 to implement the present invention as discussed herein. In particular, the computer programs, when executed, enable processor 404 to implement the processes of the present invention, such as the steps in the methods illustrated by flowcharts 200 of FIG. 2 and 300 of FIG. 3 , discussed above. Accordingly, such computer programs represent controllers of the computer system 400 . Where the invention is implemented using software, the software may be stored in a computer program product and loaded into computer system 400 using removable storage drive 414 , interface 420 , hard drive 412 or communications interface 424 .
- the invention is also directed to computer program products comprising software stored on any computer useable medium.
- Such software when executed in one or more data processing device, causes a data processing device(s) to operate as described herein.
- Embodiments of the invention employ any computer useable or readable medium, known now or in the future.
- Examples of computer useable mediums include, but are not limited to, primary storage devices (e.g., any type of random access memory), secondary storage devices (e.g., hard drives, floppy disks, CD ROMS, ZIP disks, tapes, magnetic storage devices, optical storage devices, MEMS, nanotechnological storage device, etc.), and communication mediums (e.g., wired and wireless communications networks, local area networks, wide area networks, intranets, etc.).
Abstract
A system, method, and computer program product are provided for implementing materialized views on a mobile device in synchronization with an enterprise information system. Changes to an underlying local database, on which the materialized view is based, may originate from the enterprise system or from the client. A solution needs to account for each of these potential sources of changes, and update the materialized view accordingly.
Description
- The present application is related to co-pending U.S. Provisional Patent Application No. 61,425,554, filed on Dec. 21, 2010 and entitled “Bulk Initial Download of Mobile Databases”, which is incorporated herein by reference in its entirety.
- 1. Field of the Invention
- The present invention relates generally to databases and, in particular, to mobile database efficiency.
- 2. Description of the Background Art
- Relative to a server-class computer system, a mobile device has a relatively slow CPU and relatively slow input/output performance (e.g., for reading/writing database files on media cards). A mobile device also has a relatively small amount of memory (e.g., RAM), which limits the effectiveness of any kind of in-memory database cache, such as a row cache or page cache.
- As a result, the time taken for a mobile device to query and display a large amount of records (e.g., working with a contact list of 10,000+ records) can be excessive. Desired functionality such as incremental search may be too computationally expensive to perform at all on the mobile device.
- Accordingly, what is desired is a mechanism to improve the ability of a resource-limited mobile device to work with local database records.
- Embodiments of the invention include a method comprising defining a mobile business object for a materialized view, defining triggers, within the mobile business object, for changes to a local database affecting the materialized view, and executing a code generator on the mobile business object definition.
- Embodiments of the invention additionally include a computer-readable storage device having computer program logic recorded thereon, execution of which, by a computing device, causes the computing device to perform operations comprising defining a mobile business object for a materialized view, defining triggers, within the mobile business object, for changes to a local database affecting the materialized view, and executing a code generator on the mobile business object definition.
- Embodiments of the invention further include a system comprising a memory configured to store modules comprising a first defining module configured to define a mobile business object for a materialized view, a second defining module configured to define triggers, within the mobile business object, for changes to a local database affecting the materialized view, and an executing module configured to execute a code generator on the mobile business object definition, and one or more processors configured to process the modules.
- Further features and advantages of the invention, as well as the structure and operation of various embodiments of the invention, are described in detail below with reference to the accompanying drawings. It is noted that the invention is not limited to the specific embodiments described herein. Such embodiments are presented herein for illustrative purposes only. Additional embodiments will be apparent to persons skilled in the relevant art(s) based on the teachings contained herein.
- The accompanying drawings, which are incorporated herein and form a part of the specification, illustrate embodiments of the present invention and, together with the description, further serve to explain the principles of the invention and to enable a person skilled in the relevant art to make and use the invention.
-
FIG. 1 is an exemplary enterprise network, in accordance with an embodiment of the present invention. -
FIG. 2 is a flowchart illustrating steps by which such callback handlers can be utilized to implement a materialized view, in accordance with an embodiment of the present invention. -
FIG. 3 is a flowchart illustrating steps by which triggers are defined using an MBO, in accordance with an embodiment of the present invention. -
FIG. 4 depicts an example computer system in which embodiments of the present invention may be implemented. - The present invention will now be described with reference to the accompanying drawings. In the drawings, generally, like reference numbers indicate identical or functionally similar elements. Additionally, generally, the left-most digit(s) of a reference number identifies the drawing in which the reference number first appears.
- The following detailed description of the present invention refers to the accompanying drawings that illustrate exemplary embodiments consistent with this invention. Other embodiments are possible, and modifications can be made to the embodiments within the spirit and scope of the invention. Therefore, the detailed description is not meant to limit the invention. Rather, the scope of the invention is defined by the appended claims.
- It would be apparent to one of skill in the art that the present invention, as described below, can be implemented in many different embodiments of software, hardware, firmware, and/or the entities illustrated in the figures. Any actual software code with the specialized control of hardware to implement the present invention is not limiting of the present invention. Thus, the operational behavior of the present invention will be described with the understanding that modifications and variations of the embodiments are possible, and within the scope and spirit of the present invention.
- Reference to modules in this specification and the claims means any combination of hardware or software components for performing the indicated function. A module need not be a rigidly defined entity, such that several modules may overlap hardware and software components in functionality. For example, a software module may refer to a single line of code within a procedure, the procedure itself being a separate software module. One skilled in the relevant arts will understand that the functionality of modules may be defined in accordance with a number of stylistic or performance-optimizing techniques, for example.
-
FIG. 1 is anexemplary enterprise network 100, in accordance with an embodiment of the present invention. Theenterprise network 100 includes amobile device 102, in accordance with a further embodiment of the present invention.Mobile device 102 may include, by way of example and not limitation, mobile devices including Java-enabled phones with CLDC 1.1 Java mobile runtime environment such as the BLACKBERRY by RESEARCH IN MOTION of Waterloo, Ontario, Canada; the APPLE I PHONE andI PAD by APPLE COMPUTER, INC. of Cupertino, Calif.; Java-enabled phones with the GOOGLE ANDROID operating system by GOOGLE INC. of Mountain View, Calif.; and the WINDOWS PHONE by MICROSOFT CORPORATION of Redmond, Wash. One skilled in the relevant arts will recognize that techniques described herein as applicable tomobile device 102 may also generally be applied to non-mobile devices as well, such as, for example, a personal computer. - In accordance with an embodiment of the present invention,
mobile device 102 has aclient application 104 installed thereon.Client application 104 is able to interface with device inputs and outputs (“I/O”) 106, such as, for example, a monitor, keypad, or touchscreen display, in accordance with an embodiment of the present invention.Client application 104 is also able to interface with alocal database 108, which stores a set of data intended for use byclient application 104. In accordance with an embodiment of the present invention,local database 108 is encrypted by a device-specific encryption key. -
Mobile device 102 is in communication withsynchronization server 110, in accordance with an embodiment of the present invention. Additional mobile devices 112 a-c are similarly in communication withsynchronization server 110, in accordance with a further embodiment of the present invention. The various mobile devices can be connected tosynchronization server 110 via any one or more communications channels, as would be understood by one skilled in the relevant art. For example, connectivity betweenmobile device 102 andsynchronization server 110 may involve, in an exemplary embodiment, communication hops over both a cellular communication network and the Internet. The various communication hops may themselves be either public or private networks, and may include components located on the Internet as well as various private intranets. -
Synchronization server 110 sits between the one or moremobile devices 102 and 112 a-c and an Enterprise Information System (“EIS”) 114, in accordance with an embodiment of the present invention.Synchronization server 110 assists in capturing changes to relevant data made by the EIS 114 and providing the changes tomobile devices 102 and 112 a-c.Synchronization server 110 also assists in capturing changes made by themobile devices 102 and 112 a-c and providing the changes toEIS 114. In this manner, data available to amobile device 102 inlocal database 108 can be synchronized with data from the corresponding data store of EIS 114, the enterprise data system 116 (or “central database”). In accordance with an embodiment of the present invention,synchronization server 110 maintains a cache reflecting the data fromenterprise data system 116. - EIS 114 is connected to
synchronization server 110 in order to allowsynchronization server 110 to provide the aforementioned data synchronization services, in accordance with an embodiment of the present invention. Communications betweenEIS 114 andsynchronization server 110 can likewise be through any communication channels, as would be understood by one skilled in the relevant art. One skilled in the relevant arts will further understand that EIS 114 andsynchronization server 110 may share a same physical server or distributed server as separate software components therein, or may even be compiled as a single combined application. Therefore, it is understood thatsynchronization server 110 and EIS 114 may be disposed in a number of different locations withinenterprise network 100, and are shown as separate computing devices inFIG. 1 by way of example, and not limitation. - As previously noted, EIS 114 further includes, or is otherwise communicatively coupled to, an
enterprise data system 116, in accordance with an embodiment of the present invention. In accordance with a further embodiment of the present invention, data withinlocal database 108 comprises a subset of data fromenterprise data system 116. This data may be in for the form of a mobile business object (“MBO”), in accordance with an embodiment of the present invention. An MBO is a business object that can be synchronized betweenenterprise information system 114 andmobile device 102. The MBO can be persisted, by storage inlocal database 108, in order to allow for access by themobile device 102 during periods without connectivity toEIS 114. A non-limiting example of MBOs is provided in U.S. patent application Ser. No. 12/503,573, filed on Jul. 15, 2009, Atty. Dkt. No. 1933.0720001, entitled “Metadata Driver Mobile Business Objects,” which is incorporated by reference herein in its entirety. -
Client applications 104 running onmobile device 102 access (read and write) to thelocal database 108. Thelocal database 108 is accessed byclient application 104 via generated classes, where each class (corresponding to the aforementioned MBOs) represents one table, in accordance with an embodiment of the present invention. - Communications between
client application 104 andsynchronization server 110 may be handled in a number of different ways, as will be recognized by one skilled in the relevant art. In accordance with an embodiment of the present invention, a communications framework is embedded directly withinclient application 104 as provided by a code generator or by a developer. In accordance with an additional embodiment of the present invention, a helper application may be deployed onmobile device 102 to manage the communications. - In accordance with an embodiment of the present invention, MBOs can be modeled using a publicly available XML based domain-specific language called Applications From XML (“AFX”). One skilled in the relevant arts will recognize that MBOs can be modeled in many different ways, including graphically through the use of visual modeling tools, or textually through the use of domain-specific languages such as AFX. Accordingly, examples presented and discussed herein through the use of AFX are provided by way of example, and not limitation.
- A package definition provides a database definition, defining the name of a
local database 108 withinmobile device 102, a database-class definition, and zero or more entity definitions, in accordance with an embodiment of the present invention. The database-class definition identifies a class that represents thelocal database 108. Entity definitions, if present, each correspond to an MBO. The entity definition in turn defines the name of a class that represents the corresponding MBO. - Entities are themselves stored within
local database 108, in accordance with an embodiment of the present invention. In accordance with a further embodiment of the present invention, entities are keyed using at least a surrogate key and an alternate key. The surrogate key is a key value used by themobile device 102 to account for the mobile device's inability to access the EIS' 114 key creation process. If the client becomes aware of theEIS 114 key for the entity, this key can be used as an alternate key. In accordance with a further embodiment of the present invention, surrogate keys are provided bysynchronization server 110 tomobile device 102 as a batch of keys to be assigned as needed. - In accordance with a further embodiment of the present invention, entity definitions include operation definitions for corresponding changes within
EIS 114. By way of example, and not limitation, operation definitions are provided for creating, updating, or deleting data withinEIS 114. Entity definitions may also provide named queries, which are predefined queries that can be issued bymobile device 102 againstlocal database 108, in accordance with an embodiment of the present invention. In accordance with further embodiments of the present invention, entity definitions may also include definitions indicating that changes made bymobile device 102 can be published tosynchronization server 110, and likewise that changes made byEIS 114 are subscribed to for download tomobile device 102. - A non-limiting example object model incorporating the aforementioned elements may therefore read:
-
<package name=“com.example.bank”> <database name=“my-bank” /> <database-class name=“MyDatabase” /> <entity name=“Account” key=“surrogateKey” alternate- key=“accountId”> <attribute name=“surrogateKey” type=“int” generated=“true” /> <attribute name=“accountId” type=“string” /> <attribute name=“customerId” type=“string” /> <attribute name=“balance” type=“decimal” /> <operation name=“create”> <!-- information describing the EIS operation --> </operation> <operation name=“update”> <!-- information describing the EIS operation --> </operation> <operation name=“delete”> <!-- information describing the EIS operation --> </operation> <query name=“findByCustomer” type=“Account*”> <parameter name=“id” type=“string” /> <sql> select a.* from Account a where a.customerId = :id </sql> </query> <publish /> <subscribe /> </entity> </package> - In the above exemplary object model, a package “com.example.bank” associated with
local database 108 “my-bank” represented by class “MyDatabase” contains a single entity named “Account”. This entity is keyed by a surrogate key, with an alternate key defined by the account ID, which in this instance is the actual unique key used by the backend systems ofEIS 114. - The Account entity also has several attributes, including the aforementioned surrogate key and account ID, but also a customer ID corresponding to the account and the balance of the account, in accordance with an embodiment of the present invention. The Account entity also defines a query “findByCustomer” that allows for a particular Account with the corresponding customer ID to be located and used in an instance of the MBO.
- Additionally, the Account entity defines several
operations describing EIS 114 operations for creating, updating, and deleting data corresponding to an entity from withinenterprise data system 116, in accordance with an embodiment of the present invention. - In accordance with an embodiment of the present invention, a code generator is run on the package definition in order to generate code for inclusion in
client application 104. This allows a developer ofclient application 104 to rapidly enable theclient application 104 to coordinate the downloading and uploading of changes betweenmobile device 102 andsynchronization server 110. In accordance with a further embodiment of the present invention the code generator can also generate code for execution on thesynchronization server 110. - Based on the above exemplary package definition, it is possible to code
client application 104 to utilize generated code derived by the code generator from the package definition to perform certain functions. For example, code generated from the above package generation can be called to resolve the following code sample from client application 104: -
var accounts = Account.findByCustomer(“123”); for (var a in accounts) { print(“Account: “ + a.accountId + “, balance: “ + a.balance); } - This code utilizes calls to classes automatically generated by the code generator, in accordance with an embodiment of the present invention. For example, the segment Account.findByCustomer(“123”) utilizes the named query “findByCustomer” in order to return matching accounts into the “accounts” variable. Then, for each result “a” in “accounts”, the corresponding account ID and balance can be displayed.
- Rather than using the named query findByCustomer, an end-user may specify selection criteria in a dynamic query, in accordance with an embodiment of the present invention. A code generator may specify several options for a developer to choose from in defining the necessary query. For example, the following example code can be customized by a developer to search for accounts matching specific attributes:
-
var attribute = ... // ask the user for an attribute name var testValue = ... // ask the user for a comparison value var query = new Query( ); query.where(AttributeTest.equal(attribute, testValue)); var accounts = Account.findWithQuery(query); for (var a in accounts) { print(“Account: “ + a.accountId + “, balance: “ + a.balance); } - In accordance with an embodiment of the present invention, a drop-down menu or other input interface functionality may be provided to the developer in order to customize the attribute and test value used in the above example.
- The data on
central database 116 is synchronized with the data inlocal database 108 through the use of a database synchronization system, such assynchronization server 110, in accordance with a non-limiting example embodiment of the present invention. For example, whenclient application 104 first creates alocal database 108, it sends a subscription request to theserver system 114. Theserver 114 responds by sending, for each database table, a set of rows that need to be inserted into the client's local database. This set of rows may or may not be the same set of rows that would be sent to a different mobile device 112 a-c for a different user. The client application inserts these rows one at a time intolocal database 108, and maintains table indexes, until all the rows have been inserted. - The potentially numerous insertions that must be made by
client application 104 intolocal database 108 can overwhelm the resources ofmobile device 102. A number of solutions have been considered to alleviate this problem. One solution is prepared statement caching. Rather than theclient application 104 asking the mobile database software managinglocal database 108 to parse a SQL “insert” statement every time a row is to be inserted, the parsed statement can be reused. This may potentially reduce the initial download time by 5-10%, for example. - Another approach is to use long transactions. Since most database systems incur a not insignificant cost for every committed transaction, multiple insert statements can be executed in a single transaction to reduce transaction commit costs as a proportion of the overall download time. Either the complete download can operate as a single transaction, or as a set of transactions each of which is for a batch of inserted rows. As an example, the use of long transactions might improve download performance by a factor of between 3 and 10, although during that shortened download period, the device can still become quite unresponsive.
- An additional approach is to send preformatted rows. Typically, a
mobile device database 108 stores each table row as a contiguous sequence of bytes, and multiple rows (as many as will fit) are grouped together into fixed length pages (e.g. 1024 bytes). If a SQL “insert” statement is executed with a set of prepared statement parameters, the corresponding sequence of bytes must be constructed from the set of parameter values. If the server knows the expected row representation of the mobile device database, the server can send each row as a preformatted sequence of bytes, reducing the CPU utilization of the mobile device. As an example, the use of preformatted rows might improve download performance by a factor of 5, although during the shortened download period, the device can still be quite unresponsive, because packing of rows into pages and index maintenance still consumes a lot of CPU time and results in many input/output operations to the storage media on whichlocal database 108 is held. - Yet another approach is to send pregenerated databases to
mobile device 102. Theserver 114 can be configured to occasionally generate a client database as a file, which is downloaded by eachmobile device 102 and 112 a-c when it first subscribes. Simple file download to amobile device 102 can be quite fast, e.g. a few seconds per megabyte, depending on the speed of the network (or cable) connection between the device and the server. If a database contains a lot of reference data, such as a product catalog, this technique can be particularly effective. However when the set of rows is not the same for each device, then a pregenerated database will not be appropriate. Also if the client database must be encrypted with a device-specific encryption key, then the server will not be able to send to the device an appropriately encrypted database, unless the client first sends its encryption key to the server, which may be considered an unacceptable security risk. - U.S. Provisional Patent Application No. 61,425,554, filed on Dec. 21, 2010 and entitled “Bulk Initial Download of Mobile Databases”, which is incorporated herein by reference in its entirety, describes a further embodiment for impersonating the client to generate a client database file. This file can then be transmitted to the client in a manner that avoids the need for multiple or complicated and resource-intensive queries (e.g., insert statements) executed on the client, and that has been generated to conform to the client's specific requirements.
- On a mobile device, such as
mobile device 102, resources for querying and otherwise working withlocal database 108 are limited by comparison to the resources ofEIS 114. However, mobile devices are an integral part of many people's work lives, and delivering enterprise-level functionality to them is necessary. This means, for example, finding ways for mobile devices to display a scrollable list of contacts for a large organization having over 10,000 contacts. For even better end-user access of the contact list, supporting incremental search on a contact list of that size compounds the problem even further. Additionally, options can be provided for sorting the list “first, last” or “last, first”, removing several optimization options. - In the aforementioned non-limiting example, it turns out that it is not necessary to load all 10,000 contacts initially into the graphical user interface (“GUI”) component (e.g., a list view) responsible for managing the contact list display. Instead, in accordance with an embodiment of the present invention, materialized views are used to manage the data set.
- A materialized view is, in accordance with a non-limiting embodiment of the present invention, a database object that contains the results of a query. Additional queries can be run on the materialized view, providing quick access to relevant information from a portion of the database.
- One of the difficulties of proper implementation of materialized views is maintenance of their data. When data from an underlying source table, from which the materialized view is formed, is updated, the data in the materialized view does not immediately reflect the update. In some cases this is not critical, as the old data can continue to be used for certain operations. In other cases, the materialized view may be updated whenever it is next needed in order to defer costs of the update.
- Prior efforts in improving the performance and usability of materialized views are directed to single system approaches. However, a different approach is needed to implement and maintain materialized views in the Sybase Unwired Platform (“SUP”), for example. Systems that rely on synchronization techniques such as Message-Based Synchronization (“MBS”) or Replication-Based Synchronization (“RBS”) cannot implement materialized views without accounting for the various sources of updates to the data in a materialized view. U.S. patent application Ser. No. 12/813,104, filed on Jun. 10, 2010 and entitled “Message Based Synchronization for Mobile Business Objects”, which is incorporated herein by reference in its entirety, provides further details regarding synchronization techniques.
- V. Implementing Materialized Views with Callback Handlers
- One approach to implementing materialized views on a mobile device, such as
mobile device 102, is through the use of callback handlers.FIG. 2 is aflowchart 200 illustrating steps by which such callback handlers can be utilized to implement a materialized view, in accordance with an embodiment of the present invention. In accordance with a non-limiting embodiment of the present invention, the database synchronization system (such as, e.g., SUP) provides an API defining a callback handler interface. Aclient application 104 can then register an instance of the callback handler with the database, or with an individual MBO. - The method starts at
step 202 and proceeds to step 204 where aclient application 104 registers for a download change callback. In this case,client application 104 registers for the aforementioned callback handler and provides an implementation of an onImport method, although one of ordinary skill in the relevant art will appreciate that other callback mechanisms can be utilized and are contemplated within the scope of this disclosure. The onImport method, as implemented byclient application 104, is called to handle a downloaded change atstep 206. As a result,client application 104 is notified that a change to local database 108 (e.g., create, update, delete) has been received. - At
step 208,client application 104 is able to take any necessary action to reflect the changes tolocal database 108 on the materialized view. One of ordinary skill in the relevant art will appreciate that the materialized view maintenance can be implemented in a number of ways within the scope of this invention, including re-running the query used to generate the materialized view subsequent to update oflocal database 108, or performing incremental updates of the materialized view based on the effect of the downloaded changes. The method then ends atstep 210. - While this approach is sufficient to implement and maintain a materialized view given downloaded changes, it does not maintain materialized views given changes to the
local database 108 for other reasons. For example,client application 104 may itself make changes directly tolocal database 108, or another client application may do the same. Accounting for this becomes difficult, as each location in the code ofclient application 104 that makes changes tolocal database 108 must be extended with code to maintain materialized views. - Rather than rewriting significant portions of the code of
client application 104, the callback handler interface can be extended to capture create/update/delete calls issued byclient application 104, in addition to those issued by downloaded changes. Such callbacks would operate in similar manner toFIG. 2 , but the callback fromstep 206 would be received for create/update/delete calls issued byclient application 104 as well. - Since callback handlers are registered with a database class or MBO classes by the client application at runtime, they are not known to the MBO code generator. In this case, it is not possible to guarantee that the materialized views will be maintained. Additionally, materialized views outside of the client application can become problematic, such as during server-side database preparation for the bulk initial download. In that case, the callback handlers are not defined within the deployment unit, and cannot be called.
- VI. Implementing Materialized Views with Entity Triggers
- In accordance with a further embodiment of the present invention, materialized views are implemented through the use of entity triggers. Entity triggers are the entity (MBO) analogue to SQL database triggers. An entity trigger is defined within the deployment unit (AFX model), as a static operation in a materialized view entity (like a special client-only MBO). Thus, code generation can ensure that triggers are always called at the appropriate times.
- By way of non-limiting example, suppose an Account MBO has been defined, and an AccountView materialized view needs to be defined. In accordance with this example, AccountView is defined as a client-only MBO, but it can have extra trigger operations defined.
-
<entity name=“AccountView” key=“id”> <attribute name=“id” type=“long” /> <attribute name=“name” type=“string” /> <operation name=“onBulkDownload” static=“true” bulk- create=“true”> <code> var accounts = Account.findAll( ); for (var account in accounts) { onCreateAccount(account); } </code> </operation> <operation name=“onCreateAccount” static=“true” after- create=“true”> <parameter name=“account” type=“Account” /> <code> var av = new AccountView ({ id : account.surrogateKey, name : account.firstName + “ ” + account.lastName, }); av.create( ); </code> </operation> <operation name=“onUpdateAccount” static=“true” after- update=“true”> <parameter name=“account” type=“Account” /> <code> var av = AccountView.load(account.surrogateKey); av.id = account.id; av.name = account.firstName + “ ” + account.lastName, av.update( ); </code> </operation> <operation name=“onDeleteAccount” static=“true” after- delete=“true”> <parameter name=“account” type=“Account” /> <code> var av = AccountView.load(account.surrogateKey); av.delete( ); </code> </operation> </entity> -
FIG. 3 is aflowchart 300 illustrating steps by which triggers are defined using an MBO, in accordance with an embodiment of the present invention. The method begins atstep 302 and proceeds to step 304 where an MBO is defined for the materialized view. In the above example, this is the MBO AccountView for the AccountView materialized view. In accordance with an embodiment of the present invention, the MBO is defined as a client-only MBO so that it is not persisted toEIS 114. - At
step 306, an entity trigger is defined for each of create/update/delete, in accordance with an embodiment of the present invention. Using these triggers, it is possible to code a behavior responsive to each type of call that will update the materialized view accordingly. In accordance with an embodiment of the present invention, the relevant behavior is coded using any one of XScript, C#, Java, or Objective-C, by way of non-limiting example. A code generator (e.g., AFX code generator) is then run on the MBO definition, and the method ends atstep 310. - By providing materialized view maintenance in entity triggers, the functionality can be separated from that of callback handlers, such as user interface refreshing. Additionally, if the trigger behavior is coded using XScript, the code generator can produce equivalent code for the triggers that will execute at both the
mobile device 102 andEIS 114. This is useful, for example, when performing bulk initial download using the aforementioned technique of impersonating the client at server. Additionally, XScript code is deployable on multiple platforms, but end-user developers are able to utilize any language they wish to work with in the code generator. - For MBS, the AFX code generator is readily capable of ensuring that entity triggers are called at the appropriate time. For RBS, there is some added complexity. In particular, it is not possible to directly capture when downloaded create/update/delete statements are executed because they are executed by the
local database 108 engine, not the MBO layer. - In accordance with an embodiment of the present invention, SUP provides a “ChangeLog” feature, although one of ordinary skill in the art will appreciate that features in other technologies can be similarly utilized. In this case, the code generator is configured such that if a deployment unit (AFX model) contains entity triggers, then the code generator generates a database class (e.g., “runEntityTriggers”) operation which would retrieve change logs (e.g., “getChangeLogs”) to determine the changed entities. From there, the appropriate entity triggers are directly invoked as appropriate.
- In the case of SUP, the “ChangeLog” API cannot distinguish downloaded creates from updates (rather, all that can be seen are “upserts” and deletes). In such a situation, an extra kind of trigger after-save is introduced in accordance with an additional embodiment of the present invention. Furthermore, the technique of relying on change logs may not be atomic, and may be inadvertently repeated in a failure scenario. Therefore, in accordance with a further embodiment of the present invention, a delete trigger is programmed not to fail if the source MBO instance no longer exists. Exemplary, non-limiting code implementing these features is provided by way of illustration:
-
<entity name=“AccountView” key=“id”> ... <operation name=“onSaveAccount” static=“true” after- save=“true”> <parameter name=“account” type=“Account” /> <code> var av = AccountView.find(account.surrogateKey); if (av == null) { av = new AccountView( ); } av.id = account.id; av.name = account.firstName + “ ” + account.lastName, av.save( ); // create or update </code> </operation> <operation name=“onDeleteAccount” static=“true” after- delete=“true”> <parameter name=“account” type=“Account” /> <code> var av = AccountView.find(account.surrogateKey); if (av != null) { av.delete( ); } </code> </operation> ... </entity> - In accordance with a further embodiment of the present invention, it is also possible to implement derived materialized views. Derived materialized views are views whose triggers are for create, update and delete operations on other materialized views. These are particularly useful with RBS. In the case of RBS, an after-save trigger for Account would not correctly maintain a letter-count summary view (a view that has one row for each letter of the alphabet, with each row having a letter column and a count column, the count column tracking the number of accounts with a name starting with the corresponding letter of the alphabet), as it would not be able to distinguish create calls from delete calls. Instead, in accordance with an embodiment of the present invention, a trigger is defined against AccountView. Since all changes to AccountView are initiated by the MBO layer (not syncable), it is possible to correctly distinguish create calls from update calls.
- Various aspects of the present invention can be implemented by software, firmware, hardware, or a combination thereof.
FIG. 4 illustrates anexample computer system 400 in which the present invention, or portions thereof, can be implemented as computer-readable code. For example, the methods illustrated byflowcharts 200 ofFIG. 2 and 300 ofFIG. 3 , can be implemented insystem 400. Various embodiments of the invention are described in terms of thisexample computer system 400. After reading this description, it will become apparent to a person skilled in the relevant art how to implement the invention using other computer systems and/or computer architectures. -
Computer system 400 includes one or more processors, such asprocessor 404.Processor 404 can be a special purpose or a general purpose processor.Processor 404 is connected to a communication infrastructure 406 (for example, a bus or network). -
Computer system 400 also includes amain memory 408, preferably random access memory (RAM), and may also include asecondary memory 410.Secondary memory 410 may include, for example, ahard disk drive 412, aremovable storage drive 414, and/or a memory stick.Removable storage drive 414 may comprise a floppy disk drive, a magnetic tape drive, an optical disk drive, a flash memory, or the like. Theremovable storage drive 414 reads from and/or writes to aremovable storage unit 418 in a well known manner.Removable storage unit 418 may comprise a floppy disk, magnetic tape, optical disk, etc. that is read by and written to byremovable storage drive 414. As will be appreciated by persons skilled in the relevant art(s),removable storage unit 418 includes a computer usable storage medium having stored therein computer software and/or data. - In alternative implementations,
secondary memory 410 may include other similar means for allowing computer programs or other instructions to be loaded intocomputer system 400. Such means may include, for example, aremovable storage unit 422 and aninterface 420. Examples of such means may include a program cartridge and cartridge interface (such as that found in video game devices), a removable memory chip (such as an EPROM, or PROM) and associated socket, and otherremovable storage units 422 andinterfaces 420 that allow software and data to be transferred from theremovable storage unit 422 tocomputer system 400. -
Computer system 400 may also include a communications interface 424. Communications interface 424 allows software and data to be transferred betweencomputer system 400 and external devices. Communications interface 424 may include a modem, a network interface (such as an Ethernet card), a communications port, a PCMCIA slot and card, or the like. Software and data transferred via communications interface 424 are in the form of signals that may be electronic, electromagnetic, optical, or other signals capable of being received by communications interface 424. These signals are provided to communications interface 424 via acommunications path 426.Communications path 426 carries signals and may be implemented using wire or cable, fiber optics, a phone line, a cellular phone link, an RF link or other communications channels. - In this document, the terms “computer program medium” and “computer usable medium” are used to generally refer to media such as
removable storage unit 418,removable storage unit 422, and a hard disk installed inhard disk drive 412. Signals carried overcommunications path 426 can also embody the logic described herein. Computer program medium and computer usable medium can also refer to memories, such asmain memory 408 andsecondary memory 410, which can be memory semiconductors (e.g. DRAMs, etc.). These computer program products are means for providing software tocomputer system 400. - Computer programs (also called computer control logic) are stored in
main memory 408 and/orsecondary memory 410. Computer programs may also be received via communications interface 424. Such computer programs, when executed, enablecomputer system 400 to implement the present invention as discussed herein. In particular, the computer programs, when executed, enableprocessor 404 to implement the processes of the present invention, such as the steps in the methods illustrated byflowcharts 200 ofFIG. 2 and 300 ofFIG. 3 , discussed above. Accordingly, such computer programs represent controllers of thecomputer system 400. Where the invention is implemented using software, the software may be stored in a computer program product and loaded intocomputer system 400 usingremovable storage drive 414,interface 420,hard drive 412 or communications interface 424. - The invention is also directed to computer program products comprising software stored on any computer useable medium. Such software, when executed in one or more data processing device, causes a data processing device(s) to operate as described herein. Embodiments of the invention employ any computer useable or readable medium, known now or in the future. Examples of computer useable mediums include, but are not limited to, primary storage devices (e.g., any type of random access memory), secondary storage devices (e.g., hard drives, floppy disks, CD ROMS, ZIP disks, tapes, magnetic storage devices, optical storage devices, MEMS, nanotechnological storage device, etc.), and communication mediums (e.g., wired and wireless communications networks, local area networks, wide area networks, intranets, etc.).
- While various embodiments of the present invention have been described above, it should be understood that they have been presented by way of example only, and not limitation. It will be understood by those skilled in the relevant art(s) that various changes in form and details may be made therein without departing from the spirit and scope of the invention as defined in the appended claims. It should be understood that the invention is not limited to these examples. The invention is applicable to any elements operating as described herein. Accordingly, the breadth and scope of the present invention should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.
Claims (18)
1. A method comprising:
defining a mobile business object for a materialized view;
defining triggers, within the mobile business object, for changes to a local database affecting the materialized view; and
executing a code generator on the mobile business object definition.
2. The method of claim 1 , wherein the changes to the local database comprise at least one of a create, update, or delete call.
3. The method of claim 1 , wherein the changes to the local database comprise a bulk initial download.
4. The method of claim 1 , further comprising:
writing platform-specific code for the triggers to maintain the materialized view.
5. The method of claim 1 , wherein the changes to the local database comprise a download, and wherein defining triggers comprises defining a trigger activated upon saving the download to the local database.
6. The method of claim 1 , wherein defining triggers comprises defining a trigger for a delete call configured to not fail if a source MBO for the delete call is not present.
7. A computer-readable storage device having computer program logic recorded thereon, execution of which, by a computing device, causes the computing device to perform operations comprising:
defining a mobile business object for a materialized view;
defining triggers, within the mobile business object, for changes to a local database affecting the materialized view; and
executing a code generator on the mobile business object definition.
8. The computer-readable storage device of claim 7 , wherein the changes to the local database comprise at least one of a create, update, or delete call.
9. The computer-readable storage device of claim 7 , wherein the changes to the local database comprise a bulk initial download.
10. The computer-readable storage device of claim 7 , the operations further comprising:
writing platform-specific code for the triggers to maintain the materialized view.
11. The computer-readable storage device of claim 7 , wherein the changes to the local database comprise a download, and wherein defining triggers comprises defining a trigger activated upon saving the download to the local database.
12. The computer-readable storage device of claim 7 , wherein defining triggers comprises defining a trigger for a delete call configured to not fail if a source MBO for the delete call is not present.
13. A system comprising:
a memory configured to store modules comprising:
a first defining module configured to define a mobile business object for a materialized view,
a second defining module configured to define triggers, within the mobile business object, for changes to a local database affecting the materialized view, and
an executing module configured to execute a code generator on the mobile business object definition; and
one or more processors configured to process the modules.
14. The system of claim 13 , wherein the changes to the local database comprise at least one of a create, update, or delete call.
15. The system of claim 13 , wherein the changes to the local database comprise a bulk initial download.
16. The system of claim 13 , further comprising:
a writing module configured to write platform-specific code for the triggers to maintain the materialized view.
17. The system of claim 13 , wherein the changes to the local database comprise a download, and wherein defining triggers comprises defining a trigger activated upon saving the download to the local database.
18. The system of claim 13 , wherein defining triggers comprises defining a trigger for a delete call configured to not fail if a source MBO for the delete call is not present.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/286,372 US20120158795A1 (en) | 2010-12-21 | 2011-11-01 | Entity triggers for materialized view maintenance |
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201061425554P | 2010-12-21 | 2010-12-21 | |
US13/286,372 US20120158795A1 (en) | 2010-12-21 | 2011-11-01 | Entity triggers for materialized view maintenance |
Publications (1)
Publication Number | Publication Date |
---|---|
US20120158795A1 true US20120158795A1 (en) | 2012-06-21 |
Family
ID=46235807
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/275,589 Active 2032-06-03 US10102242B2 (en) | 2010-12-21 | 2011-10-18 | Bulk initial download of mobile databases |
US13/286,372 Abandoned US20120158795A1 (en) | 2010-12-21 | 2011-11-01 | Entity triggers for materialized view maintenance |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US13/275,589 Active 2032-06-03 US10102242B2 (en) | 2010-12-21 | 2011-10-18 | Bulk initial download of mobile databases |
Country Status (4)
Country | Link |
---|---|
US (2) | US10102242B2 (en) |
EP (1) | EP2656248B1 (en) |
CN (1) | CN103370704B (en) |
WO (1) | WO2012087751A1 (en) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161383A1 (en) * | 2009-12-30 | 2011-06-30 | Sybase, Inc. | Message based mobile object with native pim integration |
US8874682B2 (en) | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
US8892569B2 (en) | 2010-12-23 | 2014-11-18 | Ianywhere Solutions, Inc. | Indexing spatial data with a quadtree index having cost-based query decomposition |
WO2015043391A1 (en) * | 2013-09-30 | 2015-04-02 | Tencent Technology (Shenzhen) Company Limited | Data synchronization for remote and local databases |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
US9336291B2 (en) | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US20160267293A1 (en) * | 2013-10-29 | 2016-09-15 | Hewlett Packard Enterprise Development Lp | Validating a Query Execution |
US10037364B1 (en) * | 2014-12-04 | 2018-07-31 | Fmr Llc | User interface portlet data cascade actuator apparatuses, methods and systems |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US10394805B2 (en) * | 2016-06-28 | 2019-08-27 | Sap Se | Database management for mobile devices |
US11243956B1 (en) * | 2019-07-10 | 2022-02-08 | Amazon Technologies, Inc. | Enforcing foreign key constraints for efficient materialized view updates |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8635373B1 (en) * | 2012-09-22 | 2014-01-21 | Nest Labs, Inc. | Subscription-Notification mechanisms for synchronization of distributed states |
US9058503B2 (en) | 2013-05-10 | 2015-06-16 | Successfactors, Inc. | Systems and methods for secure storage on a mobile device |
US20150142855A1 (en) * | 2013-11-15 | 2015-05-21 | Paul Fast | Mobile database initialization and update for offline consumption |
US10063665B2 (en) | 2015-02-18 | 2018-08-28 | Actmobile Networks, Inc. | System and method to eliminate duplicate byte patterns in network streams |
CN106713463A (en) * | 2016-12-27 | 2017-05-24 | 浪潮软件集团有限公司 | High-performance cross-network data transmission and import method |
US20180219836A1 (en) * | 2017-01-30 | 2018-08-02 | Ryan Peterson | Distributed Data System |
CN108574722B (en) * | 2017-10-12 | 2021-12-10 | 视联动力信息技术股份有限公司 | Resource synchronization method, device and system |
CN112749146B (en) * | 2019-10-31 | 2022-04-08 | 北京新唐思创教育科技有限公司 | Data processing method, device, functional assembly and computer storage medium |
CN111427970A (en) * | 2020-03-20 | 2020-07-17 | 杭州有赞科技有限公司 | Data preprocessing and downloading method, system, computer equipment and readable storage medium |
CN114625433A (en) * | 2020-11-27 | 2022-06-14 | 北京字跳网络技术有限公司 | Application program starting method and system |
Citations (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020060246A1 (en) * | 2000-11-20 | 2002-05-23 | Gobburu Venkata T. | Method and apparatus for acquiring, maintaining, and using information to be communicated in bar code form with a mobile communications device |
US20030158795A1 (en) * | 2001-12-28 | 2003-08-21 | Kimberly-Clark Worldwide, Inc. | Quality management and intelligent manufacturing with labels and smart tags in event-based product manufacturing |
US6636846B1 (en) * | 2000-04-28 | 2003-10-21 | International Business Machines Corporation | Method for providing a system maintained materialized functionally dependent column for a database management system |
US20060004794A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Rich application view system and method |
US20060047419A1 (en) * | 2004-09-02 | 2006-03-02 | Diendorf John R | Telematic method and apparatus for managing shipping logistics |
US20060085465A1 (en) * | 2004-10-15 | 2006-04-20 | Oracle International Corporation | Method(s) for updating database object metadata |
US20060112398A1 (en) * | 2004-11-23 | 2006-05-25 | Sybase, Inc. | System and Methodology Providing Service Invocation for Occasionally Connected Computing Devices |
US20060173861A1 (en) * | 2004-12-29 | 2006-08-03 | Bohannon Philip L | Method and apparatus for incremental evaluation of schema-directed XML publishing |
US7130871B2 (en) * | 2002-10-17 | 2006-10-31 | International Business Machines Corporation | Method and apparatus for representing deleted data in a synchronizable database |
US20070064920A1 (en) * | 2005-09-15 | 2007-03-22 | John Ruckart | Systems, methods and computer program products for aggregating contact information |
US20070152047A1 (en) * | 2005-12-30 | 2007-07-05 | Industrial Technology Research Institute | Product managing system and method using rfid technology |
US20070198631A1 (en) * | 2006-02-01 | 2007-08-23 | Joerg Uhlmann | Method and system for data exchange between servers and mobile devices |
US20080155525A1 (en) * | 2006-12-21 | 2008-06-26 | Sybase, Inc. | Synchronization patterns for mobile applications |
US7395446B2 (en) * | 2004-05-03 | 2008-07-01 | Microsoft Corporation | Systems and methods for the implementation of a peer-to-peer rule-based pull autonomous synchronization system |
US20080208919A1 (en) * | 2007-02-22 | 2008-08-28 | Microsoft Corporation | Techniques to cross-synchronize data |
US7512638B2 (en) * | 2003-08-21 | 2009-03-31 | Microsoft Corporation | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system |
US7606838B2 (en) * | 2006-02-22 | 2009-10-20 | Microsoft Corporation | Distributed conflict resolution for replicated databases |
US7620659B2 (en) * | 2007-02-09 | 2009-11-17 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
US7660830B2 (en) * | 2000-04-17 | 2010-02-09 | Avaya Inc. | System for integrating diverse database and maintaining their consistency |
US7778962B2 (en) * | 2004-04-30 | 2010-08-17 | Microsoft Corporation | Client store synchronization through intermediary store change packets |
US7805420B2 (en) * | 2006-11-20 | 2010-09-28 | Microsoft Corporation | Versioning and concurrency control for multiple client access of data |
US8046424B2 (en) * | 2003-08-21 | 2011-10-25 | Microsoft Corporation | Systems and methods for the utilization of metadata for synchronization optimization |
US8166101B2 (en) * | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US8200246B2 (en) * | 2008-06-19 | 2012-06-12 | Microsoft Corporation | Data synchronization for devices supporting direction-based services |
US8218549B2 (en) * | 2007-06-18 | 2012-07-10 | International Business Machines Corporation | Synchronization of message stream in a multi-tier messaging system |
US8238696B2 (en) * | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
Family Cites Families (78)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5765173A (en) * | 1996-01-11 | 1998-06-09 | Connected Corporation | High performance backup via selective file saving which can perform incremental backups and exclude files and uses a changed block signature list |
US5926816A (en) * | 1996-10-09 | 1999-07-20 | Oracle Corporation | Database Synchronizer |
US5999947A (en) * | 1997-05-27 | 1999-12-07 | Arkona, Llc | Distributing database differences corresponding to database change events made to a database table located on a server computer |
US6381241B1 (en) | 1997-09-30 | 2002-04-30 | Wireless Access | Duplicate message detection and mending of garbled messages |
US6697846B1 (en) * | 1998-03-20 | 2004-02-24 | Dataplow, Inc. | Shared file system |
US20030158786A1 (en) | 1999-02-26 | 2003-08-21 | Skyline Software Systems, Inc. | Sending three-dimensional images over a network |
US6636242B2 (en) * | 1999-08-31 | 2003-10-21 | Accenture Llp | View configurer in a presentation services patterns environment |
US6694337B1 (en) * | 2000-10-26 | 2004-02-17 | Intel Corporation | Synchronizing databases |
FR2816153B1 (en) | 2000-10-27 | 2002-12-20 | Canon Kk | METHOD FOR PRE-CHECKING THE DETECTABILITY OF A MARKING SIGNAL |
US7519546B2 (en) | 2001-04-30 | 2009-04-14 | General Electric Company | Maintaining synchronization of information published to multiple subscribers |
US6745209B2 (en) | 2001-08-15 | 2004-06-01 | Iti, Inc. | Synchronization of plural databases in a database replication system |
US10360545B2 (en) * | 2001-12-12 | 2019-07-23 | Guardian Data Storage, Llc | Method and apparatus for accessing secured electronic data off-line |
JP4386732B2 (en) * | 2002-01-08 | 2009-12-16 | セブン ネットワークス, インコーポレイテッド | Mobile network connection architecture |
KR20030072693A (en) | 2002-03-06 | 2003-09-19 | 윤일권 | Method and apparatus for providing network contents between mobile devices subscribed with another telecommunication service systems |
US7551629B2 (en) | 2002-03-28 | 2009-06-23 | Precache, Inc. | Method and apparatus for propagating content filters for a publish-subscribe network |
US6983293B2 (en) | 2002-07-24 | 2006-01-03 | International Business Machines Corporation | Mid-tier-based conflict resolution method and system usable for message synchronization and replication |
AU2003275181A1 (en) | 2002-09-18 | 2004-04-08 | Netezza Corporation | Programmable streaming data processor for database appliance having multiple processing unit groups |
US7386590B2 (en) | 2003-01-03 | 2008-06-10 | Microsoft Corporation | System and method for improved synchronization between a server and a client |
US7366760B2 (en) | 2003-01-03 | 2008-04-29 | Microsoft Corporation | System and method for improved client server communications of email messages |
US20040205770A1 (en) | 2003-02-11 | 2004-10-14 | International Business Machines Corporation | Duplicate message elimination system for a message broker |
US7249132B2 (en) * | 2003-03-05 | 2007-07-24 | Lucent Technologies Inc. | Translation of information between database formats understood by different user equipment components for download of the information from network storage component |
US7536673B2 (en) | 2003-07-22 | 2009-05-19 | Sap Ag | Application business object processing |
US7613835B2 (en) | 2003-09-08 | 2009-11-03 | Sony Corporation | Generic API for synchronization |
US20050055698A1 (en) | 2003-09-10 | 2005-03-10 | Sap Aktiengesellschaft | Server-driven data synchronization method and system |
KR100516504B1 (en) * | 2003-09-30 | 2005-09-26 | (주)잉카엔트웍스 | A method of synchronizing data between contents providers and a portable device via network and a system thereof |
EP1562099A1 (en) * | 2004-02-09 | 2005-08-10 | SAP Aktiengesellschaft | Method and computer system for document encryption |
US7945569B2 (en) | 2004-03-31 | 2011-05-17 | Hewlett-Packard Development Company, L.P. | Method and apparatus for querying spatial data |
US7251722B2 (en) | 2004-05-11 | 2007-07-31 | Mistletoe Technologies, Inc. | Semantic processor storage server architecture |
US7970823B2 (en) | 2004-09-02 | 2011-06-28 | Broadway Technology, Llc | System for sharing data objects among applications |
EP1812848A4 (en) | 2004-09-15 | 2009-04-29 | Adesso Systems Inc | System and method for managing data in a distributed computer system |
KR20060066627A (en) * | 2004-12-13 | 2006-06-16 | 엘지전자 주식회사 | Method and apparatus for writing and using keys for encrypting/decrypting a content and a recording medium storing keys written by the method |
US8037056B2 (en) | 2005-02-18 | 2011-10-11 | International Business Machines Corporation | Online repair of a replicated table |
US7523110B2 (en) | 2005-03-03 | 2009-04-21 | Gravic, Inc. | High availability designated winner data replication |
US8443083B2 (en) | 2005-05-04 | 2013-05-14 | Qualcomm Incorporated | Arbitration of resources at a wireless device among contending applications |
US20070073808A1 (en) | 2005-09-23 | 2007-03-29 | Alan Berrey | Mobile messaging system |
US20070083467A1 (en) * | 2005-10-10 | 2007-04-12 | Apple Computer, Inc. | Partial encryption techniques for media data |
CN1956449B (en) * | 2005-10-28 | 2011-05-18 | 北京书生国际信息技术有限公司 | Encipher transmission method and equipment system for preventing copying data resource |
US20070260628A1 (en) * | 2006-05-02 | 2007-11-08 | Tele Atlas North America, Inc. | System and method for providing a virtual database environment and generating digital map information |
KR20060060629A (en) | 2006-03-17 | 2006-06-05 | 이승재 | Data store and search method for mobile communication terminal |
US7756829B2 (en) | 2006-04-18 | 2010-07-13 | Sandeep Bhanote | Method and apparatus for mobile data collection and management |
US20070271275A1 (en) | 2006-05-05 | 2007-11-22 | Fassette Anthony M | Database management function provider systems |
CN101155022A (en) | 2006-09-30 | 2008-04-02 | 华为技术有限公司 | Data synchronization method, system and device |
US8195605B2 (en) | 2006-10-27 | 2012-06-05 | Purdue Pharma L.P. | Data cache techniques in support of synchronization of databases in a distributed environment |
US20080120304A1 (en) * | 2006-11-21 | 2008-05-22 | Calio Robert J | Method and system for providing high performance data modification of relational database tables |
US7983249B2 (en) | 2007-01-23 | 2011-07-19 | Oracle America, Inc. | Enterprise web service data to mobile device synchronization |
JP2008181243A (en) * | 2007-01-23 | 2008-08-07 | Hitachi Ltd | Database management system for controlling setting of cache partition region of storage system |
WO2008141427A1 (en) * | 2007-05-17 | 2008-11-27 | Fat Free Mobile Inc. | Method and system for automatically generating web page transcoding instructions |
US8484464B2 (en) * | 2007-06-15 | 2013-07-09 | Research In Motion Limited | Method and devices for providing secure data backup from a mobile communication device to an external computing device |
US9009292B2 (en) | 2007-07-30 | 2015-04-14 | Sybase, Inc. | Context-based data pre-fetching and notification for mobile applications |
US7752165B2 (en) | 2007-08-01 | 2010-07-06 | Sybase, Inc. | Persistent query system for automatic on-demand data subscriptions from mobile devices |
US8204870B2 (en) | 2007-08-03 | 2012-06-19 | Sybase, Inc. | Unwired enterprise platform |
US7831590B2 (en) | 2007-08-31 | 2010-11-09 | Teradata Us, Inc. | Techniques for partitioning indexes |
WO2009032708A2 (en) | 2007-09-04 | 2009-03-12 | Apple Inc. | Protocol for remote user interface for portable media device |
US8037110B2 (en) | 2007-12-27 | 2011-10-11 | Microsoft Corporation | Business data access client for online/offline client use |
US8825815B2 (en) | 2008-01-08 | 2014-09-02 | Amdocs Software Systems Limited | System and method for client synchronization for a communication device |
US20090198722A1 (en) | 2008-01-31 | 2009-08-06 | Stephen Michael Hanson | System and method for deriving the minimum number of bytes required to represent numeric data with different physical representations |
ITMI20080221A1 (en) * | 2008-02-13 | 2009-08-14 | Realest S R L | METHOD FOR THE DISTRIBUTION OF MULTIMEDIA TRACES THROUGH TELEMATIC NETWORKS. |
US8185521B2 (en) | 2008-02-29 | 2012-05-22 | Research In Motion Limited | System and method for presentation of local and remote message search results |
US8023934B2 (en) | 2008-03-28 | 2011-09-20 | Ianywhere Solutions, Inc. | Synchronizing communications and data between mobile devices and servers |
US8812614B2 (en) | 2008-06-05 | 2014-08-19 | Qualcomm Incorporated | Data backup for a mobile computing device |
US7962458B2 (en) | 2008-06-12 | 2011-06-14 | Gravic, Inc. | Method for replicating explicit locks in a data replication engine |
CN101309278B (en) * | 2008-06-27 | 2011-07-06 | 腾讯科技(深圳)有限公司 | Method and system for storing encrypt data on customer |
CA2671606C (en) | 2008-07-09 | 2013-09-24 | Research In Motion Limited | Delivery of email messages in multiple parts |
US9477727B2 (en) | 2008-08-01 | 2016-10-25 | Sybase, Inc. | Abstracting data for use by a mobile device having occasional connectivity |
US8731519B2 (en) * | 2008-09-08 | 2014-05-20 | At&T Mobility Ii Llc | Mobile handset extension to a device |
US8135770B2 (en) | 2008-12-29 | 2012-03-13 | International Business Machines Corporation | Processing recurring events within personal information management clients |
US8542823B1 (en) * | 2009-06-18 | 2013-09-24 | Amazon Technologies, Inc. | Partial file encryption |
JP5463882B2 (en) | 2009-12-01 | 2014-04-09 | ソニー株式会社 | Light emitting device and manufacturing method thereof |
US8868510B2 (en) * | 2009-12-03 | 2014-10-21 | Sybase, Inc. | Managing data storage as an in-memory database in a database management system |
US8364903B2 (en) | 2009-12-22 | 2013-01-29 | Verizon Patent And Licensing Inc. | Field level concurrency and transaction control for out-of-process object caching |
KR101647735B1 (en) | 2009-12-24 | 2016-08-11 | 엘지전자 주식회사 | Mobile terminal and data management method for mobile terminal |
US8321392B2 (en) | 2009-12-30 | 2012-11-27 | Sybase, Inc. | Pending state management for mobile business objects |
US9336291B2 (en) | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US8788458B2 (en) | 2009-12-30 | 2014-07-22 | Sybase, Inc. | Data caching for mobile applications |
US8909662B2 (en) | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
CN101902333B (en) * | 2010-07-20 | 2015-08-19 | 中兴通讯股份有限公司 | The application process of digital copyright management and terminal equipment |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US8892569B2 (en) | 2010-12-23 | 2014-11-18 | Ianywhere Solutions, Inc. | Indexing spatial data with a quadtree index having cost-based query decomposition |
-
2011
- 2011-10-18 US US13/275,589 patent/US10102242B2/en active Active
- 2011-11-01 US US13/286,372 patent/US20120158795A1/en not_active Abandoned
- 2011-12-15 WO PCT/US2011/065197 patent/WO2012087751A1/en active Application Filing
- 2011-12-15 EP EP11851359.7A patent/EP2656248B1/en active Active
- 2011-12-15 CN CN201180061429.6A patent/CN103370704B/en active Active
Patent Citations (28)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660830B2 (en) * | 2000-04-17 | 2010-02-09 | Avaya Inc. | System for integrating diverse database and maintaining their consistency |
US6636846B1 (en) * | 2000-04-28 | 2003-10-21 | International Business Machines Corporation | Method for providing a system maintained materialized functionally dependent column for a database management system |
US20020060246A1 (en) * | 2000-11-20 | 2002-05-23 | Gobburu Venkata T. | Method and apparatus for acquiring, maintaining, and using information to be communicated in bar code form with a mobile communications device |
US20030158795A1 (en) * | 2001-12-28 | 2003-08-21 | Kimberly-Clark Worldwide, Inc. | Quality management and intelligent manufacturing with labels and smart tags in event-based product manufacturing |
US7130871B2 (en) * | 2002-10-17 | 2006-10-31 | International Business Machines Corporation | Method and apparatus for representing deleted data in a synchronizable database |
US8046424B2 (en) * | 2003-08-21 | 2011-10-25 | Microsoft Corporation | Systems and methods for the utilization of metadata for synchronization optimization |
US8238696B2 (en) * | 2003-08-21 | 2012-08-07 | Microsoft Corporation | Systems and methods for the implementation of a digital images schema for organizing units of information manageable by a hardware/software interface system |
US7512638B2 (en) * | 2003-08-21 | 2009-03-31 | Microsoft Corporation | Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system |
US8166101B2 (en) * | 2003-08-21 | 2012-04-24 | Microsoft Corporation | Systems and methods for the implementation of a synchronization schemas for units of information manageable by a hardware/software interface system |
US7778962B2 (en) * | 2004-04-30 | 2010-08-17 | Microsoft Corporation | Client store synchronization through intermediary store change packets |
US7395446B2 (en) * | 2004-05-03 | 2008-07-01 | Microsoft Corporation | Systems and methods for the implementation of a peer-to-peer rule-based pull autonomous synchronization system |
US20060004794A1 (en) * | 2004-06-30 | 2006-01-05 | Microsoft Corporation | Rich application view system and method |
US20060047419A1 (en) * | 2004-09-02 | 2006-03-02 | Diendorf John R | Telematic method and apparatus for managing shipping logistics |
US20060085465A1 (en) * | 2004-10-15 | 2006-04-20 | Oracle International Corporation | Method(s) for updating database object metadata |
US7467389B2 (en) * | 2004-11-23 | 2008-12-16 | Sybase, Inc. | System and methodology providing service invocation for occasionally connected computing devices |
US20060112398A1 (en) * | 2004-11-23 | 2006-05-25 | Sybase, Inc. | System and Methodology Providing Service Invocation for Occasionally Connected Computing Devices |
US20060173861A1 (en) * | 2004-12-29 | 2006-08-03 | Bohannon Philip L | Method and apparatus for incremental evaluation of schema-directed XML publishing |
US20070064920A1 (en) * | 2005-09-15 | 2007-03-22 | John Ruckart | Systems, methods and computer program products for aggregating contact information |
US20070152047A1 (en) * | 2005-12-30 | 2007-07-05 | Industrial Technology Research Institute | Product managing system and method using rfid technology |
US20070198631A1 (en) * | 2006-02-01 | 2007-08-23 | Joerg Uhlmann | Method and system for data exchange between servers and mobile devices |
US7606838B2 (en) * | 2006-02-22 | 2009-10-20 | Microsoft Corporation | Distributed conflict resolution for replicated databases |
US7805420B2 (en) * | 2006-11-20 | 2010-09-28 | Microsoft Corporation | Versioning and concurrency control for multiple client access of data |
US20080155525A1 (en) * | 2006-12-21 | 2008-06-26 | Sybase, Inc. | Synchronization patterns for mobile applications |
US7620659B2 (en) * | 2007-02-09 | 2009-11-17 | Microsoft Corporation | Efficient knowledge representation in data synchronization systems |
US8131670B2 (en) * | 2007-02-22 | 2012-03-06 | Microsoft Corporation | Techniques to cross-synchronize data |
US20080208919A1 (en) * | 2007-02-22 | 2008-08-28 | Microsoft Corporation | Techniques to cross-synchronize data |
US8218549B2 (en) * | 2007-06-18 | 2012-07-10 | International Business Machines Corporation | Synchronization of message stream in a multi-tier messaging system |
US8200246B2 (en) * | 2008-06-19 | 2012-06-12 | Microsoft Corporation | Data synchronization for devices supporting direction-based services |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110161383A1 (en) * | 2009-12-30 | 2011-06-30 | Sybase, Inc. | Message based mobile object with native pim integration |
US8909662B2 (en) | 2009-12-30 | 2014-12-09 | Sybase, Inc. | Message based mobile object with native PIM integration |
US9336291B2 (en) | 2009-12-30 | 2016-05-10 | Sybase, Inc. | Message based synchronization for mobile business objects |
US10102242B2 (en) | 2010-12-21 | 2018-10-16 | Sybase, Inc. | Bulk initial download of mobile databases |
US8892569B2 (en) | 2010-12-23 | 2014-11-18 | Ianywhere Solutions, Inc. | Indexing spatial data with a quadtree index having cost-based query decomposition |
US9110807B2 (en) | 2012-05-23 | 2015-08-18 | Sybase, Inc. | Cache conflict detection |
US8874682B2 (en) | 2012-05-23 | 2014-10-28 | Sybase, Inc. | Composite graph cache management |
CN104519103A (en) * | 2013-09-30 | 2015-04-15 | 腾讯科技(北京)有限公司 | Synchronous network data processing method, server and related system |
WO2015043391A1 (en) * | 2013-09-30 | 2015-04-02 | Tencent Technology (Shenzhen) Company Limited | Data synchronization for remote and local databases |
US20160267293A1 (en) * | 2013-10-29 | 2016-09-15 | Hewlett Packard Enterprise Development Lp | Validating a Query Execution |
US10037364B1 (en) * | 2014-12-04 | 2018-07-31 | Fmr Llc | User interface portlet data cascade actuator apparatuses, methods and systems |
US10394805B2 (en) * | 2016-06-28 | 2019-08-27 | Sap Se | Database management for mobile devices |
US11243956B1 (en) * | 2019-07-10 | 2022-02-08 | Amazon Technologies, Inc. | Enforcing foreign key constraints for efficient materialized view updates |
Also Published As
Publication number | Publication date |
---|---|
EP2656248A4 (en) | 2016-12-14 |
EP2656248B1 (en) | 2020-03-25 |
US20120158828A1 (en) | 2012-06-21 |
US10102242B2 (en) | 2018-10-16 |
CN103370704A (en) | 2013-10-23 |
WO2012087751A1 (en) | 2012-06-28 |
CN103370704B (en) | 2018-06-05 |
EP2656248A1 (en) | 2013-10-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20120158795A1 (en) | Entity triggers for materialized view maintenance | |
CN109144994B (en) | Index updating method, system and related device | |
US10437795B2 (en) | Upgrading systems with changing constraints | |
EP3428811A1 (en) | Database interface agent for a tenant-based upgrade system | |
US8200624B2 (en) | Membership tracking and data eviction in mobile middleware scenarios | |
US8938645B2 (en) | Invalidation of metadata buffers | |
EP2746965B1 (en) | Systems and methods for in-memory database processing | |
US10824968B2 (en) | Transformation of logical data object instances and updates to same between hierarchical node schemas | |
US11256690B2 (en) | Using row value constructor (RVC) based queries to group records of a database for multi-thread execution | |
US9600299B2 (en) | Application object framework | |
CN109492053B (en) | Method and device for accessing data | |
US9886270B2 (en) | Layered business configuration | |
US9171036B2 (en) | Batching heterogeneous database commands | |
CN111488143A (en) | Automatic code generation device and method based on Springboot2 | |
US20090248739A1 (en) | System and Method to Support Runtime Model Extension in an Object Relational Mapping (ORM) System | |
US10467219B2 (en) | Exporting subset of a database | |
CN113268500B (en) | Service processing method and device and electronic equipment | |
US9792342B2 (en) | Copy procedure to reduce downtime for a source system | |
US8423509B2 (en) | System and method for direct switching of data content | |
CN114925084A (en) | Distributed transaction processing method, system, device and readable storage medium | |
JP2024505236A (en) | Data set multiplexer for data processing systems | |
US10503752B2 (en) | Delta replication | |
US11176314B2 (en) | XML schema description code generator | |
US20180173805A1 (en) | Application programming interface for detection and extraction of data changes | |
US8321844B2 (en) | Providing registration of a communication |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: SYBASE, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:IRELAND, EVAN;REEL/FRAME:027154/0082 Effective date: 20111030 |
|
STCB | Information on status: application discontinuation |
Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION |