Systems and methods for managing connections to process data

A computer-implemented method for managing connections to process data is described. A connection with an access server is established to determine a connection point associated with one or more targets. The one or more targets are arranged according to the connection points associated with each of the one or more targets. A connection with a first connection point is established. Data from one or more targets associated with the first connection point are processed. The connection with the first connection point is terminated.

BACKGROUND

The use of computer systems and computer-related technologies continues to increase at a rapid pace. This increased use of computer systems has influenced the advances made to computer-related technologies. Indeed, computer systems have increasingly become an integral part of the business world and the activities of individual consumers. Computer systems may be used to carry out several business, industry, and academic endeavors. The wide-spread use of computers has been accelerated by the increased use of computer networks, including the Internet. Many businesses use one or more computer networks to communicate and share data between the various computers connected to the networks. The productivity and efficiency of employees often requires human and computer interaction.

Users of computer technologies continue to demand that the efficiency of these technologies increase. These demands include demands to improve the functionality of computing devices. For example, computing devices may perform various functions on data. These functions may include archiving copies of data. Archived copies of data may be used to restore the data in the event the data become lost or corrupted.

In some instances, original data may be stored across various servers in an Exchange Server system. The Exchange system may include various interconnected servers that host numerous databases. A computing device that desires to perform various functions on data stored in the databases may connect to one or more of the servers that are part of the Exchange system. As a result, benefits may be realized by providing systems and methods for managing connections to process data from one or more locations in an Exchange system.

SUMMARY

According to at least one embodiment, a computer-implemented method for managing connections to process data is described. A connection with an access server is established to determine a connection point associated with one or more targets. The one or more targets are arranged according to the connection points associated with each of the one or more targets. A connection with a first connection point is established. Data from one or more targets associated with the first connection point are processed. The connection with the first connection point is terminated.

In one configuration, a connection with a second connection point may be established. Data from one or more targets associated with the second connection point may be processed. In one embodiment, the connection with the second connection point may be terminated.

In one example, the one or more targets may be an electronic mail mailbox. In addition, the one or more targets may be stored in one or more databases.

In one embodiment, the one or more databases may be organized into one or more groups of databases. One or more databases that have not been assigned to a group of databases may be identified. The one or more databases that have not been assigned to a group of databases may be assigned to a default group of databases.

A computer system configured to manage connections to process data is also described. The computer system may include a processor and memory in electronic communication with the processor. The computer system may also include an archiving application configured to establish a connection with an access server to determine a connection point associated with one or more targets. In addition, the application may be configured to arrange the one or more targets according to the connection points associated with each of the one or more targets, and establish a connection with a first connection point. The application may also be configured to process data from one or more targets associated with the first connection point, and terminate the connection with the first connection point.

A computer-program product for managing connections to process data is also described. The computer-program product may include a computer-readable medium having instructions thereon. The instructions may include code programmed to establish a connection with an access server to determine a connection point associated with one or more targets, and code programmed to arrange the one or more targets according to the connection points associated with each of the one or more targets. The instructions may also include code programmed to establish a connection with a first connection point, and code programmed to process data from one or more targets associated with the first connection point. The instructions may further include code programmed to terminate the connection with the first connection point.

DETAILED DESCRIPTION OF EXEMPLARY EMBODIMENTS

Enterprises may use specific servers to provide electronic mail functions, calendaring functions, contacts and tasks, support for mobile and web-based access to information, support for data storage, etc. An example of a specific server that an enterprise might use to provide these functions is an Exchange Server (also referred to herein as an Exchange system). In addition, enterprises may use an archiving application that connects to an Exchange server. The application may discover content held within an email mailbox, a file system, etc. An archiving application may also reduce the amount of storage required for emails on file systems. In one embodiment, an archiving application may manage the content of emails and file systems using automated, policy-controlled archiving to online stores for active retention and seamless retrieval of information.

In one configuration, the present systems and methods may optimize the number of connections that an archiving application establishes while processing mailboxes spread across different mailbox databases in a distributed Exchange system (such as the Exchange 2010 System). The present systems and methods may also minimize the number of Exchange application programming interfaces (API) context switches between connection points and may also optimize network traffic in a geographically distributed system. The present systems and methods may further configure an archiving application that processes mailboxes across multiple mailbox databases in an Exchange system. In one example, this may be achieved by grouping mailbox databases and applying application settings to various groups.

In one embodiment, the connection point for connections between an archiving application and a mailbox database in an Exchange system may be at a client access server (CAS) level. In other words, access to a mailbox database may be made through a CAS and access to different mailbox databases may be made through the same CAS. Each mailbox database may include one or more mailboxes. In addition, each database may be configured to be assigned a default CAS that is the preferred connection point for the mailboxes within that database. In one example, an Exchange system (such as the Exchange 2010 System) may include a database availability group (DAG). A DAG may be a group of Exchange servers that host one or more mailbox databases. These mailbox databases may be hosted by a home server, but the databases may also be replicated across other servers in the DAG. In other words, when the home server of a mailbox database fails, a copy of that database hosted by another server within the DAG may become available without any intervention by an administrator. This may be referred to as a “failover”. For example, a mailbox database may failover from server A to server B if/when server A fails.

In one configuration, the Exchange servers in a DAG may be in the same geographical location or spread around the world at various locations. In an Exchange system, API connection points may be dynamic and may change as mailbox databases failover from one server to another server in the DAG. In an application that is targeting individual mailboxes in an Exchange system, there may be a large amount of context switching between connection points in order to process all of the mailboxes on different servers that are being targeted by the application. Large numbers of context switches may have a performance impact on the application. The number of context switches may also have a negative impact on the performance of an Exchange server. For example, if an Exchange system is set up so that several databases use the same connection point, performance issues may arise if the application is tied to processing only a certain connection point, rather than certain mailboxes. In one configuration, agents (or worker processes) of the application may be tied up processing a large mailbox database through a connection point and may not be able to process the other mailboxes through that same connection point. In addition, as previously explained, a mailbox database may failover from a first server at a first location to a second server at a second location (i.e., a remote site). The application may process mailboxes located at the second location and transmit information across a network. The network traffic between the application and the remote site may become large and unworkable.

In one embodiment, the use of the term “maintenance” below may describe an allocated period of time when an archiving application processes data within one or more targeted mailboxes. In one configuration, an administrator may desire to specify different maintenance periods for different applications to process the data. Examples of processing the data may include, for example, archiving the data, backing-up the data, etc.

