Database migration

Information

  • Patent Grant
  • 10409787
  • Patent Number
    10,409,787
  • Date Filed
    Tuesday, December 22, 2015
    8 years ago
  • Date Issued
    Tuesday, September 10, 2019
    5 years ago
  • CPC
  • Field of Search
    • US
    • 707 809000
    • CPC
    • G06F17/303
    • G06F17/30312
    • G06F17/2705
  • International Classifications
    • G06F17/30
    • G06F7/00
    • G06F16/21
    • G06F17/27
    • G06F16/22
    • Term Extension
      231
Abstract
In one aspect, a method includes migrating a database object from a source database to a target database, updating a storage of the location of the DB object to be the target database, directly accessing one of the target database and the source database during the migrating and executing, during the migrating, a database command by retrieving the DB object from the other one of the target database and the source database.
Description
BACKGROUND

A cloud data base typically runs on a cloud computing platform. A cloud database may be formed using a Database as a Service (DBaaS). The DBaaS is a cloud computing service model that provides users with some form of access to a database (DB) without the need for setting up physical hardware, installing software or configuring for performance. DBaaS allows for DB connectivity without dealing with the DB management. The cloud database may also be generated by being installed on a virtual machine (VM) located in the cloud and requires that a user manage the database.


SUMMARY

In one aspect, a method includes migrating a database object from a source database to a target database, updating a storage of the location of the DB object to be the target database, directly accessing one of the target database and the source database during the migrating and executing, during the migrating, a database command by retrieving the DB object from the other one of the target database and the source database.


In another aspect, an apparatus includes electronic hardware circuitry configured to migrate a database object from a source database to a target database, update a storage of the location of the DB object to be the target database, directly access one of the target database and the source database during the migrating and execute, during the migrating, a database command by retrieving the DB object from the other one of the target database and the source database.


In a further aspect, an article includes a non-transitory computer-readable medium that stores computer-executable instructions. The instructions cause a machine to migrate a database object from a source database to a target database, update a storage of the location of the DB object to be the target database, directly access one of the target database and the source database during the migrating and execute, during the migrating, a database command by retrieving the DB object from the other one of the target database and the source database.





BRIEF DESCRIPTION OF THE DRAWINGS


FIG. 1 is a block diagram of an example of a system to migrate a DB from one database service to another database service, according to an embodiment of the disclosure.



FIG. 2 is a flowchart of an example of a process to migrate a DB from one database service to another database service, according to an embodiment of the disclosure.



FIG. 3 is a flowchart of an example of a process to use a target database after the process in FIG. 2 has initiated, according to an embodiment of the disclosure.



FIG. 4 is a flowchart of an example of a process to move a single table from one database service to another database service, according to an embodiment of the disclosure.



FIG. 5 is a block diagram of an example of a computer on which any portion of the process of FIGS. 2 to 4 may be implemented, according to an embodiment of the disclosure.





DETAILED DESCRIPTION

In one example, a benefit of using database as a service (DBaaS) is automated database (DB) administration, which saves the user time and money, and allows the user to focus on the application without concern about management, scalability and so forth. However, this benefit does come with a disadvantage. In particular, by not having access to the host of the DB and to the administrative tools available for the administrator, the user is not provided a way to do a DB migration, much less online DB migration.


Some regular DBs provide online migration tools, and it is also possible to do such migration on the VM machine, but when using DBaaS, these capabilities are not applicable. Thus, the user cannot migrate to a different cloud provider, and is sometimes forced to live with an inferior and more expensive database service. Cloud providers are not motivated to provide database migration tools to allow a customer to move away from their DBaaS. Described herein are techniques to allow a user to migrate a DB from one database service (e.g., DBaaS) to another database service (e.g., DBaaS).


Referring to FIG. 1, a system 100 is an example of a system to migrate a database from one database service to another database service. In one example, the migration is from a first database service from a first cloud provider to a second database service from a second cloud provider. In other examples, the migration may be between databases services provided by the same cloud provider.


