The present disclosure relates in general to databases, and, in particular, to methods and apparatus for upgrading a plurality of databases.
The vast majority of documents we create and/or archive are stored electronically. In order to quickly find certain documents, the relevant data from these documents is typically extracted, catalogued, and organized in a centralized database to make them searchable. In some circumstances, these databases can be very large. For example, a law suit may involve millions of documents. Coding documents in these large databases can be problematic. Often, these database need to be upgraded. However, upgrading a database often renders that database unusable or cumbersome for users during the upgrade period. Accordingly, a problem exists as to what order these databases should be upgraded in order to minimize user disruptions and/or downtime during the upgrade process.
Briefly, methods and apparatus for upgrading a plurality of databases are disclosed. For example, a computer system may receive a first upgrade order associated with a first database. The system then receives a second upgrade order associated with a second database, wherein the first upgrade order is indicative of a first higher upgrade precedence than the second upgrade order. The system then receives a first priority associated with a third database. The system then receives a second priority associated with a fourth database wherein the first priority is indicative of a second higher upgrade precedence than the second priority. The system then upgrades the first database first in time based on the first upgrade order. The system then upgrades the second database second in time based on the second upgrade order. The system then upgrades the third database third in time based on the first priority. The system then upgrades the fourth database fourth in time based on the second priority.
Turning now to the figures, the present system is most readily realized in a network communication system 100. A block diagram of certain elements of an example network communications system 100 is illustrated in
The web server 106 stores a plurality of files, programs, and/or web pages in one or more databases 108 for use by the client devices 102 as described in detail below. The database 108 may be connected directly to the web server 106 and/or via one or more network connections. The database 108 stores data as described in detail below.
One web server 106 may interact with a large number of client devices 102. Accordingly, each server 106 is typically a high end computer with a large storage capacity, one or more fast microprocessors, and one or more high speed network connections. Conversely, relative to a typical server 106, each client device 102 typically includes less storage capacity, a single microprocessor, and a single network connection.
Each of the devices illustrated in
The memory 208 may include various types of non-transitory memory including volatile memory and/or non-volatile memory such as, but not limited to, distributed memory, read-only memory (ROM), random access memory (RAM) etc. The memory 208 typically stores a software program that interacts with the other devices in the system as described herein. This program may be executed by the processing unit 204 in any suitable manner. The memory 208 may also store digital data indicative of documents, files, programs, web pages, scripts, etc. retrieved from a server and/or loaded via an input device 214.
The interface circuit 212 may be implemented using any suitable interface standard, such as an Ethernet interface and/or a Universal Serial Bus (USB) interface. One or more input devices 214 may be connected to the interface circuit 212 for entering data and commands into the main unit 202. For example, the input device 214 may be a keyboard, mouse, touch screen, track pad, camera, voice recognition system, accelerometer, global positioning system (GPS), and/or any other suitable input device.
One or more displays, printers, speakers, monitors, televisions, high definition televisions, and/or other suitable output devices 216 may also be connected to the main unit 202 via the interface circuit 212. One or more storage devices 218 may also be connected to the main unit 202 via the interface circuit 212. For example, a hard drive, CD drive, DVD drive, and/or other storage devices may be connected to the main unit 202. The storage devices 218 may store any type of data used by the device 200. The computing device 200 may also exchange data with one or more input/output (I/O) devices 220, such as network routers, camera, audio players, thumb drives etc.
The computing device 200 may also exchange data with other network devices 222 via a connection to a network 110. The network connection may be any type of network connection, such as an Ethernet connection, digital subscriber line (DSL), telephone line, coaxial cable, wireless base station 230, etc. Users 114 of the system 100 may be required to register with a server 106. In such an instance, each user 114 may choose a user identifier (e.g., e-mail address) and a password which may be required for the activation of services. The user identifier and password may be passed across the network 110 using encryption built into the user's browser. Alternatively, the user identifier and/or password may be assigned by the server 106.
In some embodiments, the device 200 may be a wireless device 200. In such an instance, the device 200 may include one or more antennas 224 connected to one or more radio frequency (RF) transceivers 226. The transceiver 226 may include one or more receivers and one or more transmitters operating on the same and/or different frequencies. For example, the device 200 may include a blue tooth transceiver 216, a Wi-Fi transceiver 216, and diversity cellular transceivers 216. The transceiver 226 allows the device 200 to exchange signals, such as voice, video and any other suitable data, with other wireless devices 228, such as a phone, camera, monitor, television, and/or high definition television. For example, the device 200 may send and receive wireless telephone signals, text messages, audio signals and/or video signals directly and/or via a base station 230.
In this example, the process 300 begins the system receives a first upgrade order associated with a first database (block 302). For example, a user may select the A database to be upgraded first. The system then receives a second upgrade order associated with a second database, wherein the first upgrade order is indicative of a first higher upgrade precedence than the second upgrade order (block 304). For example, the user may select the B database to be upgraded second.
The system then receives a first priority associated with a third database (block 306). For example, the user may select the C database to be upgraded with a high priority. The system then receives a second priority associated with a fourth database wherein the first priority is indicative of a second higher upgrade precedence than the second priority (block 308). For example, the system defaults the D database to be upgraded with a medium priority. The system then receives a maximum number of simultaneous upgrades associated with a server (block 310). For example, the user indicates that a certain server is only allowed to perform two upgrades at the same time.
The system then upgrades the first database first in time based on the first upgrade order (block 312). For example, the system upgrades the A database first, because it was selected to be upgraded first. The system then upgrades the second database second in time based on the second upgrade order (block 314). For example, the system upgrades the B database second, because it was selected to be upgraded second. The system then upgrades the third database third in time based on the first priority (block 316). For example, the system upgrades the C database third, because the system has finished upgrading the ordered databases. The system then upgrades the fourth database fourth in time based on the second priority (block 318). For example, the system upgrades the D database fourth, because the system has finished upgrading the higher priority databases. The system then upgrades a fifth database, out of at least one of upgrade order and priority order, based on the maximum number of simultaneous upgrades associated with the server (block 320). For example, the system may upgrade a different database because the maximum number of simultaneous upgrades for a particular server has been reached.
In this example, the process 400 begins when the system receives a first upgrade order associated with a first database (block 402). For example, a user may select the A database to be upgraded first. The system then receives a second upgrade order associated with a second database, wherein the first upgrade order is indicative of a first higher upgrade precedence than the second upgrade order (block 404). For example, the user may select the B database to be upgraded second.
The system then receives a first priority associated with a third database (block 406). For example, the user may select the C database to be upgraded with a high priority. The system then receives a second priority associated with a fourth database wherein the first priority is indicative of a second higher upgrade precedence than the second priority (block 408). For example, the system defaults the D database to be upgraded with a medium priority. The system then receives a dependency relationship associated with at least two upgrade scripts (block 410). For example, the system may automatically determines and/or the user may indicate that script A depends on script C.
The system then upgrades the first database first in time based on the first upgrade order (block 412). For example, the system upgrades the A database first, because it was selected to be upgraded first. The system then upgrades the second database second in time based on the second upgrade order (block 414). For example, the system upgrades the B database second, because it was selected to be upgraded second. The system then upgrades the third database third in time based on the first priority (block 416). For example, the system upgrades the C database third, because the system has finished upgrading the ordered databases. The system then upgrades the fourth database fourth in time based on the second priority (block 418). For example, the system upgrades the D database fourth, because the system has finished upgrading the higher priority databases. The system then upgrades a fifth database, out of at least one of upgrade order and priority order, based on the dependency relationship associated with the at least two upgrade scripts (block 420). For example, the system may upgrade a different database because the system is waiting on a script dependency.
In this example, the process 500 begins when the system receives a first upgrade order associated with a first database (block 502). For example, the user may select the A database to be upgraded first. The system then receives a second upgrade order associated with a second database, wherein the first upgrade order is indicative of a first higher upgrade precedence than the second upgrade order (block 504). For example, the user may select the B database to be upgraded second.
The system then receives a first priority associated with a third database (block 506). For example, the user may select the C database to be upgraded with a high priority. The system then receives a second priority associated with a fourth database wherein the first priority is indicative of a second higher upgrade precedence than the second priority (block 508). For example, the system defaults the D database to be upgraded with a medium priority. The system then receives a server characterization of at least one of memory bound and central processing unit (CPU) bound (block 510). For example, the user indicates that server A has a lot of memory, and server B has a lot of CPU capacity. The system then receives an upgrade script characterization of at least one of memory bound and CPU bound (block 512). For example, the user indicates that script A requires a lot of memory and script B requires a lot of CPU.
The system then upgrades the first database first in time based on the first upgrade order (block 514). For example, the system upgrades the A database first, because it was selected to be upgraded first. The system then upgrades the second database second in time based on the second upgrade order (block 516). For example, the system upgrades the B database second, because it was selected to be upgraded second. The system then upgrades the third database third in time based on the first priority (block 518). For example, the system upgrades the C database third, because the system has finished upgrading the ordered databases. The system then upgrades the fourth database fourth in time based on the second priority (block 520). For example, the system upgrades the D database fourth, because the system has finished upgrading the higher priority databases. The system then upgrades a fifth database, out of at least one of upgrade order and priority order, based on the server characterization and the upgrade script characterization (block 522). For example, if a CPU bound script only has a memory bound server available, then a different database is preferably selected for upgrading.
In summary, persons of ordinary skill in the art will readily appreciate that methods and apparatus for upgrading a plurality of databases have been provided. The foregoing description has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the invention to the exemplary embodiments disclosed. Many modifications and variations are possible in light of the above teachings. It is intended that the scope of the invention be limited not by this detailed description of examples, but rather by the claims appended hereto.
This application claims priority to Provisional Application Ser. No. 62/156,264, filed on May 2, 2015, having inventors Nathanial Joseph Noonen et al., titled “METHODS AND APPARATUS FOR UPGRADING A PLURALITY OF DATABASES”, and is incorporated herein by reference.
Number | Date | Country | |
---|---|---|---|
62156264 | May 2015 | US |