In one configuration, a first server hosting a mailbox database may fail and the database (with the targeted mailboxes) may failover to a second server. The second server may be in a different time zone than the first server. The application may still be required to process the data within a certain maintenance period, regardless of where the data are currently active. For example, the end user whose mailbox is being processed, may be at a first location while the database that holds the mailbox has been moved across the world to a second location as a result of a failover. The end user may still expect, for example, an Outlook session to be responsive during their working hours regardless of where the database containing the mailbox is located. An archiving application may be targeting hundreds of thousands of mailboxes across thousands of mailbox databases which may require the use of time and resources to configure the application.

In one embodiment, an archiving application that targets an Exchange system may connect to a CAS rather than connect directly to a server that hosts a mailbox database that includes the targeted mailboxes. In one example, the CAS may channel the request from the application to the appropriate mailbox server. The present systems and methods may minimize the creating and discarding of connections that may be required to process individual mailboxes that are spread across a number of mailbox databases. This may be achieved by intelligently sorting a list of mailboxes that need to be processed so that all of the mailboxes with the same connection point may be processed one after the other. The current connection may be discarded when the application has processed all of the mailboxes that can be processed through the same connection point. Each mailbox database and, therefore, each mailbox may have a preferred connection point determined by the Exchange system. This may be determined by making a connection to the Exchange system to determine the preferred connection point for a particular mailbox database.

In one embodiment, an application may include a list of all the targets (i.e., mailboxes) to process. The application may make a single connection to an Exchange system to determine a connection point to use for each target. This may occur immediately before an application processes the mailboxes, periodically (e.g., once per day), etc. In addition, the query to determine the connection points to use for a target may occur when a particular event is executed. For example, the query may take place when a connection failure occurs during the processing of a target, when a slower than expected processing rate occurs, during an event log frenzy, when a specific event log entry occurs, when the system is otherwise idle, etc.

In one configuration, the targets may be ordered based on their connection point, and a connection may be established for the first target on the list. After the first target is processed, the remaining targets associated with the same connection point may also be processed. After all the targets of that connection point have been processed, the connection may be discarded. A new connection may then be established for one or more targets. This connection may be maintained until all targets assigned to that connection point have been processed. This sequence may be repeated until all the target mailboxes have been processed.

FIG. 1is a block diagram illustrating one embodiment of an Exchange system100. The system100may include a client device102on which an application104may be executed. In one configuration, the client device102may be a personal computer (PC), a laptop, a personal digital assistant (PDA), or any other type of computing device. The application104may be an archiving application that may process data, archive data, etc.

The system100may also include one or more databases112,114,116. Each of these databases112,114,116may include one or more mailboxes118,120,122,124,126,128. For example, the first database112may include mailbox A118and mailbox D124. The second database114may include mailbox B120and mailbox E126. The third database116may include mailbox C122and mailbox F128.

As previously explained, each mailbox database and, therefore, each mailbox, may be associated with a connection point. One example of a connection point may be a client access server (CAS). The connection point may be used by the application104to access the data within each mailbox. In one embodiment, a first CAS108may be the connection point for the first database112and the mailboxes118,124within the first database112. A second CAS110may serve as the connection point between the application104and the second database114and the third database116.

In one configuration, the client device102may connect to the first CAS108through a first network connection106. The client device102may connect to the second CAS110through a second network connection107. The first CAS108may then connect to the first database112through a third network connection109. Similarly, the second CAS110may connect to the second database114through a fourth network connection111. The second CAS110may connect to the third database116through a fifth network connection113.

As previously described above, the present systems and methods may minimize the number of connections that the application104must make in order to process data within the various mailboxes118,120,122,124,126,128that the application104is targeting. For example, the application104may target mailbox A118, mailbox B120, mailbox C122, and mailbox D124in order to process the data within these mailboxes. When the application104is initiated, it may make a first connection to either the first CAS108or the second CAS110in order to determine the connection points assigned to each of the mailboxes118,120,122,124to be processed. The first connection may then be discarded. The targets, or mailboxes118,120,122,124, may be sorted based on the determined connection points. For example, the application104may determine from the first connection that mailbox A118and mailbox D124are associated with the first CAS108as their connection point. The application104may further determine from the first connection that mailbox B120and mailbox C122are associated with the second CAS110for their connection point. In one configuration, mailbox A118and mailbox D124may be included in a first list that identifies mailboxes that are associated with the first CAS108. Similarly, mailbox B120and mailbox C122may be included in a second list to indicate that both mailboxes120,122are associated with the second CAS110.

In one configuration, a second connection may be established between the application104and the first CAS108in order to process mailbox A118and mailbox D124. The application104may process first either mailbox A118or mailbox D124. The application104may then process the other mailbox. Once all the mailboxes associated with the first CAS108are processed, the second connection may be discarded.

In one example, a third connection may be established between the application104and the second CAS110in order to process the mailboxes associated with the second CAS110. Once all the mailboxes associated with the second CAS110are processed, the third connection may be discarded. As a result, using the above example, a total of three connections may be required in order for the application104to process the targeted mailboxes118,120,122,124.

Without using the present systems and methods, eight connections between the application104and the various databases112,114,116may be required in order to process mailbox A118, mailbox B120, mailbox C122, and mailbox D124. As an example, for each mailbox, a connection may be established to determine the connection point for that particular mailbox (i.e., four connections). Each of these connections may then be discarded. Another connection may be established with a preferred connection point in order to process a mailbox associated with that connection point (i.e., another four connections). As a result, eight connections may be required in order to process the four mailboxes referenced above.

Using the above examples, the connection count with the present systems and methods may be the number of preferred connection points plus one (e.g., Number of preferred connection points+1). The connection count, however, without using the present systems and methods may be two times the number of mailboxes the application104is targeting (e.g., 2×Number of targeted mailboxes).

FIG. 2is a block diagram illustrating one embodiment of an Exchange system that includes a database availability group (DAG)236. In one embodiment, the DAG236may include a first mailbox server238and a second mailbox server240. Each server238,240may be located in a different region. For example, the first server238may be located at a first region and the second server240may be located at a second region. In one configuration, each mailbox server238,240may host a first database212and a second database214. In other words, each server238,240includes a copy of the first database212and the second database214. Each database212,214may include one or more mailboxes. For example, the first database212may include mailbox A218and mailbox C222. The second database214may include mailbox B220and mailbox D224.