System 100 includes a host 102, a first database service 104a (e.g., DBaaS), and a second database service 104b (e.g., DBaaS). The host 102 includes an application 110 and an abstraction layer 118 (e.g., a database connectivity abstraction layer) that includes a migration module 120. The first database service 104a includes a source database service 136a and the second database 104b includes a target database 136b. Before database migration the source database 136a has the database information (e.g., database objects) and none of the source database 136a has transferred to target database 136b. After database migration, the target database 136b has the data information and there is no data left at source database 136a. During database migration there is some data on the source database 136a and the target database 136b.


The migration module 120 includes DB object location storage 140 that records where DB objects are located (e.g., either the source database 136a or the target database 136b).


A communications link 150 ties the source database 136a to the target database 136b. As will be further described herein either the source database 136a is accessed directly by the abstraction layer 118 or the target database 136b is accessed directly by the abstraction layer 118. However, in either case, during migration, data may be required to be accessed from both locations. The communication link 150 is used to ensure access of the data required regardless of where it is located and regardless of what database (source or target) is accessed directly.


As will be further described herein the migration module 120 intercepts messages (e.g., database commands using SQL, for example) from the application 110. The application 110 does not know that the migration module 120 is actually sending the messages to either a source database 136a or a target database 136b depending on the database migration.


Referring to FIG. 2, a process 200 is an example of a process to migrate a DB from one database service to another database service. Process 200 forms a communications link in the source database (202). For example, the migration module 120 establishes a communication link with the source database 136a.


Process 200 moves DB objects from the source database to the target database (206). For example, the migration module 120 moves database objects from the source database 136a to the target database 136b. In one example, a DB object is a table. In another example, the DB object is a character large object (CLOB).


Process 200 records the location of the DB objects at target database (210). For example, for each DB object that has been moved to the target database 136b, the migration module 120 records in the DB object location storage 140 that the DB object is now in the target database 136b. Thus, when the application 110 sends a database command that relates to a DB object on the target database 136b, the migration module 120, after checking the DB object location storage 140, routes the database command to the target database 136b. Furthermore, when an application 110 views from the source database 136a a DB object that has already been migrated a pointer will be used to point to the target database 136b to view the DB object.


Referring to FIG. 3, a process 300 is an example of a process to use a target database after the process 200 has initiated. For example, process 300 is started after a majority of the DB object have transferred from the source database 136a to the target database 136b. While the process 300 is an example of directly accessing the target database 136b after process 200 has initiated, one of ordinary skill in the art would recognize that the techniques of process 300 may be applied to the example of accessing the source database 136a directly until after the migration is complete.


Process 300 generates a communications link in the target database (303). For example, the communications link 150 is established between the source database 136a and the target database 136b. Process 300 moves DB objects to the target database (310) and records the DB object now at the target database (318). For example, for each DB object that has been moved to the target database 136b, the migration module 120 records in the DB object location storage 140 that the DB object is now in the target database 136b. Thus, when the application 110 sends a database command that relates to a DB object on the target database 136b, the migration module 120, after checking the DB object location storage 140, routes the database command to the target database 136b.


Process 300 establishes remote access to enable access to DB objects at the source database (320). For example, if directly accessing the target base 136b some DB objects may not have migrated to the target database 136b yet. Remote access is used to access the source database through the communications link to access objects at the source database. In one particular example, relational databases use SQL commands, which may use a join command, for example, that involves multiple database tables. That is, the SQL command may include more than one DB object and each DB needs to be directed to the database that includes the DB object. For example, an SQL command will arrive that needs access to tables from the source database 136a and the target database 136b. In one example, an SQL synonym command is used to establish remote access to DB objects at the source database. In one particular example, an Emp(employee) table may be in the source database 136a and Dept(department) table may be in the target database. Then a synonym command is generated such as a command: synonym to emp using the communications link 150 from the target database 136b to the source database 136a. In one particular example, process 300 may be modified so that either the target database or the source database may be accessed directly depending on how many DB objects have been migrated using the DB object location storage 140. In another particular example, process 300 may be modified so that either the target database 136b or the source database 136a may be accessed depending on where the DB objects are for a particular command (e.g., join command). For example, if all or a majority of the DB objects are at the target database, then the target database is accessed.


Referring to FIG. 4, a process 400 is an example of a process to move a single table from one database service to another database service. In particular, process 400 maintains data consistency but there is no downtime for the user waiting for the migration of the database to be completed.