In one example, the first database238may be live (i.e., running) in the first region while the second database214is dormant in the first region. The second database214may be live (i.e., running) in the second region while the first database212is dormant in the second region. A first CAS208may serve as the connection point for the first database212and a second CAS210may serve as the connection point for the second database214. The first CAS208may be located at the first region and the second CAS210may be located at the second region. The first database212may be assigned to the first CAS208connection point. The second database240may be assigned to the second CAS210connection point.

An application204that processes the mailboxes on the Exchange system may have a first agent230and a second agent232. The agents230,232may perform the processing of data within the targeted mailboxes218,220,222,224. In one configuration, the first agent230may be located at the first region and the second agent232may be located at the second region. In addition, the application204may include a data processor234that is located at the first region.

The first agent230may process any mailbox using the first CAS208as a connection point. If, while processing a mailbox, the first agent230finds data to process, the data may then be passed to the data processor234. The second agent232may process mailboxes that use the second CAS210as a connection point. If, while processing a mailbox, the second agent232finds data to process, the data may be passed over a wide area network (WAN) to the data processor234. In one embodiment, the data that are of interest to the application204may be passed over the WAN. The majority of the work scanning the mailbox for interesting data may be executed locally at the connection points208,210.

FIG. 3is a block diagram illustrating one embodiment of an Exchange system in which a database failover occurs when a server hosting the database fails. In one configuration, a first server338at a first region may fail or go offline. As a result, a copy of a first database312hosted by a second server340may become active or live. In one example, the second server340is located at a second region. The second server340may also include a second database314. Each database312,314may include one or more mailboxes. For example, the first database312may include mailbox A318and mailbox D320. The second database314may include mailbox B322and mailbox E324. As previously explained, the first database312may be associated with a first CAS308as a connection point for the application304. The first CAS308may be located at the first region. The second database314may be associated with a second CAS310as a connection point for the application304. The second CAS310may be located at the second region. After the first database312failsover to the second server340, the first CAS308may still be the preferred connection point for the first database312.

In one embodiment, the application304may target and process various mailboxes located within mailbox databases312,314. The application304may include a first agent330located at the first region and a second agent332located at the second region. In one configuration, the first agent330may connect to the first database312(hosted by the second server340) via the first CAS308. In addition, the second agent332may connect to the second CAS310in order to process mailboxes B322and mailbox D324within the second database314.

When the first agent330connects to the first CAS308at the first region, the connection may be redirected across a WAN306B to the first database312hosted by the second server340at the second region. As a result, increased traffic over the WAN306B may exist because the mailbox processing for mailbox A318and mailbox D220is occurring over the WAN306B. In other words, when the first CAS308connects to the first database312hosted by the second server340, and data within the first database312are identified to be processed, the data may be transmitted across the WAN306B to the first CAS308and then to the first agent330. The first agent330may transmit the data to the data processor334. The traffic across the WAN306B may increase significantly as data are transmitted from the first database312(at the second region) to the first CAS308at the first region.

FIG. 4is a block diagram illustrating another embodiment of an Exchange system in which a first database412(hosted by a first server438) failsover to a second server440when the first server438fails. In one example, the connection point for the first database412may be a first CAS408while the first server438is hosting the first database412. When the first database412failsover to the second server440, the connection point may switch from the first CAS408to a second CAS410. In other words, an administrator may change the connection point for the first database412from the first CAS408to the second CAS410.

In one embodiment, an application404may update a cache of connection points when the connection point for the first database412is switched to the second CAS410. In addition, traffic across a WAN may be reduced when the connection point is switched. The connection point cache of the application404may be updated automatically when the application404become aware that processing performances are below a certain threshold. Alternatively, the connection point cache may be updated when a certain event occurs.

In one configuration, a first agent430may connect to a local connection point at a first region. For example, the first agent430may connect to the first CAS408, however, in this example, there are no mailboxes to process because there are no mailboxes using the first CAS408as a connection point. In one embodiment, a second agent432may connect to mailboxes418,420,422,424using the local connection point at a second region. For example, the second agent432may connect to the second CAS410. In this example, the second agent432may process all mailboxes locally on the second server440. If the second agent432locates interesting data in one of the mailboxes418,420,422,424, the second agent432may pass this information over the WAN to a data processor434located at the first region.

As described above, the present systems and methods allow an application404to use agents to process targets (such as mailboxes) that are at the same geographical region as the agents. Immediately after a database move or failover, the application404may continue to process all targets, however, network traffic may be increased. After the database move or failover, the connection points for the targets may be updated. The application404may automatically recognize the updates and only use an agent within the same geographical region to process the target. In one embodiment, the agents430,432of the application404may be generic and may be able to process any target using all connection points across the Exchange system.

FIG. 5is a block diagram illustrating one embodiment of a job management system500in accordance with the present systems and methods. In one example, an application504may include a first agent530that may process various mailboxes within various mailbox databases. In one embodiment, the first agent530may connect to a first CAS508and/or a second CAS510located within a first active directory site564in order to process the various mailboxes.

In one configuration, some of the jobs to be processed by the first agent530may be associated with the first CAS508, and some other jobs may be associated with the second CAS510. The jobs may be arranged so that the first agent530changes connection points between the first CAS508and the second CAS510as few times as possible. For example, if the first agent530is connected to the first CAS508, all jobs requiring the first CAS508may be processed before the jobs requiring the second CAS510.

In one example, the application504may include a job queue550. The queue550may include a list of various jobs552,554,556to be performed by an agent, such as the first agent530. Each job within the job queue550may be associated with a preferred connection point. For example, job A552and job C556may prefer or require the first CAS508as their connection point. Job B554may prefer or require the second CAS510as the connection point.

The application504may also include a manager module560to manage jobs for the first agent530. The manager module560may access an agent connection point cache562. The agent connection point cache562may identify the most recent connection point used by the first agent530. In other words, the agent connection point cache562may indicate to the manager module560what the current connection point is for the first agent530. In addition, the management module560may access a target connection point cache558. The target connection point cache558may include a list of preferred connection points for various targets or mailboxes.

FIG. 6is a block diagram illustrating another embodiment of a job management system600. In one embodiment, an application604may include a first agent630and a second agent632. The agents630,632may process various mailboxes or jobs. The application604may include a job queue650, which lists the various jobs to be performed by either the first agent630or the second agent632. A manager module660may manage the distribution of the jobs652,654,656to the first agent630and the second agent632.

In one embodiment, the first agent630and a second agent632may connect to a connection point, such as a first CAS608or a second CAS610, in order to perform the various jobs. The first CAS608and the second CAS610may be located at a first active directory site664. In one configuration, the agents630,632may not be tied to a particular connection point608,610. The jobs may be assigned to the agents630,632by the manager module660so that each agent630,632may change connection points as few times as possible. In other words, if the first agent630is using the first CAS608and the second agent632is using the second CAS610, jobs (such as job A652and job C656) requiring the first CAS608may be assigned to the first agent630. Jobs (such as job B654) requiring the second CAS610may be assigned to the second agent632.

In one example, if there are no more jobs requiring the second CAS610, but there are still jobs requiring the first CAS608, the second agent632may be assigned a job by the manager module660that requires the first CAS608. Similarly, if there are no more jobs requiring the first CAS608but there are still jobs requiring the second CAS610, the first agent630may be assigned a job by the manager module660requiring the second CAS610.

FIG. 7is a block diagram illustrating another embodiment of a job management system700. An application704may include three agents730,732,768to process various jobs752,754,756. Each agent730,732,768may use a connection point708,710,770in order to complete the jobs752,754,756. For example, the jobs may include processing data within mailboxes. The mailboxes may be accessed from one or more of the various connection points708,710,770.

In one embodiment, a first agent730and a second agent732may be tied to a first CAS708connection point and a second CAS710connection point. A third agent768may be tied to a third CAS770connection point. In one configuration, the third agent768may be assigned the jobs requiring the third CAS770connection point. The first agent730and a second agent732may be assigned jobs requiring the first CAS708and the second CAS710. The third CAS770may reside at a second active directory site766which may be different than a first active directory site764. The first CAS708and the second CAS710may reside at the first active directory site764. The third CAS770may be at a different active directory site than the other connection points in order to minimize network traffic.

In one example, special mailboxes, such as mailboxes belonging to a group of company executives, may have a dedicated connection point. The application704may be configured such that one agent, such as the third agent768, may be reserved purely for processing the data of a special mailbox. In other words, the third agent768may be reserved to connect only to the third CAS770, which may be the preferred connection point for a special mailbox.

FIG. 8is a flow diagram illustrating one embodiment of a method800for managing connections in order to process various data from one or more mailboxes. In one example, the method800may be implemented by an agent within an application.

In one configuration, a connection with an access server may be established802in order to determine the connection points for one or more targets (or mailboxes) to process. The access server may be a client access server (CAS). The one or more targets may be arranged804in a certain order based on the connection points for each target. In other words, targets associated with a first connection point may be grouped together, and targets associated with a second connection point may be grouped together.

In one embodiment, a connection may be established806with a connection point, such as a first connection point. A target assigned or associated with the first connection point may be processed808. A determination810may be made as to whether an additional target exists that is also assigned to the first connection point. If it is determined810that an additional target exists that is also assigned to the first connection point, the method800may return to process808the additional target associated or assigned to the first connection point. If, however, it is determined810that an additional target does not exist that is assigned to the first connection point, the connection with the first connection point may be terminated812.

A determination814may be made as to whether any additional targets exist to process. If it is determined814that there are additional targets to process, the method800may return to establish a connection with a connection point, such as a second connection point, that is associated with the additional target. The second connection point may be different than the first connection point previously used. The method800may continue as outlined above. If, however, it is determined814that there are no additional targets to process, the method800may end.

FIG. 9is a flow diagram illustrating one embodiment of a method900for managing various jobs assigned to agents of an application. The method900may be implemented by a manager module560within the application.

In one embodiment, a work request may be received902from an agent. An agent connection point cache may be read904in order to determine906whether a current connection point exists for the agent requesting work. If it is determined906that a current connection point does not exist, a list of allowed connection points for the agent may be read914. If, however, it is determined906that a current connection point does exist for the agent, a determination908may be raised as to whether a job exists for the current connection point. If it is determined908that a job does exist for the current connection point, the job may be assigned910to the agent. In one embodiment, the agent connection point cache may then be updated912. If, however, it is determined908that a job does not exist for the current connection point, the list of allowed connection points for the agent may be read914as previously described.

In addition, the agent connection point cache for all entries may also be read916and a determination918may be made as to whether an allowed connection point is available. If it is determined918that an allowed connection point is not available, the highest priority job for any allowed connection points may be determined922. The job may then be assigned910to the agent. The agent connection point cache may then be updated912as previously described. If, however, it is determined918that an allowed connection point is available, a determination920may be made as to whether a job exists for the connection point. If it is determined920that a job does not exist for the connection point, the highest priority job for any allowed connection point may again be determined922. If, however, it is determined920that a job does exist for the connection point, the job may be assigned910to the agent, and the agent connection point cache may be updated912.

In other words, an agent requesting work may use a different connection point than another agent, if possible. For example, if a first agent is already connected to a first connection point, and a second agent is able to use either the first connection point and a second connection point, when the second agent requests work, the second agent may be given work associated with the second connection point, if work exists for that connection point.

As previously stated, the present systems and methods may configure an application that processes mailboxes in an Exchange system. Applications processing data in Exchange mailboxes may be required to efficiently manage the configuration of application settings. For example, in an Exchange 2010 system, in particular with DAGs, the data may no longer be tied to a specific mailbox server. As a result, a mailbox server may not be an effective configuration point for the application. Instead, as the application is targeting the Exchange data, a mailbox database may be a more efficient configuration point for the application.

In a large organization (or a hosting company), however, there may be a large number of mailbox databases. This may require an extensive amount of time and resources to manage the system. As a result, the present systems and methods may use a group of databases as a configuration point for the application instead of individual mailbox databases. A group of databases may include any number of databases. In one embodiment, the databases within a group may be hosted on different servers, in different DAGs, etc.

In one embodiment, groups of databases may allow application settings and resources, such as maintenance, worker processors, etc., to be set against the data rather than the physical server, and may ensure that the data are processed at the appropriate time regardless if the data are active, and to finely tune the performance of the application. By grouping databases, the present systems and methods may reduce the number of places an administrator may be required to configure settings of the application.

In one embodiment, the application may define a default ‘all other databases group’, such that any database not defined in a group may be part of the default group. The application may determine if there are any mailboxes that will not be processed by the existing groups. The databases that include these mailboxes may be added to the ‘all other databases group’.