Process 400 moves records of a table from a source database to a target database (404). For example, the migration module 120 move the records from of a table from the source database 136a to the target database 136.


Process 400 keeps updates aside (406). For example, the migration module 120 keeps updates (e.g., changes) to the records and they are not applied to the table at the target database 136b. In one example, the updates are kept at the source database 136a in parallel.


Process 400 move records that have changed (412). For example, the records that have changed are moved to the target database 136b.


Process 400 keeps new updates aside (418). For example, processing block 418 is the same as processing block 422.


Process 400 determines if the number of new updates is smaller than a threshold number (422). If the number of new updates is smaller than a threshold number, then process 400 stops writes to the table (424), move the records that have changed (426) and resumes writes to the table (428).


If the number of new updates is not smaller than a threshold number, then process 400 repeats processing blocks 412, 418 and 422.


In other examples, process 400 may be replaced with a process that will stop writes to the table. For example, the migration module 120, which intercepts command messages (e.g., SQLs), parses the command messages to identify which tables are being written to and holds these command messages from writing to a table being migrated until the migration of the table has completed.


Referring to FIG. 5, in one example, a migration module 120 is a migration module 120′. The migration module 120′ includes a processor 502, a volatile memory 504, a non-volatile memory 506 (e.g., hard disk) and the user interface (UI) 508 (e.g., a graphical user interface, a mouse, a keyboard, a display, touch screen and so forth). The non-volatile memory 506 stores computer instructions 512, an operating system 516 and data 518. In one example, the computer instructions 512 are executed by the processor 502 out of volatile memory 504 to perform all or part of the processes described herein (e.g., processes 200, 300 and 400).


The processes described herein (e.g., process processes 200, 300 and 400) are not limited to use with the hardware and software of FIG. 5; they may find applicability in any computing or processing environment and with any type of machine or set of machines that is capable of running a computer program. The processes described herein may be implemented in hardware, software, or a combination of the two. The processes described herein may be implemented in computer programs executed on programmable computers/machines that each includes a processor, a non-transitory machine-readable medium or other article of manufacture that is readable by the processor (including volatile and non-volatile memory and/or storage elements), at least one input device, and one or more output devices. Program code may be applied to data entered using an input device to perform any of the processes described herein and to generate output information.


The system may be implemented, at least in part, via a computer program product, (e.g., in a non-transitory machine-readable storage medium such as, for example, a non-transitory computer-readable medium), for execution by, or to control the operation of, data processing apparatus (e.g., a programmable processor, a computer, or multiple computers)). Each such program may be implemented in a high level procedural or object-oriented programming language to communicate with a computer system. However, the programs may be implemented in assembly or machine language. The language may be a compiled or an interpreted language and it may be deployed in any form, including as a stand-alone program or as a module, component, subroutine, or other unit suitable for use in a computing environment. A computer program may be deployed to be executed on one computer or on multiple computers at one site or distributed across multiple sites and interconnected by a communication network. A computer program may be stored on a non-transitory machine-readable medium that is readable by a general or special purpose programmable computer for configuring and operating the computer when the non-transitory machine-readable medium is read by the computer to perform the processes described herein. For example, the processes described herein may also be implemented as a non-transitory machine-readable storage medium, configured with a computer program, where upon execution, instructions in the computer program cause the computer to operate in accordance with the processes. A non-transitory machine-readable medium may include but is not limited to a hard drive, compact disc, flash memory, non-volatile memory, volatile memory, magnetic diskette and so forth but does not include a transitory signal per se.


The processes described herein are not limited to the specific examples described. For example, the processes 200, 300 and 400 are not limited to the specific processing order of FIGS. 2 to 4, respectively. Rather, any of the processing blocks of FIGS. 2 to 4 may be re-ordered, combined or removed, performed in parallel or in serial, as necessary, to achieve the results set forth above.


The processing blocks (for example, in the processes 200, 300 and 400) associated with implementing the system may be performed by one or more programmable processors executing one or more computer programs to perform the functions of the system. All or part of the system may be implemented as, special purpose logic circuitry (e.g., an FPGA (field-programmable gate array) and/or an ASIC (application-specific integrated circuit)). All or part of the system may be implemented using electronic hardware circuitry that include electronic devices such as, for example, at least one of a processor, a memory, a programmable logic device or a logic gate.