FIG. 10is a block diagram illustrating one embodiment of an Exchange system1000. In one configuration, an application1004may include a first agent1030, a second agent1032, and a third agent1072. The agents1030,1032,1072may process various jobs for the application1004. For example, the agents may process mailbox data, where the mailboxes may be part of a mailbox database. The mailbox databases may be hosted on a mailbox server. For example, a first server1038may include a first database1012, a second database1014, and a third database1016. Each database may include one or more mailboxes. For example, the first database1012may include mailbox A1018and mailbox D1024. The second database1014may include mailbox B1020, and the third database1016may include mailbox C1022.

The application1004may also include group 1 settings1074, which may indicate the configuration of the application1004in order to indicate which databases are to be processed or accessed, and which agents are to carry out the processes. For example, the group 1 settings1074may indicate that the application1004is configured to target mailbox A1018, mailbox D1024, mailbox B1020, and mailbox C1022. However, the group 1 settings1074may only include the first database1012and the second database1014. As a result, the first agent1030, the second agent1032, and the third agent1072may only access the data within the first database1012and the second database1014. As a result, mailbox C1022may not be processed with the current group 1 settings1074.

FIG. 11is a block diagram illustrating another embodiment of an Exchange system1100for organizing various databases into groups of databases. An application1104may include a first agent1130, a second agent1132, and a third agent1172. The agents may process mailboxes within mailbox databases. In one embodiment, the databases may be hosted on a mailbox server. For example, a first server1138may host a first database1112, a second database1114, and a third database1116. Each database may include one or more mailboxes. For example, the first database1112may include mailbox A1118and mailbox D1124. The second database1114may include mailbox B1120, and the third database1116may include mailbox C1122.

As previously described inFIG. 10, the application1104may include group 1 settings1174that may indicate the configurations of the application1104. For example, the group 1 settings1174may indicate that each agent1130,1132,1172may complete or process various jobs assigned by the application1104. The group 1 settings1174may also indicate which databases are members of a group 1 of databases. For example, the settings1174may indicate that the first database1112and the second database1114are a part of group 1. As a result, the third database1116may not be included in the group 1 settings1174. In other words, mailbox C1122may not be processed by any of the agents because the third database1116is not included as a member of group 1. In one embodiment, default group settings1176may also be included on the application1104. The default group settings1176may identify databases that have not been assigned to a particular group. As a result, the third database1116may be a member of a default group indicated by the default group settings1176. The default group settings1176may also indicate that each agent1130,1132,1172is authorized to process mailboxes within databases that belong to the default group. This may allow processing of mailbox C1122by any of the agents1130,1132,1172. As shown inFIG. 11, any of the agents1130,1132,1172may process mailboxes that belong to either the group 1 of databases or the default group of databases.

FIG. 12is a block diagram illustrating another embodiment of an Exchange system in which a database availability group1236may exist. In one embodiment, the DAG1236may include a first server1238located at a first region and a second server1240located at a second region. In one configuration, the first region may be in a Greenwich Mean Time (GMT) zone while the second region may be in a GMT-5 zone. In other words, the time zone of the second region may be five hours behind the time zone of the first region.

In one example, various users may desire to access mailboxes within mailbox databases hosted by the first server1238and the second server1240. For example, user A1278, user B1280, and user C1282may desire to access the mailboxes within the first database1212and the second database1214. The users1278,1280,1282may be located at the first region. An application1204may include group 1 settings1274. In one embodiment, the group 1 settings1274may include a database list1284and a time schedule1286. The database list1284may indicate which databases are members of a group 1 of databases. The time schedule1286may indicate a maintenance period or window for when agents (not shown) are allowed to process the various mailboxes being targeted. For example, the first database1212and the second database1214may be included on the database list1284(i.e., the first database1212and the second database1214are members of group 1). The time schedule1286may indicate a GMT zone. In other words, mailboxes within databases that belong to the group 1 of databases may only be processed during a specific time window according to the GMT zone.

In one example, user A1278and user C1282may access the first database1212at the first region. User B1280may access the second database1214located at the second region. Because the first database1212and the second database1214are both included in the group 1 settings1274, the application1204may process or access the first database1212and the second database1214according to the GMT zone. In other words, even though the application1204is accessing the second database1214at the second region, the second database1214at the second region may only be accessed by the application1204during the same maintenance period as the first database1212at the first region. Group 1 may have its own maintenance period indicating that mailboxes within each mailbox database of group 1 may only be processed, for example, between midnight and 5:00 a.m. Even if the mailbox databases failover to a different server (such as the second database1214failing over to the second server1240), the same maintenance window may still be applied. As a result, the mailboxes may not be processed by the application1214when the end users1278,1280,1282also want access to the mailboxes.

FIG. 13is a block diagram illustrating another embodiment of an Exchange system in which a first server1338at a first region has failed. For example, the first server1338may fail and, as a result, a first database1312and a second database1314hosted by the first server1338may not be accessible. Copies of the first database1312and the second database1314hosted by a second server1340at a second region may become active. The first server1338and the second server1340may be part of a database availability group1336.

In one configuration, users1378,1380,1382desiring to access the first database1312and the second database1314may be located at the first region (while the active copies of the first database1312and the second database1314are now located at the second region, on the second server1340). An application1304may also be located at the first region and may include group 1 settings1374. As previously described, the group 1 settings1374may include a database list1384that may include a list of databases that are a part of group 1. The group 1 settings1374may also include a time schedule1386which may indicate which time zone to use when the application1304wishes to perform maintenance or processes on mailboxes1318,1320,1322hosted by the first database1312and the second database1314. In one example, the first region may be in the GMT zone while the second region may be in a GMT-5 zone. The time schedule1386may indicate a maintenance period for the mailboxes according to the GMT zone. The maintenance period indicated by the time schedule1386may be a period of time when the users1378,1380,1382are not accessing the mailboxes. For example, the maintenance period may be from 12:00 am to 5:00 am according to the GMT zone.

In one embodiment, when the first database1312failsover to the second server1340, the group 1 settings1374indicate that mailboxes1318,1322within the first database1312may still be processed by the application1304during the period indicated by the time schedule1386. In other words, the application1304may process the mailboxes1318,1322during a time when the users1378,1380,1382are not accessing the mailboxes.

FIG. 14is a block diagram illustrating one embodiment of an Exchange system managing groups of databases according to the size of the databases. In one example, a database availability group1436may include a first server1438and a second server1440. Each server1438,1440may include copies of a first database1412and a second database1414. In one embodiment, the first database1412may be active on the first server1438and inactive on the second server1440. Similarly, the second database1414may be inactive on the first server1438and active on the second server1440.

In one configuration, each database1412,1414may include one or more mailboxes. For example, the first database1412may include mailbox A1418, mailbox C1422, and mailbox D1424. The second database1414may include mailbox B1420. In other words, the first database1412may be significantly larger than the second database1414. An application1404may include one or more agents to complete jobs or process the various mailboxes. For example, a first agent1430, a second agent1432, and a third agent1472may connect with the first database1412on the first server1438in order to process mailbox A1418, mailbox C1422, and mailbox D1424. A fourth agent1488may connect with the second database1414on the second server1440in order to process mailbox B1420. The application1404may include settings for various database groups. For example, group 1 settings1474may indicate that the first database1412is a member of group 1. Group 2 settings1490may indicate that the second database1414is a member of group 2. The group 1 settings1474may also indicate that the first agent1430, the second agent1432, and the third agent1472are dedicated agents for the first database1412. The group 2 settings1490may indicate that only the fourth agent1488is the dedicated agent for the second database1414. In other words, based on the group settings1474,1490, different numbers of agents may be dedicated to a particular database.

FIG. 15is a block diagram illustrating one embodiment of an Exchange system managing agents that process jobs after the failure of a server. In one example, a database availability group1536may include a first server1538and a second server1540. The first server1538may fail and, as a result, a first database1512and a second database1514hosted by the first server1538may be inaccessible. A second server1540may host copies of the first database1512and the second database1514. When the first server1538fails, inactive copies of the databases1512,1514hosted by the second server1540may become active. In other words, if the first database1512was active on the first server1538before the first server failed, the first database1512may become active on the second server1540after the failure of the first server1538.

In one embodiment, an application1504may include various agents1530,1532,1572,1588to process mailboxes within the first database1512and the second database1514. Group 1 settings1574may indicate that the first database1512is a member of group 1 and the first agent1530, the second agent1532, and the third agent1572are dedicated agents for the first database1512. Group 2 settings1590may indicate that the second database1514is a member of group 2 and only the fourth agent1588may be dedicated for the second database1514. The group 1 settings1574may include more agents dedicated for the first database1512because the first database1512may include mailbox A1518, mailbox C1522, and mailbox D1524, while the second database1514only contains mailbox B1520.

As explained above, if a mailbox database is particularly large (such as the first database1538), the database may be the sole member of a database group. The group may have a number of agents dedicated to processing the targets, or mailboxes, in the large database in order to ensure that the work is done inside a particular maintenance window. Other mailbox databases may be processed by different agents and the work load may be distributed.

FIG. 16is a block diagram illustrating another embodiment of an Exchange system managing the processing of mailboxes by organizing databases into various database groups. As explained above, the association of data to agents may allow for an application1604to use different credentials for different data by assigning agents to run as specific accounts.

In one embodiment, customer A1690and customer B1692may be associated with a particular server and mailbox database hosted by a server. For example, customer A1690may be associated with a first server1638which hosts a first database1612. Customer B1692may be associated with a second server1640which hosts a second database1614. Each customer1690,1692may be associated with mailboxes in a mailbox database1612,1614. Each database1612,1614may have its own administrator credential. For example, customer A1690may be associated with mailbox A1618, mailbox B1620, and mailbox C1622. Customer B1692may be associated with mailbox D1624, mailbox E1626, and mailbox F1628. The application1604may include settings for two different groups of databases. For example, group 1 settings1674may include a database list1684A that lists the databases that are a member of group 1. Group 2 settings1690may also include a database list1694B that lists databases that are a member of group 2. These two mailbox database groups may be created to target the mailboxes of the two customers1690,1692. Each mailbox database group may include its own login credentials1686A,1686B to ensure that agents (not shown) may only process mailboxes from a particular customer's mailbox database.

From the above description, it may be possible to end up in a situation where a number of mailboxes may not be processed by any agents. For example, if the application1604includes settings for a single database group, and no default group settings exist, mailboxes may exist in a mailbox database that is not a member of the database group. In one configuration, these mailboxes may not be processed. In one example, an administrator may either add an ‘all other databases’ group or place the mailbox database in an existing group. To notify an administrator if this situation has occurred, the application1604may analyze the target mailboxes and groups, and determine if there are any target mailboxes that will not be processed. An alert may be generated if there are targeted mailboxes that will not be processed. The alert may be an event in an event log, an e-mail, or some other notification. The administrator may then create an ‘all other databases’ group. The databases that are not a member of a group may become members of the ‘all other databases’ group. Targeted mailboxes associated with these databases may be processed.

In one embodiment, the application may be able to scan an Exchange system that is being targeted and automatically create a number of database groups based on the current system resources and configurations. For example, the application1604may scan the system and create groups based on the geographical regions, data centers where the Exchange servers exist, etc. In another embodiment, a group may be created for each Exchange server that includes the mailbox databases included in that Exchange server. Each group may also be assigned sufficient agents based on the amount of target mailboxes in the mailbox databases. In the case of a failover, the application resources may still be evenly spread so that the performance is not degraded.

In another embodiment, the application1604may also assist with automatic group generation by examining the Exchange environment and determining the optimal way of grouping the databases for application configuration settings. For example, if the Exchange servers are distributed across active directory sites, the databases may be grouped such that each site has its own group. This may allow the application to then configure agents in each site in order to process the data and reduce traffic on the WAN. If the Exchange system is being backed up by a third party application, the application1604may clear a third party application for its back-up window and ensure groups are created so that the application only processes databases outside the back-up windows. These groups may then have schedules automatically applied based on the available window. For example, if the back-up application is processing a first mailbox database1612and a second mailbox database1614from 1:00 a.m. to 3:00 a.m. and a third mailbox database and a fourth mailbox database from 3:00 a.m. to 5:00 a.m., then the application1604may automatically configure a first group including the first and second mailbox databases1612,1614and schedule those to be processed from 4:00 a.m. to 7:00 a.m. The application1604may create a second group, including the third and fourth databases and schedule those to be processed from 5:00 a.m. to 6:00 a.m. The length of the schedules may be determined by examining either the number of mailboxes in the databases or the current size of the databases.