Elements of different embodiments described herein may be combined to form other embodiments not specifically set forth above. Other embodiments not specifically described herein are also within the scope of the following claims.

Claims
  • 1. A method for migrating a source database to a target database, the method comprising: establishing a communication link, via an abstraction layer of a host computer, between the source database and the target database;migrating, via the abstraction layer, database (DB) objects from the source database to the target database, wherein during the migrating the method further comprises:for each of the DB objects, updating, at the host computer, a storage of the location of the corresponding DB object to be the target database, the location stored in a table;intercepting a database command, by the abstraction layer from an application of the host computer, the abstraction layer transparent to the application;identifying, from the table, in which of the source database and the target database a corresponding DB object subject to the database command resides;directly accessing one of the target database and the source database in which the DB object subject to the database command resides; andexecuting the database command by retrieving the DB object from the one of the target database and the source database.
  • 2. The method of claim 1, wherein at least one of the DB objects is a table, the migrating further comprising: moving records of the table from the source database to the target database; andafter moving the records, moving records that have changed to the target database.
  • 3. The method of claim 2, further comprising keeping the records that have changed aside until the records of the table have moved to the target database.
  • 4. The method of claim 2, further comprising stopping write operations to the table, if a number of record changes is smaller than a threshold number.
  • 5. The method of claim 1, wherein at least one of the database objects is a table, the migrating further comprising stopping write operations to a first table of the database until after the first table has been migrated by parsing writes to the first table.
  • 6. The method of claim 1, further comprising: upon determining, by the host computer, the DB object has already been migrated from the source database to the target database, applying a pointer with respect to the DB object, to point to the target database.
  • 7. The method of claim 1, wherein the database command is a command to access multiple DB objects, the method further comprising: identifying from the table, locations in which the multiple DB objects are stored;determining from the table which of the source database and the target database stores a majority of the multiple DB objects;directly accessing the one of the source database and the target database determined to store the majority of the multiple DB objects; andremotely connecting, via the abstraction layer through one of the source database and the target database determined to store the majority, to the other one of the source database and the target database to access remaining ones of the multiple DB objects.
  • 8. The method of claim 1, wherein the source database resides at a first cloud database service provider and the target database resides at a second cloud database service provider.
  • 9. The method of claim 8, wherein the host computer receives database-as-a-service (DBaaS) services from the first and second cloud database service providers.
  • 10. An apparatus for migrating a source database to a target database, the apparatus comprising: electronic hardware circuitry configured to: establish a communication link, via an abstraction layer of a host computer, between the source database and the target database;migrate, via the abstraction layer, database (DB) objects from the source database to the target database, wherein during migration the electronic hardware circuitry is further configured to:for each of the DB objects, update, at the host computer, a storage of the location of the corresponding DB object to be the target database, the location stored in a table;intercept a database command, by the abstraction layer from an application of the host computer, the abstraction layer transparent to the application;identify, from the table, in which of the source database and the target database a corresponding DB object subject to the database command resides;directly access one of the target database and the source database in which the DB object subject to the database command resides; andexecute the database command by retrieving the DB object from the one of the target database and the source database.
  • 11. The apparatus of claim 10, wherein the circuitry comprises at least one of a processor, a memory, a programmable logic device or a logic gate.
  • 12. The apparatus of claim 10, wherein at least one of the DB objects is a table, the migrating further comprising: moving records of the table from the source database to the target database; andafter moving the records, moving records that have changed to the target database.
  • 13. The apparatus of claim 12, further comprising circuitry configured to keep the records that have changed aside until the records of the table have moved to the target database.
  • 14. The apparatus of claim 12, further comprising circuitry configured to stop write operations to the table, if a number of record changes is smaller than a threshold number.
  • 15. The apparatus of claim 10, wherein at least one of the database objects is a table, the migrating further comprising: stopping write operations to a first table of the database until after the first table has been migrated by parsing writes to the first table.
  • 16. An article for migrating a source database to a target database, the article comprising: a non-transitory computer-readable medium that stores computer-executable instructions, the instructions causing a machine to: establish a communication link, via an abstraction layer of a host computer, between the source database and the target database;migrate, via the abstraction layer, a database (DB) object from the source database to the target database, wherein during migration the instructions further cause the machine to:for each of the DB objects, update, at the host computer, a storage of the location of the corresponding DB object to be the target database, the location stored in a table;intercept a database command, by the abstraction layer from an application of the host computer, the abstraction layer transparent to the application;identify, from the table, in which of the source database and the target database a corresponding DB object subject to the database command resides;directly access one of the target database and the source database in which the DB object subject to the database command resides; andexecute the database command by retrieving the DB object from the other one of the target database and the source database.
  • 17. The article of claim 16, wherein at least one of the DB objects is a table, the migrating further comprising: moving records of the table from the source database to the target database; andafter moving the records, moving records that have changed to the target database.
  • 18. The article of claim 17, further comprising instructions causing the machine to keep the records that have changed aside until the records of the table have moved to the target database.
  • 19. The article of claim 17, further comprising instructions causing the machine to stop write operations to the table, if a number of record changes is smaller than a threshold number.
  • 20. The article of claim 16, wherein at least one of the database objects is a table, the migrating further comprising: stopping write operations to a first table of the database until after the first table has been migrated by parsing writes to the first table.