In one embodiment, an application user interface may allow the administrator to manually create groups by selecting mailbox databases to be added to a group by using a wizard. This may allow the selection of mailbox databases by name, by the mailbox server currently hosting the active copy of the database, or by specifying an active directory query to search for databases on other active directory attributes. The user interface may also include the option of analyzing the target data and assigning mailbox databases to groups based on the resources available to that group. For example, if a first group includes databases containing a total of 5,000 mailboxes and a second group consists of databases containing 1,000 mailboxes, and both groups are assigned the same number of resources to process the data, then the application user interface may suggest, or automatically configure, a newly added database to be added to the second group.

FIG. 17is a flow diagram illustrating one embodiment of a method for creating a group of databases. In one embodiment, a group name and a description of the group may be received1702. A request to create the group may also be received1704. A determination1706may be made as to whether the group will be a static or dynamic group. If it is determined1706that the group will be a static group, instructions on how to list databases in the group may be received1708. A selection of databases from a results list may also be received1710and settings for the group may be received1716. If, however, it is determined1706that the group will be a dynamic group, lightweight directory access protocol (LDAP) queries for database selections may be received1712. In one embodiment, the request for an active directory site restriction may also be received1714. In one configuration, settings for the group may then be received1716.

FIG. 18is a flow diagram illustrating one embodiment of a method for adding databases to a group. In one configuration, an active directory may be scanned1802for exchange databases. The Exchange server currently owning the database may be determined1804. A determination1806may be made as to whether an active directory site for an Exchange server is known. If it is determined1806that an active directory site for the Exchange server is known, the database may be added1814to the group for the active directory site. If, however, it is determined1806that an active directory site for the Exchange server is not known, the active directory site for the Exchange server may be determined1808. In addition, a determination1810may be made as to whether a group for the active directory site has already been created. If it is determined1810that a group for the active directory site has already been created, the database may be added to the group1814. If, however, it is determined1810that a group for the active directory site has not been created, a group for the active directory site may be created1812, and the database may be added to the group1814. A determination1816may be made as to whether additional databases exist to process. If it is determined1816that additional databases exist, the method1800may return to determine1804the Exchange server currently owning the additional database. If, however, it is determined1816that additional databases to process do not exist, the method1800may end.

FIG. 19is a flow diagram illustrating another embodiment of a method1900for adding a database to a group. In one example, an active directory may be scanned1902for Exchange databases. An Exchange server associated with an active Exchange database may be identified1904. A determination1906may be made as to whether a group for the Exchange server has been created. If it is determined1906that a group for the Exchange server has been created, a database may be added1910to a group. If, however, it is determined1906that a group for the Exchange server has not been created, a group for the Exchange server may created1908. The database may then be added1910to the group. A determination1912may be made as to whether additional databases exist to process. If it is determined1912that additional databases exist, the method1900may return to identify1904an Exchange server associated with an Exchange database. If, however, it is determined1912that additional databases do not exist, the method1900may end.

FIG. 20is a flow diagram illustrating a further embodiment of a method2000for adding databases to a group. In one embodiment, an active directory may be scanned2002for database availability groups (DAGs). A database group may be created2004. The active directory may be scanned2006for databases belonging to a DAG. A database may be added2008to the database group, and a determination2010may be made as to whether additional databases exist to process. If it is determined2010that additional databases exist, the database may be added2008to the database group. If, however, it is determined2010that additional databases do not exist, a determination2012may exist as to whether additional DAGs exist to process. If it is determined2012that additional DAGs exist, a database group may be created2004and the steps of the method2000may be repeated as described above. If, however, it is determined2012that additional DAGs do not exist, the method2000may end.

FIG. 21is a flow diagram illustrating a further embodiment of a method2100for adding a database to a group. In one embodiment, an active directory may be scanned2102for Exchange databases. An application for grouping information about databases may be queried2104. A determination2106may be made as to whether a group already exists. If it is determined2106that a group already exists, a database may be added2112to the group. If, however, it is determined2106that a group does not already exist, a group may be created2108, and settings based on the grouping information may be applied2110. The database may then be added2112to the group. A determination2114may be made as to whether additional databases exist to process. If it is determined2114that additional databases do exist, the method2100may return to query2104an application for grouping information about databases. The method2100may then continue as described above. If, however, it is determined2114that additional databases do not exist, the method2100may end.

FIG. 22is a flow diagram illustrating one embodiment of a method2200for creating a dynamic group of databases. In one embodiment, an active directory may be scanned2202for Exchange mailbox servers. A dynamic group may be created2204. In one embodiment, a query for the dynamic group based on an identified Exchange server associated with the group may be created2206. A determination2208may be made as to whether additional servers exist to process. If it is determined2208that additional servers exist, the method2200may return to create2204a dynamic group. The method2200may then continue as outlined above. If, however, it is determined that additional servers do not exist, the method2200may end.

FIG. 23is a flow diagram illustrating a further embodiment of a method2300for creating a dynamic group of databases. In one configuration, an active directory may be scanned2302for DAGs. A dynamic group may be created2304. A query for the dynamic group may be created2306. In one embodiment, the query may be based on an identified Exchange server or DAG associated with the group. A determination2308may be made as to whether additional DAGs exist. If it is determined2308that an additional DAG exits, the method2300may return to create2304a dynamic group. The method2300may then continue as outlined above. If, however, it is determined that additional DAGs do not exist, the method2300may end.

FIG. 24is a flow diagram illustrating a further embodiment of creating a dynamic group of databases. In one embodiment, an active directory may be scanned2402for active directory sites. A dynamic group may be created2404. In one embodiment, a wild card query made for the dynamic group may be created2406. A determination2408may be made as to whether additional active directory sites exist to process. If it is determined2408that additional active directory sites do exist, the method2400may return to create2404a dynamic group. The method2400may then continue as outlined above. If, however, it is determined2408that additional active directory sites do not exist, the method2400may end.

FIG. 25is a flow diagram illustrating one embodiment of a method2500for determining membership of dynamic groups. In one configuration, an active directory may be scanned2502for mailbox databases. Each mailbox database discovered from the scan may be added2504to a master list. A first mailbox database belonging to a first static group may be removed2506from the master list. A determination2508may be made as to whether all the mailbox databases in the first static group have been processed. If it is determined2508that not all of the mailbox databases within the first static group have been processed, the method2500may return to remove2506, for example, a second mailbox database belonging to the first static group from the master list. This may continue until it is determined2508that all the mailbox databases belonging to the first static group have been processed.