US Referenced Citations (257)
Number Name Date Kind
7203741 Marco et al. Apr 2007 B2
7719443 Natanzon May 2010 B1
7840536 Ahal et al. Nov 2010 B1
7840662 Natanzon Nov 2010 B1
7844856 Ahal et al. Nov 2010 B1
7860836 Natanzon et al. Dec 2010 B1
7882286 Natanzon et al. Feb 2011 B1
7934262 Natanzon et al. Apr 2011 B1
7958372 Natanzon Jun 2011 B1
8037162 Marco et al. Oct 2011 B2
8041940 Natanzon et al. Oct 2011 B1
8060713 Natanzon Nov 2011 B1
8060714 Natanzon Nov 2011 B1
8103937 Natanzon et al. Jan 2012 B1
8108634 Natanzon et al. Jan 2012 B1
8214612 Natanzon Jul 2012 B1
8250149 Marco et al. Aug 2012 B2
8271441 Natanzon et al. Sep 2012 B1
8271447 Natanzon et al. Sep 2012 B1
8332687 Natanzon et al. Dec 2012 B1
8335761 Natanzon Dec 2012 B1
8335771 Natanzon et al. Dec 2012 B1
8341115 Natanzon et al. Dec 2012 B1
8370648 Natanzon Feb 2013 B1
8380885 Natanzon Feb 2013 B1
8392680 Natanzon et al. Mar 2013 B1
8429362 Natanzon et al. Apr 2013 B1
8433869 Natanzon et al. Apr 2013 B1
8438135 Natanzon et al. May 2013 B1
8464101 Natanzon et al. Jun 2013 B1
8478955 Natanzon et al. Jul 2013 B1
8495304 Natanzon et al. Jul 2013 B1
8510279 Natanzon et al. Aug 2013 B1
8521691 Natanzon Aug 2013 B1
8521694 Natanzon Aug 2013 B1
8543609 Natanzon Sep 2013 B1
8583885 Natanzon Nov 2013 B1
8600945 Natanzon et al. Dec 2013 B1
8601085 Ives et al. Dec 2013 B1
8627012 Derbeko et al. Jan 2014 B1
8683592 Dotan et al. Mar 2014 B1
8694700 Natanzon et al. Apr 2014 B1
8706700 Natanzon et al. Apr 2014 B1
8712962 Natanzon et al. Apr 2014 B1
8719497 Don et al. May 2014 B1
8725691 Natanzon May 2014 B1
8725692 Natanzon et al. May 2014 B1
8726066 Natanzon et al. May 2014 B1
8738813 Natanzon et al. May 2014 B1
8745004 Natanzon et al. Jun 2014 B1
8751828 Raizen et al. Jun 2014 B1
8769336 Natanzon et al. Jul 2014 B1
8805786 Natanzon Aug 2014 B1
8806161 Natanzon Aug 2014 B1
8825848 Dotan et al. Sep 2014 B1
8832399 Natanzon et al. Sep 2014 B1
8850143 Natanzon Sep 2014 B1
8850144 Natanzon et al. Sep 2014 B1
8862546 Natanzon et al. Oct 2014 B1
8892835 Natanzon et al. Nov 2014 B1
8898112 Natanzon et al. Nov 2014 B1
8898409 Natanzon et al. Nov 2014 B1
8898515 Natanzon Nov 2014 B1
8898519 Natanzon et al. Nov 2014 B1
8914595 Natanzon Dec 2014 B1
8924668 Natanzon Dec 2014 B1
8930500 Marco et al. Jan 2015 B2
8930947 Derbeko et al. Jan 2015 B1
8935498 Natanzon Jan 2015 B1
8949180 Natanzon et al. Feb 2015 B1
8954673 Natanzon et al. Feb 2015 B1
8954796 Cohen et al. Feb 2015 B1
8959054 Natanzon Feb 2015 B1
8977593 Natanzon et al. Mar 2015 B1
8977826 Meiri et al. Mar 2015 B1
8996460 Frank et al. Mar 2015 B1
8996461 Natanzon et al. Mar 2015 B1
8996827 Natanzon Mar 2015 B1
9003138 Natanzon et al. Apr 2015 B1
9003149 Kathmann Apr 2015 B2
9026696 Natanzon et al. May 2015 B1
9031913 Natanzon May 2015 B1
9032160 Natanzon et al. May 2015 B1
9037818 Natanzon et al. May 2015 B1
9063994 Natanzon et al. Jun 2015 B1
9069479 Natanzon Jun 2015 B1
9069709 Natanzon et al. Jun 2015 B1
9081754 Natanzon et al. Jul 2015 B1
9081842 Natanzon et al. Jul 2015 B1
9087008 Natanzon Jul 2015 B1
9087112 Natanzon et al. Jul 2015 B1
9104529 Derbeko et al. Aug 2015 B1
9110914 Frank et al. Aug 2015 B1
9116811 Derbeko et al. Aug 2015 B1
9128628 Natanzon et al. Sep 2015 B1
9128855 Natanzon et al. Sep 2015 B1
9134914 Derbeko et al. Sep 2015 B1
9135119 Natanzon et al. Sep 2015 B1
9135120 Natanzon Sep 2015 B1
9146878 Cohen et al. Sep 2015 B1
9152339 Cohen et al. Oct 2015 B1
9152578 Saad et al. Oct 2015 B1
9152814 Natanzon Oct 2015 B1
9158578 Derbeko et al. Oct 2015 B1
9158630 Natanzon Oct 2015 B1
9160526 Raizen et al. Oct 2015 B1
9177670 Derbeko et al. Nov 2015 B1
9189339 Cohen et al. Nov 2015 B1
9189341 Natanzon et al. Nov 2015 B1
9201736 Moore et al. Dec 2015 B1
9223659 Natanzon et al. Dec 2015 B1
9225529 Natanzon et al. Dec 2015 B1
9235481 Natanzon et al. Jan 2016 B1
9235524 Derbeko et al. Jan 2016 B1
9235632 Natanzon Jan 2016 B1
9244997 Natanzon et al. Jan 2016 B1
9256605 Natanzon Feb 2016 B1
9274718 Natanzon et al. Mar 2016 B1
9275063 Natanzon Mar 2016 B1
9286052 Solan et al. Mar 2016 B1
9305009 Bono et al. Apr 2016 B1
9323750 Natanzon et al. Apr 2016 B2
9330155 Bono et al. May 2016 B1
9336094 Wolfson et al. May 2016 B1
9336230 Natanzon May 2016 B1
9367260 Natanzon Jun 2016 B1
9378096 Erel et al. Jun 2016 B1
9378219 Bono et al. Jun 2016 B1
9378261 Bono et al. Jun 2016 B1
9383937 Frank et al. Jul 2016 B1
9389800 Natanzon et al. Jul 2016 B1
9405481 Cohen et al. Aug 2016 B1
9405684 Derbeko et al. Aug 2016 B1
9405765 Natanzon Aug 2016 B1
9411535 Shemer et al. Aug 2016 B1
9459804 Natanzon et al. Oct 2016 B1
9460028 Raizen et al. Oct 2016 B1
9471579 Natanzon Oct 2016 B1
9477407 Marshak et al. Oct 2016 B1
9501542 Natanzon Nov 2016 B1
9507732 Natanzon et al. Nov 2016 B1
9507845 Natanzon et al. Nov 2016 B1
9514138 Natanzon et al. Dec 2016 B1
9524218 Veprinsky et al. Dec 2016 B1
9529885 Natanzon et al. Dec 2016 B1
9535800 Natanzon et al. Jan 2017 B1
9535801 Natanzon et al. Jan 2017 B1
9547459 BenHanokh et al. Jan 2017 B1
9547591 Natanzon et al. Jan 2017 B1
9552405 Moore et al. Jan 2017 B1
9557921 Cohen et al. Jan 2017 B1
9557925 Natanzon Jan 2017 B1
9563517 Natanzon et al. Feb 2017 B1
9563684 Natanzon et al. Feb 2017 B1
9575851 Natanzon et al. Feb 2017 B1
9575857 Natanzon Feb 2017 B1
9575894 Natanzon et al. Feb 2017 B1
9582382 Natanzon et al. Feb 2017 B1
9588703 Natanzon et al. Mar 2017 B1
9588847 Natanzon et al. Mar 2017 B1
9594822 Natanzon et al. Mar 2017 B1
9600377 Cohen et al. Mar 2017 B1
9619543 Natanzon et al. Apr 2017 B1
9632881 Natanzon Apr 2017 B1
9665305 Natanzon et al. May 2017 B1
9710177 Natanzon Jul 2017 B1
9720618 Panidis et al. Aug 2017 B1
9722788 Natanzon et al. Aug 2017 B1
9727429 Moore et al. Aug 2017 B1
9733969 Derbeko et al. Aug 2017 B2
9737111 Lustik Aug 2017 B2
9740572 Natanzon et al. Aug 2017 B1
9740573 Natanzon Aug 2017 B1
9740880 Natanzon et al. Aug 2017 B1
9749300 Cale et al. Aug 2017 B1
9772789 Natanzon et al. Sep 2017 B1
9798472 Natanzon et al. Oct 2017 B1
9798490 Natanzon Oct 2017 B1
9804934 Natanzon et al. Oct 2017 B1
9811431 Natanzon et al. Nov 2017 B1
9823865 Natanzon et al. Nov 2017 B1
9823973 Natanzon Nov 2017 B1
9832261 Don et al. Nov 2017 B2
9846698 Panidis et al. Dec 2017 B1
9875042 Natanzon et al. Jan 2018 B1
9875162 Panidis et al. Jan 2018 B1
9880777 Bono et al. Jan 2018 B1
9881014 Bono et al. Jan 2018 B1
9910620 Veprinsky et al. Mar 2018 B1
9910621 Golan et al. Mar 2018 B1
9910735 Natanzon Mar 2018 B1
9910739 Natanzon et al. Mar 2018 B1
9917854 Natanzon et al. Mar 2018 B2
9921955 Derbeko et al. Mar 2018 B1
9933957 Cohen et al. Apr 2018 B1
9934302 Cohen et al. Apr 2018 B1
9940205 Natanzon Apr 2018 B2
9940460 Derbeko et al. Apr 2018 B1
9946649 Natanzon et al. Apr 2018 B1
9959061 Natanzon et al. May 2018 B1
9965306 Natanzon et al. May 2018 B1
9990256 Natanzon Jun 2018 B1
9996539 Natanzon Jun 2018 B1
10007626 Saad et al. Jun 2018 B1
10019194 Baruch et al. Jul 2018 B1
10025931 Natanzon et al. Jul 2018 B1
10031675 Veprinsky et al. Jul 2018 B1
10031690 Panidis et al. Jul 2018 B1
10031692 Elron et al. Jul 2018 B2
10031703 Natanzon et al. Jul 2018 B1
10037251 Bono et al. Jul 2018 B1
10042579 Natanzon Aug 2018 B1
10042751 Veprinsky et al. Aug 2018 B1
10055146 Natanzon et al. Aug 2018 B1
10055148 Natanzon et al. Aug 2018 B1
10061666 Natanzon et al. Aug 2018 B1
10067694 Natanzon et al. Sep 2018 B1
10067837 Natanzon et al. Sep 2018 B1
10078459 Natanzon et al. Sep 2018 B1
10082980 Cohen et al. Sep 2018 B1
10083093 Natanzon et al. Sep 2018 B1
10095489 Lieberman et al. Oct 2018 B1
10101943 Ayzenberg et al. Oct 2018 B1
10108356 Natanzon et al. Oct 2018 B1
10108507 Natanzon Oct 2018 B1
10108645 Bigman et al. Oct 2018 B1
10114581 Natanzon et al. Oct 2018 B1
10120787 Shemer et al. Nov 2018 B1
10120925 Natanzon et al. Nov 2018 B1
10126946 Natanzon et al. Nov 2018 B1
10133874 Natanzon et al. Nov 2018 B1
10140039 Baruch et al. Nov 2018 B1
10146436 Natanzon et al. Dec 2018 B1
10146639 Natanzon et al. Dec 2018 B1
10146675 Shemer et al. Dec 2018 B1
10146961 Baruch et al. Dec 2018 B1
10148751 Natanzon Dec 2018 B1
10152246 Lieberman et al. Dec 2018 B1
10152267 Ayzenberg et al. Dec 2018 B1
10152384 Amit et al. Dec 2018 B1
10157014 Panidis et al. Dec 2018 B1
10185583 Natanzon et al. Jan 2019 B1
10191677 Natanzon et al. Jan 2019 B1
10191687 Baruch et al. Jan 2019 B1
10191755 Natanzon et al. Jan 2019 B1
10203904 Natanzon et al. Feb 2019 B1
10210073 Baruch et al. Feb 2019 B1
10223007 Natanzon et al. Mar 2019 B1
10223023 Natanzon et al. Mar 2019 B1
10223131 Lieberman et al. Mar 2019 B1
10229006 Natanzon et al. Mar 2019 B1
10229056 Panidis et al. Mar 2019 B1
20110295804 Erofeev Dec 2011 A1
20140379768 Matsuzawa Dec 2014 A1
20150169239 Sakai Jun 2015 A1
20150234617 Li Aug 2015 A1
20170064030 Maskalik Mar 2017 A1
Non-Patent Literature Citations (20)
Entry
U.S. Appl. No. 14/496,783, filed Sep. 25, 2014, Natanzon et al.
U.S. Appl. No. 14/496,790, filed Sep. 25, 2014, Cohen et al.
U.S. Appl. No. 14/559,036, filed Dec. 3, 2014, Natanzon et al.
U.S. Appl. No. 14/753,389, filed Jun. 29, 2015, Nir et al.
U.S. Appl. No. 14/976,719, filed Dec. 21, 2015, Natanzon.
U.S. Appl. No. 15/085,148, filed Mar. 30, 2016, Baruch et al.
U.S. Appl. No. 15/274,362, filed Sep. 23, 2016, Baruch et al.
U.S. Appl. No. 15/275,768, filed Sep. 26, 2016, Natanzon et al.
U.S. Appl. No. 15/275,756, filed Sep. 26, 2016, Natanzon et al.
U.S. Appl. No. 15/379,940, filed Dec. 15, 2016, Baruch et al.
U.S. Appl. No. 15/386,754, filed Dec. 21, 2016, Sherner et al.
U.S. Appl. No. 15/380,013, filed Dec. 15, 2016, Baruch et al.
U.S. Appl. No. 15/390,996, filed Dec. 27, 2016, Natanzon et al.
U.S. Appl. No. 15/391,030, filed Dec. 27, 2016, Shemer et al.
U.S. Appl. No. 15/970,243, filed May 3, 2018, Schneider et al.
U.S. Appl. No. 16/052,037, filed Aug. 1, 2018, Schneider et al.
U.S. Appl. No. 16/048,763, filed Jul. 30, 2018, Schneider et aL.
U.S. Appl. No. 16/050,400, filed Jul. 31, 2018, Alkalay et al.
U.S. Appl. No. 16/179,295, filed Nov. 2, 2018, Natanzan et al.
U.S. Appl. No. 16/261,174, filed Jan. 29, 2019, Natanzon et al.