After all of the mailbox databases belonging to a static group, such as the first static group, a determination2510made be made as to whether all the static groups have been processed. If it is determined2510that not all of the static groups have been processed, the method2500may return to remove2506a first mailbox database belonging to, for example, a second static group, from the master list. The method2500may then continue to process and remove all the mailbox databases belonging to the second static group until it is determined2508that all the mailbox databases belonging to the second static group have been processed. The above-mentioned steps may continue for each static group and for each mailbox database belonging to a static group.

Once each static group (and the mailbox databases belonging to a static group) have been processed, an active directory query of a dynamic group, such as a first dynamic group, may be queried2512for databases. The databases discovered from the query may be added to a group list for the first dynamic group. A first database added to the group list may be processed in order to determine2514whether the first database is included in the master list. If the first database is included in the master list, the first database may be removed2518from the master list. If, however, the first database is not included in the master list, the first database may be removed2516from the group list. A determination2520may then be made as to whether there are additional databases to process. If there are additional databases to process from the first dynamic group, a second database, for example, may be processed to determine2514whether the second database is included in the master list. The steps described above may then repeat until each database belonging to the first dynamic group have been processed.

When each database belonging to the first dynamic group has been processed, a determination2522may be made as to whether there are additional dynamic groups to process. If it is determined that there are additional dynamic groups, such as a second dynamic group, to process, the method2500may return to process/execute2512an active directory query of the second dynamic group for databases. Databases discovered from the query of the active directory of the second dynamic group may be added to a group list, and the steps previously described may be repeated for each database belonging to the second dynamic group. These steps may repeat for each dynamic group (and each database belonging to a dynamic group) until each dynamic group has been processed.

After each dynamic group has been processed, a determination2524may be made as to whether any databases remain on the master list. If additional databases remain on the master list, a warning may be generated2526. If, however, there are no databases remaining on the master list, the method2500may end.

FIG. 26depicts a block diagram of a computer system2610suitable for implementing the present systems and methods. Computer system2610includes a bus2612which interconnects major subsystems of computer system2610, such as a central processor2614, a system memory2617(typically RAM, but which may also include ROM, flash RAM, or the like), an input/output controller2618, an external audio device, such as a speaker system2620via an audio output interface2622, an external device, such as a display screen2624via display adapter2626, serial ports2628and2630, a keyboard2632(interfaced with a keyboard controller2633), a storage interface2634, a floppy disk drive2637operative to receive a floppy disk2638, a host bus adapter (HBA) interface card2635A operative to connect with a Fibre Channel network2690, a host bus adapter (HBA) interface card2635B operative to connect to a SCSI bus2639, and an optical disk drive2640operative to receive an optical disk2642. Also included are a mouse2646(or other point-and-click device, coupled to bus2612via serial port2628), a modem2647(coupled to bus2612via serial port2630), and a network interface2648(coupled directly to bus2612).

Bus2612allows data communication between central processor2614and system memory2617, which may include read-only memory (ROM) or flash memory (neither shown), and random access memory (RAM) (not shown), as previously noted. The RAM is generally the main memory into which the operating system and application programs are loaded. The ROM or flash memory can contain, among other code, the Basic Input-Output system (BIOS) which controls basic hardware operation such as the interaction with peripheral components. For example, the application104to implement the present systems and methods may be stored within the system memory2617. Applications resident with computer system2610are generally stored on and accessed via a computer readable medium, such as a hard disk drive (e.g., fixed disk2644), an optical drive (e.g., optical drive2640), a floppy disk unit2637, or other storage medium. Additionally, applications can be in the form of electronic signals modulated in accordance with the application and data communication technology when accessed via network modem2647or interface2648.

Storage interface2634, as with the other storage interfaces of computer system2610, can connect to a standard computer readable medium for storage and/or retrieval of information, such as a fixed disk drive2644. Fixed disk drive2644may be a part of computer system2610or may be separate and accessed through other interface systems. Modem2647may provide a direct connection to a remote server via a telephone link or to the Internet via an internet service provider (ISP). Network interface2648may provide a direct connection to a remote server via a direct network link to the Internet via a POP (point of presence). Network interface2648may provide such connection using wireless techniques, including digital cellular telephone connection, Cellular Digital Packet Data (CDPD) connection, digital satellite data connection or the like.

Many other devices or subsystems (not shown) may be connected in a similar manner (e.g., document scanners, digital cameras and so on). Conversely, all of the devices shown inFIG. 26need not be present to practice the present disclosure. The devices and subsystems can be interconnected in different ways from that shown inFIG. 26. The operation of a computer system such as that shown inFIG. 26is readily known in the art and is not discussed in detail in this application. Code to implement the present disclosure can be stored in computer-readable storage media such as one or more of system memory2617, fixed disk2644, optical disk2642, or floppy disk2638. The operating system provided on computer system2610may be MS-DOS®, MS-WINDOWS®, OS/2®, UNIX®, Linux®, or another known operating system.

FIG. 27is a block diagram depicting a network architecture2700in which client systems2710,2720and2730, as well as storage servers2740A and2740B (any of which can be implemented using computer system2710), are coupled to a network2750. In one embodiment, the application104may be located within a server2740A,2740B to implement the present systems and methods. The storage server2740A is further depicted as having storage devices2760A(1)-(N) directly attached, and storage server2740B is depicted with storage devices2760B(1)-(N) directly attached. SAN fabric2770supports access to storage devices2780(1)-(N) by storage servers2740A and2740B, and so by client systems2710,2720and2730via network2750. Intelligent storage array2790is also shown as an example of a specific storage device accessible via SAN fabric2770.

With reference to computer system2610, modem2647, network interface2648or some other method can be used to provide connectivity from each of client computer systems2710,2720and2730to network2750. Client systems2710,2720and2730are able to access information on storage server2740A or2740B using, for example, a web browser or other client software (not shown). Such a client allows client systems2710,2720and2730to access data hosted by storage server2740A or2740B or one of storage devices2760A(1)-(N),2760B(1)-(N),2780(1)-(N) or intelligent storage array2790.FIG. 27depicts the use of a network such as the Internet for exchanging data, but the present disclosure is not limited to the Internet or any particular network-based environment.