US20020083265A1 - Methods for increasing cache capacity - Google Patents

Methods for increasing cache capacity Download PDF

Info

Publication number
US20020083265A1
US20020083265A1 US09/748,552 US74855200A US2002083265A1 US 20020083265 A1 US20020083265 A1 US 20020083265A1 US 74855200 A US74855200 A US 74855200A US 2002083265 A1 US2002083265 A1 US 2002083265A1
Authority
US
United States
Prior art keywords
data
cache
original data
variants
steps
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US09/748,552
Inventor
Farrell Brough
Helaman Ferguson
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Micro Focus Software Inc
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US09/748,552 priority Critical patent/US20020083265A1/en
Assigned to NOVELL, INC. reassignment NOVELL, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FERGUSON, HELAMAN DAVID PRATT, BROUGH, FARRELL LYNN
Priority to US09/891,707 priority patent/US6850964B1/en
Publication of US20020083265A1 publication Critical patent/US20020083265A1/en
Assigned to MICRO FOCUS SOFTWARE INC. reassignment MICRO FOCUS SOFTWARE INC. CHANGE OF NAME (SEE DOCUMENT FOR DETAILS). Assignors: NOVELL, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99953Recoverability
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Definitions

  • the present invention relates to methods for increasing cache capacity.
  • Providing data and application services to large number of concurrent clients via a server poses a number of performance and memory challenges for the server. Some of these performance and memory challenges are alleviated by utilizing relatively small amounts of volatile memory called cache. By storing small frequently accessed or recently accessed data in the cache, clients may quickly use the data in connection with an application, since access to the data are in portions of the random access memory associated with the server and are correspondingly more efficiently retrieved by the server.
  • the server would be capable of servicing more clients, addressing the needs of high data volume clients, and more efficiently assisting process intensive client requests.
  • the capacity of the cache is often constrained by the hardware architecture and the operating system architecture of the server.
  • modifying the hardware and operating system associated with the server is not a practical option for most data and application service providers This is so, because the hardware and operating system are circumscribed in large part by the state of existing technology available Therefore, as a practical matter individual software applications must be developed to improve cache capacity and performance by logically expanding the cache capacity.
  • an object of the invention is to provide methods of increasing cache capacity.
  • identifying data in a cache which is an original unmodified version of that data and by identifying all the variant forms of the original data in the cache, the differences between the variant forms and the original form of the data may be determined, and the variant data may be discarded from the cache. Discarding the variant data from the cache will free up a substantial amount of space which the cache required to house the variant data.
  • the differences between the variant data and the original data may be applied against the original data to reconstruct the variant data on an as needed basis. This will remove large amounts of unused variant data from the cache and make it available only when needed, and increase cache capacity and performance substantially.
  • a method for increasing cache capacity having executable instructions comprising receiving in a cache an original data wherein access is required to one or more variants of the original data, and the variants do not reside in the cache. Furthermore, access to one or more of the variants from the cache is provided by using one or more delta data which are operable to be applied against the original data to produce the variants of the original data. The delta data reside in the cache.
  • a method of reducing cache storage requirements having executable instructions comprising identifying an original data in the cache and locating one or more variants of the original data in the cache. Next, one or more delta data are produced by noting one or more differences between the original data and the variants. After the delta data are produced, the variants are purged from the cache.
  • a method of producing derivatives from an original data having executable instructions comprising identifying an original data residing in a cache and identifying one or more variants of the original data. Further, one or more delta data are produced by recording the difference between each variant and the original data. The original data and the delta data are retained in the cache.
  • FIG. 1 depicts a flow diagram of a method of increasing the capacity of a cache
  • FIG. 2 depicts a schematic diagram of a method for increasing the cache capacity of a server
  • FIG. 3 depicts a flow diagram of a method ofreducing cache storage requirements
  • FIG. 4 depicts a flow diagram of a method of producing derivatives from an original data
  • FIG. 5 depicts a schematic diagram of original data, variant data, and delta data.
  • the present invention provides methods for increasing cache capacity.
  • One embodiment of the present invention is implemented in NOVELL's NetWare operating system environment providing concurrent web data and application services to clients via a web server and implemented with the Active Server Pages (ASP), Java, C, and C++ programming languages.
  • ASP Active Server Pages
  • Java Java
  • C C++
  • other operating systems, computing architectures, and programming languages may also readily employed.
  • ICS is an application which sits between a client and a server used by the client, and it facilitates caching for the client in connection with the server.
  • ICS is an application which sits between a client and a server used by the client, and it facilitates caching for the client in connection with the server.
  • other caching applications may also benefit from the present invention as well.
  • Data which reside in a cache may be used for a variety of purpose, for example and by way of example only, data may be viewed by a requester not having the ability to modify the data, data may be modified by a requester, and the like.
  • a requester may be an application residing on a computing device associated with the cache, an application residing remotely from the computing device associated with the cache, and the like.
  • access to data residing in cache is critical to the performance of an application requiring the data, and the more capacity that the cache has to retain data, the better performance an application will experience since access to data required by the application may be readily retrieved from the random access memory of the computing device having the data.
  • a client-server based architecture multiple clients may rely on a server to provide data or application services.
  • a server may also be a client, and that a server may actually entail multiple computing devices
  • a single client may be associated with a user, an application, and the like.
  • accesses to a cache associated with a computing device occurs by software applications. Further, these applications are accessing the cache to retrieve references to data needed by the applications to perform some function or operation of the application
  • Original data 360 refers to data which is unaltered, or a first version of data beginning with some initial point in time which may or may not become altered at some later point in time. If alterations occur to the original data 360 , each instance of these alterations may be viewed as variant data 390 , which are altered original data 360 , or a subsequent version of the original data 360 .
  • the original data 360 in FIG. 5 comprises a string of textual characters 370 .
  • text characters are used for illustrative purposes in FIG. 5, it will be readily apparent to those skilled in the art that any computer readable medium data will suffice as data for purposes of the present invention, and that any computer readable medium data are capable of residing in the cache of a computing device.
  • Variant data 390 are a derivative of the original data 360 , having a single substring “variant” 410 in the variant data 390 which replaces the substring “original” 380 occurring in the original data 360 .
  • the differences between the original data 360 and the variant data 390 may be reflected by a delta data 420 which is operable to be read by a set of executable instructions on a computing device and applied against the original data 360 to produce the variant data 390 .
  • the delta data 420 may be retained in the cache of a computing device together with the original data 360 , and the variant data may be discarded or purged freeing up significant space within the cache and thereby increasing cache capacity.
  • the efficiency of accessing the cache is improved since variant data 390 are not stored in the cache.
  • delta data 420 depict a single example of how executable instructions may be embodied in the delta data 420 , such that when these instructions are executed using the original data 360 , variant data 390 is produced.
  • the single character “d” 430 is an indication that a delete operation is to take place on the first line “11” 440 of the original data 360 .
  • the substring “original” 450 is what is to be deleted from the original data.
  • the character “i” 460 in the delta data 420 is an indication that an insert operation is also to be performed on the original data 360 in order to generate the variant data 390 .
  • the insertion is to occur on line 1 “ 11 ” 470 with the substring “variant” 480 to be inserted before “b” 490 the substring “data” 500 which occurs in the original data 360 .
  • the variant data 390 is produced, since all unaltered aspects of the original data 360 carry over to the generated variant data 390 . In this way, variant data 390 may be recreated as needed by applying one or more delta data 420 against the original data 360 .
  • delta data 420 may take on a variety of syntaxes without departing from the present invention, just like computing programming languages do.
  • the syntax of the delta data 420 is presented by way of example only to demonstrate how executable instructions defining the differences between original data 360 and variant data 420 may be assembled so that when applied against the original data 360 the variant data 390 is reproduced.
  • delta data may include any instructions which are operable to be applied against an original data and produce a variant data.
  • delta data may include, by way of example only, user specific extensible stylesheets language (XSL) files which are operable to be applied against original data (e.g. extensible markup language (XML) files) to produced individualized variant data.
  • XSL extensible stylesheets language
  • XML extensible markup language
  • the construction of the original delta data 420 may be achieved with any number of readily available software applications which compare two data files and produce a report as to the differences.
  • the report itself may be used as the delta data 420 , with a customized application written to read the report and apply it against the original data 360 to produce the variant data 390 .
  • the UNIX operating system provides an operation entitled “diff” which produces a report as to the differences between two data files.
  • This well known UNIX command also provides an option “-e” where the report produced is in a script format which may be directly executed using the original data as input to produce a variant data.
  • producing delta data are easily achieved with a variety of existing tools in the art.
  • the web page may not reside in the server's cache so the first request by a client for the web page causes the server to acquire the web page and place it in the cache.
  • a profile of the client, or a security associated with the requested web page may require a variant version of the web page to be provided to the client, rather than the unaltered form of the web page. If this is the case, the original web page is altered and a variant web page is produced, placed in cache, and made available to the client.
  • variant web page now resides in the cache along with an original web page.
  • An application may be applied to compare the original web page and the variant web page while in the cache, producing a delta data which are operable to be applied against the original web page to produce the variant web page.
  • delta data are stored in the server cache as well, and the variant web page is flushed out of the server cache, but the delta data remain.
  • the variant web page is again requested wherein it is determined that the variant web page does not reside in the cache, but the delta data and the original web page necessary to create the variant web page does. Therefore, the delta data and the original web page are used to create the variant web page as needed, while the variant web page need not reside in the server cache, thereby freeing up resources of the server cache to house other data needed to service additional clients and client requests.
  • a web server servicing a variety of concurrent clients and requests, may house a single original web page in its cache, along with one or more much smaller delta data operable to produce multiple variant web pages, wherein each variant web page may be quickly and efficiently generated from the original web page using the appropriate delta data which does reside in cache.
  • This permits the web server to handle more requests and service more clients since the cache capacity is increased, because the delta data are much smaller compact data files then the complete variant data files.
  • FIG. 1 depicts a flow diagram of a method of increasing the capacity of a cache.
  • original data are received in step 10
  • variant data are received in step 20
  • the original data and the variant data are then compared to one another in step 30 . Comparison may occur using any number of readily available software utilities, such as by way of example only, the UNIX “diff” facility.
  • the output of the compare in step 30 is the production of a delta data 40 , which are operable to be applied against the original data to produce a variant data.
  • the original data and the delta data are retained in the cache in step 50 .
  • the variant data may be removed from the cache if it was placed in the cache during the compare step 30 (not shown)
  • a request is received for variant data in step 60 , wherein the delta data and the original data are acquired from the cache in step 50 , and the delta data are applied against the original data in step 70 , producing the requested variant data in step 80 .
  • the variant data are then sent to the requestor and are purged from the cache in step 90 .
  • management of a server cache using the method depicted in FIG. 1 permits a cache to flush itself of large amounts of data and retain only smaller more efficient delta data, this additional space will increase cache throughput and capacity.
  • FIG. 2 depicts a schematic diagram of a method for increasing the cache capacity of a server.
  • a server cache 100 wherein original data 110 resides and multiple delta data, such as delta data 0 120 and delta data N 130 .
  • Client 0 160 makes a request to receive original data 110 in request step 170 , this request is sent to a server, wherein the server checks the server cache 100 and determines that the original data 110 are present and provides the original data to the request in step 170 .
  • a client N 190 makes a request of a server to receive variant data 0 in step 180 , this causes the server to check the server cache 100 wherein it is determined that delta data, 120 are present along with original data 110 .
  • the delta data 0 are then executed using the original data 110 to produce variant data 0 140 , which are immediately sent to client N 190 via step 180 .
  • the variant data 0 140 are removed from the server cache 100 in step 150 .
  • FIG. 2 depicts a server cache 100 , which is serving multiple clients
  • the cache may reside on a stand alone computing device, and the clients may be applications residing on the stand alone computing device. In this way, management of the cache is improved in a single computing environment as well as in a multi-computing environment, such as by way of example only in a client-server based architecture.
  • FIG. 3 depicts a flow diagram of a method of reducing cache storage requirements. By reducing the storage requirements of a cache, its throughput and performance may be improved as previously presented. Moreover, a cache may provide simultaneous access or concurrent access to clients or applications in step 200 , wherein requests are being made to access original data or variants associated with original data.
  • original data are identified. Identification of original data may occur in a variety of ways, such as by way of example only, applications which use a first data and produce a second data, detecting the production of the second data identifies the first data as original data. For example, a web page which is modified by a personal profile to produce a customized web page. Further, ad hoc software utilities may be written to periodically scan the cache for data which appear similar. As one skilled in the art will appreciate, there are a variety of ways to identify original data residing in the cache.
  • the variants are located in step 230 . As previously presented, these variants may be, by way of example only, customized client views, or security restricted views of original data as depicted in step 220 .
  • delta data are produced in step 240 using the identified original data and the located variant data. Once delta data exist in the cache to reproduce the variant data, the variant data may be purged in step 250 .
  • variant data are reproduced by applying the delta data to the original data, and in step 270 the variant data are delivered to the requester.
  • FIG. 4 depicts a flow diagram of a method of producing derivatives from an original data.
  • original data are identified in a cache.
  • variant data associated with the original data are identified in step 300 .
  • the variant data are compared to the original data to generate a delta data in step 290 .
  • the delta data reflect differences between the original data and the variant data, and are operable to be executed and applied against the original data to produce variant data associated with a version of the original data.
  • the variant data may be removed from the cache, in step 290 , once the delta data has been generated.
  • Multiple clients may access the cache in parallel, concurrently, or simultaneously, such as client N in step 310 where client N is requesting access to the original unaltered data residing in the cache, which are delivered to client N in step 340 .
  • client 0 requests a variant form of the original data in step 320 , wherein the delta data and original data are acquired and applied in step 330 to generate and deliver the variant form of the original data to clients in step 350 .

Abstract

Methods of increasing cache capacity are provided. A method of increasing cache capacity is provided wherein original data are received in a cache with access to one or more variants of the original data being required, but the variants do not reside in the cache. Access is provided to the variants by using one or more delta data operable to be applied against the original data to produce the variants Moreover, a method of reducing cache storage requirements is provided wherein original data and variants of the original data are identified and located within the cache. Further, delta data are produced by noting one or more differences between the original data and the variants, with the variants being purged from the cache. Furthermore, a method of producing derivatives from an original data is provided wherein the original data and variants of the original data are identified. Delta data are produced by recording the difference between each variant and the original data, with the delta data and the original data being retained in the cache.

Description

    FIELD OF THE INVENTION
  • The present invention relates to methods for increasing cache capacity. [0001]
  • BACKGROUND OF THE INVENTION
  • Providing data and application services to large number of concurrent clients via a server poses a number of performance and memory challenges for the server. Some of these performance and memory challenges are alleviated by utilizing relatively small amounts of volatile memory called cache. By storing small frequently accessed or recently accessed data in the cache, clients may quickly use the data in connection with an application, since access to the data are in portions of the random access memory associated with the server and are correspondingly more efficiently retrieved by the server. [0002]
  • If the capacity of the cache could be improved, then the server would be capable of servicing more clients, addressing the needs of high data volume clients, and more efficiently assisting process intensive client requests. Moreover, the capacity of the cache is often constrained by the hardware architecture and the operating system architecture of the server. However, modifying the hardware and operating system associated with the server is not a practical option for most data and application service providers This is so, because the hardware and operating system are circumscribed in large part by the state of existing technology available Therefore, as a practical matter individual software applications must be developed to improve cache capacity and performance by logically expanding the cache capacity. [0003]
  • Presently, with the advent of the omnipresent Internet and browser technology utilized in connection with the World Wide Web (WWW), an increasing number of clients are making demands on servers, which provide data and application services. Moreover, these servers are expected to handle thousands of concurrent requests by clients without any significant degradation in response time to these clients. [0004]
  • Furthermore, users associated with some clients, which are utilizing the servers, are demanding much higher performance from data and application service providers. Broadband and high speed Internet connections have made the performance expectations of users extremely high, which has correspondingly placed difficult and unrealistic burdens on data and application service providers to become more efficient and more performance oriented. [0005]
  • Some data and application service providers have attempted to alleviate the growth pains associated with these increase demands by adding additional hardware to support the server services being provided. Yet, additional hardware entails additional maintenance and additional support which is becoming increasingly difficult to manage for the data and application service providers. More staff is required to support the additional hardware, and more software installed on the additional hardware ensures more expense associated with keeping everything in synch. Furthermore, as previously presented there reaches a point of diminishing returns at which time, the additional hardware added to the server does not increase performance but, rather, decreases performance. [0006]
  • Finally, as computing technology permeates all aspects of society and business, some businesses, which have never had to deal with computing technology and are corresponding ill equipt to manage that technology, are turning to data and application service providers to outsource their technology needs. This demand to outsource business computing technology has added a new layer of demand and complexity on data and application service providers, since business clients of the server demand reliable, instant, and accurate service [0007]
  • Accordingly, methods which will increase cache performance are needed so that data and application services being provided to clients utilizing server technologies may support increase demands in a more efficient manner without the need to add additional hardware. Although as one skilled in the art will appreciate, cache performance of an individual computing device which is not servicing multiple clients would benefit by increased cache performance as well. [0008]
  • SUMMARY OF THE INVENTION
  • Accordingly, an object of the invention is to provide methods of increasing cache capacity. By identifying data in a cache which is an original unmodified version of that data, and by identifying all the variant forms of the original data in the cache, the differences between the variant forms and the original form of the data may be determined, and the variant data may be discarded from the cache. Discarding the variant data from the cache will free up a substantial amount of space which the cache required to house the variant data. [0009]
  • Moreover, should a client request or need the variant data, the differences between the variant data and the original data may be applied against the original data to reconstruct the variant data on an as needed basis. This will remove large amounts of unused variant data from the cache and make it available only when needed, and increase cache capacity and performance substantially. [0010]
  • Additional objectives, advantages and novel features of the invention will be set forth in the description that follows and, in part, will become apparent to those skilled in the art upon examining or practicing the invention. The objects and advantages of the invention may be realized and obtained by means of the instrumentalities and combinations particularly pointed out in the appended claims. To achieve the foregoing and other objects and in accordance with the purpose of the present invention, methods for increasing cache capacity are provided. [0011]
  • A method for increasing cache capacity having executable instructions is provided, comprising receiving in a cache an original data wherein access is required to one or more variants of the original data, and the variants do not reside in the cache. Furthermore, access to one or more of the variants from the cache is provided by using one or more delta data which are operable to be applied against the original data to produce the variants of the original data. The delta data reside in the cache. [0012]
  • Further, a method of reducing cache storage requirements having executable instructions is provided, comprising identifying an original data in the cache and locating one or more variants of the original data in the cache. Next, one or more delta data are produced by noting one or more differences between the original data and the variants. After the delta data are produced, the variants are purged from the cache. [0013]
  • Moreover, a method of producing derivatives from an original data having executable instructions is provided, comprising identifying an original data residing in a cache and identifying one or more variants of the original data. Further, one or more delta data are produced by recording the difference between each variant and the original data. The original data and the delta data are retained in the cache. [0014]
  • Still other aspects of the present invention will become apparent to those skilled in the art from the following description of an exemplary embodiment, which is by way of illustration, one of the exemplary modes contemplated for carrying out the invention. As will be realized, the invention is capable of other different and obvious aspects, all without departing from the invention. Accordingly, the drawings and descriptions are illustrative in nature and not restrictive.[0015]
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • The accompanying drawings, incorporated in and forming part of the specification, illustrate several aspects of the present invention and, together with their descriptions, serve to explain the principles of the invention. In the drawings: [0016]
  • FIG. 1 depicts a flow diagram of a method of increasing the capacity of a cache; [0017]
  • FIG. 2 depicts a schematic diagram of a method for increasing the cache capacity of a server; [0018]
  • FIG. 3 depicts a flow diagram of a method ofreducing cache storage requirements; [0019]
  • FIG. 4 depicts a flow diagram of a method of producing derivatives from an original data; and [0020]
  • FIG. 5 depicts a schematic diagram of original data, variant data, and delta data.[0021]
  • DETAILED DESCRIPTION
  • The present invention provides methods for increasing cache capacity. One embodiment of the present invention is implemented in NOVELL's NetWare operating system environment providing concurrent web data and application services to clients via a web server and implemented with the Active Server Pages (ASP), Java, C, and C++ programming languages. Of course other operating systems, computing architectures, and programming languages (now known or hereafter developed) may also readily employed. [0022]
  • Further, another embodiment of the present invention augments existing software caching applications, such as applications developed specifically to assist in caching, for example NOVELL's Internet Caching System (ICS). ICS is an application which sits between a client and a server used by the client, and it facilitates caching for the client in connection with the server. Of course other caching applications (now known or hereafter developed) may also benefit from the present invention as well. [0023]
  • Data which reside in a cache may be used for a variety of purpose, for example and by way of example only, data may be viewed by a requester not having the ability to modify the data, data may be modified by a requester, and the like. Moreover, a requester may be an application residing on a computing device associated with the cache, an application residing remotely from the computing device associated with the cache, and the like. [0024]
  • As previously presented, access to data residing in cache is critical to the performance of an application requiring the data, and the more capacity that the cache has to retain data, the better performance an application will experience since access to data required by the application may be readily retrieved from the random access memory of the computing device having the data. [0025]
  • Moreover, in a multi-computing environment, such as by way of example only, a client-server based architecture, multiple clients may rely on a server to provide data or application services. It is also readily apparent to one skilled in the art that a single server may also be a client, and that a server may actually entail multiple computing devices Furthermore, a single client may be associated with a user, an application, and the like. At the lowest level, accesses to a cache associated with a computing device occurs by software applications. Further, these applications are accessing the cache to retrieve references to data needed by the applications to perform some function or operation of the application With this context, being used for purposes of illustration only, consider FIG. 5 which depicts a schematic of [0026] original data 360, variant data 390, and delta data 420. These data may at different points in time reside in the cache associated with a computing device. Original data 360 refers to data which is unaltered, or a first version of data beginning with some initial point in time which may or may not become altered at some later point in time. If alterations occur to the original data 360, each instance of these alterations may be viewed as variant data 390, which are altered original data 360, or a subsequent version of the original data 360.
  • The [0027] original data 360 in FIG. 5 comprises a string of textual characters 370. Although, text characters are used for illustrative purposes in FIG. 5, it will be readily apparent to those skilled in the art that any computer readable medium data will suffice as data for purposes of the present invention, and that any computer readable medium data are capable of residing in the cache of a computing device. Variant data 390 are a derivative of the original data 360, having a single substring “variant” 410 in the variant data 390 which replaces the substring “original” 380 occurring in the original data 360.
  • Moreover, the differences between the [0028] original data 360 and the variant data 390 may be reflected by a delta data 420 which is operable to be read by a set of executable instructions on a computing device and applied against the original data 360 to produce the variant data 390. In this way, the delta data 420, may be retained in the cache of a computing device together with the original data 360, and the variant data may be discarded or purged freeing up significant space within the cache and thereby increasing cache capacity. Furthermore, the efficiency of accessing the cache is improved since variant data 390 are not stored in the cache.
  • Consider [0029] delta data 420, which depict a single example of how executable instructions may be embodied in the delta data 420, such that when these instructions are executed using the original data 360, variant data 390 is produced. In the present example, the single character “d” 430 is an indication that a delete operation is to take place on the first line “11” 440 of the original data 360. Further, the substring “original” 450 is what is to be deleted from the original data. The character “i” 460 in the delta data 420 is an indication that an insert operation is also to be performed on the original data 360 in order to generate the variant data 390. The insertion is to occur on line 111470 with the substring “variant” 480 to be inserted before “b” 490 the substring “data” 500 which occurs in the original data 360. After executing these instructions comprising the delta data 420, the variant data 390 is produced, since all unaltered aspects of the original data 360 carry over to the generated variant data 390. In this way, variant data 390 may be recreated as needed by applying one or more delta data 420 against the original data 360.
  • As one skilled in the art will appreciate, the exact form of the [0030] delta data 420 may take on a variety of syntaxes without departing from the present invention, just like computing programming languages do. The syntax of the delta data 420 is presented by way of example only to demonstrate how executable instructions defining the differences between original data 360 and variant data 420 may be assembled so that when applied against the original data 360 the variant data 390 is reproduced. Moreover, delta data may include any instructions which are operable to be applied against an original data and produce a variant data.
  • In this way, delta data may include, by way of example only, user specific extensible stylesheets language (XSL) files which are operable to be applied against original data (e.g. extensible markup language (XML) files) to produced individualized variant data. As one skilled in the art will readily appreciate, any data which may be interpreted or applied against an original data to produce variant data may be considered delta data. [0031]
  • Further, the construction of the [0032] original delta data 420 may be achieved with any number of readily available software applications which compare two data files and produce a report as to the differences. The report itself may be used as the delta data 420, with a customized application written to read the report and apply it against the original data 360 to produce the variant data 390.
  • For example, and by way of example only, the UNIX operating system provides an operation entitled “diff” which produces a report as to the differences between two data files. This well known UNIX command also provides an option “-e” where the report produced is in a script format which may be directly executed using the original data as input to produce a variant data. As one skilled in the art will readily appreciate, producing delta data are easily achieved with a variety of existing tools in the art. [0033]
  • By way of example only, consider a client-server based architecture in which the clients are web browsers remotely accessing the web server to acquire a specific web page housed on the server. Initially, the web page may not reside in the server's cache so the first request by a client for the web page causes the server to acquire the web page and place it in the cache. A profile of the client, or a security associated with the requested web page may require a variant version of the web page to be provided to the client, rather than the unaltered form of the web page. If this is the case, the original web page is altered and a variant web page is produced, placed in cache, and made available to the client. [0034]
  • After the variant page is created and placed in cache, it is noted that a variant web page now resides in the cache along with an original web page. An application may be applied to compare the original web page and the variant web page while in the cache, producing a delta data which are operable to be applied against the original web page to produce the variant web page. These delta data are stored in the server cache as well, and the variant web page is flushed out of the server cache, but the delta data remain. [0035]
  • Subsequently, the variant web page is again requested wherein it is determined that the variant web page does not reside in the cache, but the delta data and the original web page necessary to create the variant web page does. Therefore, the delta data and the original web page are used to create the variant web page as needed, while the variant web page need not reside in the server cache, thereby freeing up resources of the server cache to house other data needed to service additional clients and client requests. [0036]
  • In this way a web server, servicing a variety of concurrent clients and requests, may house a single original web page in its cache, along with one or more much smaller delta data operable to produce multiple variant web pages, wherein each variant web page may be quickly and efficiently generated from the original web page using the appropriate delta data which does reside in cache. This permits the web server to handle more requests and service more clients since the cache capacity is increased, because the delta data are much smaller compact data files then the complete variant data files. [0037]
  • FIG. 1 depicts a flow diagram of a method of increasing the capacity of a cache. Initially, original data are received in [0038] step 10, concurrently a request to modify the original data may occur wherein variant data are received in step 20. The original data and the variant data are then compared to one another in step 30. Comparison may occur using any number of readily available software utilities, such as by way of example only, the UNIX “diff” facility. The output of the compare in step 30, is the production of a delta data 40, which are operable to be applied against the original data to produce a variant data.
  • Once the delta data are created, the original data and the delta data are retained in the cache in [0039] step 50. The variant data may be removed from the cache if it was placed in the cache during the compare step 30 (not shown) Next, a request is received for variant data in step 60, wherein the delta data and the original data are acquired from the cache in step 50, and the delta data are applied against the original data in step 70, producing the requested variant data in step 80. The variant data are then sent to the requestor and are purged from the cache in step 90. As one skilled in the art will readily appreciate, management of a server cache using the method depicted in FIG. 1 permits a cache to flush itself of large amounts of data and retain only smaller more efficient delta data, this additional space will increase cache throughput and capacity.
  • Referring to FIG. 2, which depicts a schematic diagram of a method for increasing the cache capacity of a server. Considering, by way of example only, a [0040] server cache 100 wherein original data 110 resides and multiple delta data, such as delta data 0 120 and delta data N 130. Client 0 160 makes a request to receive original data 110 in request step 170, this request is sent to a server, wherein the server checks the server cache 100 and determines that the original data 110 are present and provides the original data to the request in step 170.
  • Concurrently to the request by [0041] clients 160, a client N 190 makes a request of a server to receive variant data0 in step 180, this causes the server to check the server cache 100 wherein it is determined that delta data, 120 are present along with original data 110. The delta data0 are then executed using the original data 110 to produce variant data 0 140, which are immediately sent to client N 190 via step 180. Next, the variant data 0 140 are removed from the server cache 100 in step 150.
  • Although FIG. 2 depicts a [0042] server cache 100, which is serving multiple clients, one skilled in the art will readily appreciate that the cache may reside on a stand alone computing device, and the clients may be applications residing on the stand alone computing device. In this way, management of the cache is improved in a single computing environment as well as in a multi-computing environment, such as by way of example only in a client-server based architecture.
  • FIG. 3 depicts a flow diagram of a method of reducing cache storage requirements. By reducing the storage requirements of a cache, its throughput and performance may be improved as previously presented. Moreover, a cache may provide simultaneous access or concurrent access to clients or applications in [0043] step 200, wherein requests are being made to access original data or variants associated with original data.
  • In [0044] step 210, original data are identified. Identification of original data may occur in a variety of ways, such as by way of example only, applications which use a first data and produce a second data, detecting the production of the second data identifies the first data as original data. For example, a web page which is modified by a personal profile to produce a customized web page. Further, ad hoc software utilities may be written to periodically scan the cache for data which appear similar. As one skilled in the art will appreciate, there are a variety of ways to identify original data residing in the cache.
  • Once the original data are identified in the cache in [0045] step 210, the variants are located in step 230. As previously presented, these variants may be, by way of example only, customized client views, or security restricted views of original data as depicted in step 220. Next, delta data are produced in step 240 using the identified original data and the located variant data. Once delta data exist in the cache to reproduce the variant data, the variant data may be purged in step 250. Upon a request in step 260, variant data are reproduced by applying the delta data to the original data, and in step 270 the variant data are delivered to the requester.
  • FIG. 4 depicts a flow diagram of a method of producing derivatives from an original data. Initially, in [0046] step 280 original data are identified in a cache. Next, variant data associated with the original data are identified in step 300. Further, the variant data are compared to the original data to generate a delta data in step 290. The delta data reflect differences between the original data and the variant data, and are operable to be executed and applied against the original data to produce variant data associated with a version of the original data. Moreover, the variant data may be removed from the cache, in step 290, once the delta data has been generated.
  • Multiple clients may access the cache in parallel, concurrently, or simultaneously, such as client[0047] N in step 310 where clientN is requesting access to the original unaltered data residing in the cache, which are delivered to clientN in step 340. Moreover, client0 requests a variant form of the original data in step 320, wherein the delta data and original data are acquired and applied in step 330 to generate and deliver the variant form of the original data to clients in step 350.
  • The foregoing description of an exemplary embodiment of the invention has been presented for purposes of illustration and description. It is not intended to be exhaustive nor to limit the invention to the precise form disclosed. Many alternatives, modifications, and variations will be apparent to those skilled in the art in light of the above teaching. race all alternatives, modifications, and scope of the attached claims. [0048]

Claims (20)

What is claimed:
1. A method for increasing cache capacity having executable instructions, comprising the steps of:
receiving in a cache an original data wherein access is required to one or more variants of the original data while the variants do not reside in the cache; and
providing access to one or more of the variants from the cache by using one or more delta data operable to be applied against the original data to produce the variants of the original data with the deltas residing in the cache.
2. The method of claim 1, further comprising the steps of:
providing concurrent access to the original data residing in the cache to one or more clients.
3. The method of claim 1, further comprising the steps of:
locating the variants prior to producing the deltas.
4. The method of claim 3, further comprising the steps of:
purging the variants once the deltas are produced.
5. The method of claim 1, further comprising the steps of:
receiving a request from a client for at least one of the variants prior to providing access to the variants.
6. The method of claim 1, wherein at least one of the variants is a personalized variant customized for a client.
7. The method of claim 1, wherein the deltas are smaller in a byte size than the variants.
8. The method of reducing cache storage requirements having executable instructions, comprising the steps of:
identifying an original data in a cache;
locating one or more variants of the original data in the cache;
producing one or more delta data by noting one or more differences between the original data and the variants; and
purging the variants from the cache.
9. The method of claim 8, further comprising the steps of:
reproducing the variants by using the deltas against the original data.
10. The method of claim 9, further comprising the steps of:
delivering the variants to one or more clients upon one or more requests.
11. The method of claim 8, further comprising the steps of:
retaining in the cache the original data and the deltas.
12. The method of claim 8, providing simultaneous access to the original data to one or more clients.
13. The method of claim 8, wherein the capacity of the cache is increased by purging the variants.
14. The method of claim 8, wherein one or more of the variants is a personalized representation of the original data for one or more clients.
15. The method of claim 8, wherein the cache is located on a server.
16. A method of producing derivatives from an original data having, executable instructions comprising the steps of:
identifying an original data residing in a cache;
identifying one or more variants of the original data;
producing one or more delta data by recording the difference between each variant and the original data; and
retaining in the cache the original data and the delta data.
17. The method of claim 16, further comprising the steps of:
removing the variants.
18. The method of claim 17, further comprising the steps of:
reproducing the one or more of the variants by applying the delta data against the original data.
19. The method of claim 18, further comprising the steps of:
delivering one or more of the variants when requested by one or more clients.
20. The method of claim 16, further comprising the steps of:
providing parallel across to the original data and the delta data to one or more clients.
US09/748,552 2000-12-26 2000-12-26 Methods for increasing cache capacity Abandoned US20020083265A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US09/748,552 US20020083265A1 (en) 2000-12-26 2000-12-26 Methods for increasing cache capacity
US09/891,707 US6850964B1 (en) 2000-12-26 2001-06-26 Methods for increasing cache capacity utilizing delta data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/748,552 US20020083265A1 (en) 2000-12-26 2000-12-26 Methods for increasing cache capacity

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US09/891,707 Continuation US6850964B1 (en) 2000-12-26 2001-06-26 Methods for increasing cache capacity utilizing delta data

Publications (1)

Publication Number Publication Date
US20020083265A1 true US20020083265A1 (en) 2002-06-27

Family

ID=25009928

Family Applications (2)

Application Number Title Priority Date Filing Date
US09/748,552 Abandoned US20020083265A1 (en) 2000-12-26 2000-12-26 Methods for increasing cache capacity
US09/891,707 Expired - Fee Related US6850964B1 (en) 2000-12-26 2001-06-26 Methods for increasing cache capacity utilizing delta data

Family Applications After (1)

Application Number Title Priority Date Filing Date
US09/891,707 Expired - Fee Related US6850964B1 (en) 2000-12-26 2001-06-26 Methods for increasing cache capacity utilizing delta data

Country Status (1)

Country Link
US (2) US20020083265A1 (en)

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147849A1 (en) * 2001-04-05 2002-10-10 Chung-Kei Wong Delta encoding using canonical reference files
US20040049579A1 (en) * 2002-04-10 2004-03-11 International Business Machines Corporation Capacity-on-demand in distributed computing environments
US20050021446A1 (en) * 2002-11-08 2005-01-27 Whinston Andrew B. Systems and methods for cache capacity trading across a network
US20080155058A1 (en) * 2006-12-22 2008-06-26 Srikiran Prasad Data synchronization by communication of modifications
US20080184228A1 (en) * 2002-08-06 2008-07-31 Tsao Sheng Tai Ted Concurrent web based multi-task support for a standalone system or for an central controlled virtual system
US20090049243A1 (en) * 2007-08-13 2009-02-19 Microsoft Corporation Caching Dynamic Content
US20220300504A1 (en) * 2021-03-19 2022-09-22 International Business Machines Corporation Generating a global delta in distributed databases
KR102460078B1 (en) * 2022-05-25 2022-10-28 시큐레터 주식회사 Method of making efficient backup space for original file using difference (delta) extraction method in disarming operation and apparatus therefor
US11704327B2 (en) 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases

Families Citing this family (36)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2017901A1 (en) * 2001-09-03 2009-01-21 Panasonic Corporation Semiconductor light emitting device, light emitting apparatus and production method for semiconductor light emitting DEV
US7616985B2 (en) * 2002-07-16 2009-11-10 Xenogen Corporation Method and apparatus for 3-D imaging of internal light sources
US7454529B2 (en) * 2002-08-02 2008-11-18 Netapp, Inc. Protectable data storage system and a method of protecting and/or managing a data storage system
US7882081B2 (en) * 2002-08-30 2011-02-01 Netapp, Inc. Optimized disk repository for the storage and retrieval of mostly sequential data
US7437387B2 (en) * 2002-08-30 2008-10-14 Netapp, Inc. Method and system for providing a file system overlay
US8024172B2 (en) * 2002-12-09 2011-09-20 Netapp, Inc. Method and system for emulating tape libraries
US7567993B2 (en) * 2002-12-09 2009-07-28 Netapp, Inc. Method and system for creating and using removable disk based copies of backup data
US6973369B2 (en) * 2003-03-12 2005-12-06 Alacritus, Inc. System and method for virtual vaulting
US7437492B2 (en) * 2003-05-14 2008-10-14 Netapp, Inc Method and system for data compression and compression estimation in a virtual tape library environment
US7720817B2 (en) * 2004-02-04 2010-05-18 Netapp, Inc. Method and system for browsing objects on a protected volume in a continuous data protection system
US7325159B2 (en) * 2004-02-04 2008-01-29 Network Appliance, Inc. Method and system for data recovery in a continuous data protection system
US20050182910A1 (en) * 2004-02-04 2005-08-18 Alacritus, Inc. Method and system for adding redundancy to a continuous data protection system
US7559088B2 (en) * 2004-02-04 2009-07-07 Netapp, Inc. Method and apparatus for deleting data upon expiration
US7315965B2 (en) * 2004-02-04 2008-01-01 Network Appliance, Inc. Method and system for storing data using a continuous data protection system
US7406488B2 (en) * 2004-02-04 2008-07-29 Netapp Method and system for maintaining data in a continuous data protection system
US7490103B2 (en) * 2004-02-04 2009-02-10 Netapp, Inc. Method and system for backing up data
US7904679B2 (en) * 2004-02-04 2011-03-08 Netapp, Inc. Method and apparatus for managing backup data
US7783606B2 (en) * 2004-02-04 2010-08-24 Netapp, Inc. Method and system for remote data recovery
US7426617B2 (en) * 2004-02-04 2008-09-16 Network Appliance, Inc. Method and system for synchronizing volumes in a continuous data protection system
US8028135B1 (en) 2004-09-01 2011-09-27 Netapp, Inc. Method and apparatus for maintaining compliant storage
US7558839B1 (en) 2004-12-14 2009-07-07 Netapp, Inc. Read-after-write verification for improved write-once-read-many data storage
US7774610B2 (en) * 2004-12-14 2010-08-10 Netapp, Inc. Method and apparatus for verifiably migrating WORM data
US7581118B2 (en) * 2004-12-14 2009-08-25 Netapp, Inc. Disk sanitization using encryption
US7526620B1 (en) 2004-12-14 2009-04-28 Netapp, Inc. Disk sanitization in an active file system
US20060161751A1 (en) * 2005-01-18 2006-07-20 Barrs John W Virtual memory management infrastructure for monitoring deltas and supporting undo versioning in a paged memory system
US7565645B2 (en) * 2005-01-18 2009-07-21 Lenovo (Singapore) Pte Ltd. Method and apparatus for marking code for data versioning
US20060161603A1 (en) * 2005-01-18 2006-07-20 Barrs John W Platform infrastructure to provide an operating system based application programming interface undo service
US20060161601A1 (en) * 2005-01-18 2006-07-20 Barrs John W Heap manager and application programming interface support for managing versions of objects
US20060161602A1 (en) * 2005-01-18 2006-07-20 Barrs John W Object based access application programming interface for data versioning
US20060161911A1 (en) * 2005-01-18 2006-07-20 Barrs John W Method and apparatus for managing versioning data in a network data processing system
US20060253503A1 (en) * 2005-05-05 2006-11-09 International Business Machines Corporation Method and apparatus for aging a versioned heap system
US7401198B2 (en) * 2005-10-06 2008-07-15 Netapp Maximizing storage system throughput by measuring system performance metrics
CN101900956A (en) * 2005-11-23 2010-12-01 Fsi国际公司 Remove the method for material from base material
US7752401B2 (en) 2006-01-25 2010-07-06 Netapp, Inc. Method and apparatus to automatically commit files to WORM status
US7650533B1 (en) 2006-04-20 2010-01-19 Netapp, Inc. Method and system for performing a restoration in a continuous data protection system
US8055096B2 (en) * 2006-05-10 2011-11-08 Research In Motion Limited Method and system for incremental patching of binary files

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2507235B2 (en) * 1994-06-24 1996-06-12 インターナショナル・ビジネス・マシーンズ・コーポレイション Client server computer system, its client computer, server computer, and object updating method
JP3348367B2 (en) 1995-12-06 2002-11-20 富士通株式会社 Multiple access method and multiple access cache memory device
US5832520A (en) * 1996-07-03 1998-11-03 Miller, Call, Plauck And Miller Automatic file differencing and updating system
US6148340A (en) 1998-04-30 2000-11-14 International Business Machines Corporation Method and system for differencing container files
US6401239B1 (en) * 1999-03-22 2002-06-04 B.I.S. Advanced Software Systems Ltd. System and method for quick downloading of electronic files
US6901414B2 (en) * 2000-11-30 2005-05-31 Storage Technology Corporation Method and system of storing a main data file and deltas in a storage device for determining new data files from the main data file and the deltas

Cited By (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020147849A1 (en) * 2001-04-05 2002-10-10 Chung-Kei Wong Delta encoding using canonical reference files
US20040049579A1 (en) * 2002-04-10 2004-03-11 International Business Machines Corporation Capacity-on-demand in distributed computing environments
US9137324B2 (en) * 2002-04-10 2015-09-15 International Business Machines Corporation Capacity on-demand in distributed computing environments
US9009314B1 (en) * 2002-08-06 2015-04-14 Sheng Tai (Ted) Tsao Concurrent web based multitasking support for computing system
US20080184228A1 (en) * 2002-08-06 2008-07-31 Tsao Sheng Tai Ted Concurrent web based multi-task support for a standalone system or for an central controlled virtual system
US9015321B2 (en) * 2002-08-06 2015-04-21 Sheng Tai Tsao Concurrent web based multitasking support for computing system
US20050021446A1 (en) * 2002-11-08 2005-01-27 Whinston Andrew B. Systems and methods for cache capacity trading across a network
US20080155058A1 (en) * 2006-12-22 2008-06-26 Srikiran Prasad Data synchronization by communication of modifications
US8527660B2 (en) * 2006-12-22 2013-09-03 Palm, Inc. Data synchronization by communication of modifications
US20090049243A1 (en) * 2007-08-13 2009-02-19 Microsoft Corporation Caching Dynamic Content
US20220300504A1 (en) * 2021-03-19 2022-09-22 International Business Machines Corporation Generating a global delta in distributed databases
US11704327B2 (en) 2021-03-19 2023-07-18 International Business Machines Corporation Querying distributed databases
US11727022B2 (en) * 2021-03-19 2023-08-15 International Business Machines Corporation Generating a global delta in distributed databases
KR102460078B1 (en) * 2022-05-25 2022-10-28 시큐레터 주식회사 Method of making efficient backup space for original file using difference (delta) extraction method in disarming operation and apparatus therefor
WO2023229063A1 (en) * 2022-05-25 2023-11-30 시큐레터 주식회사 Method for improving efficiency of original file back up space, using delta extraction method in disarming operation, and device therefor

Also Published As

Publication number Publication date
US6850964B1 (en) 2005-02-01

Similar Documents

Publication Publication Date Title
US6850964B1 (en) Methods for increasing cache capacity utilizing delta data
RU2358306C2 (en) Substitution after caching
US8352680B2 (en) Method and system for file-system based caching
US8219562B1 (en) Efficient storage and retrieval for large number of data objects
US5864852A (en) Proxy server caching mechanism that provides a file directory structure and a mapping mechanism within the file directory structure
US6973546B2 (en) Method, system, and program for maintaining data in distributed caches
US7908269B2 (en) Method, system, and software for transmission of information
US6553393B1 (en) Method for prefetching external resources to embedded objects in a markup language data stream
CN102341823B (en) Content rendering on computer
CN1170230C (en) Contents conversion system, automatic pattern table selection method and its program
US7313652B2 (en) Multi-level persisted template caching
US8583643B2 (en) Caching electronic document resources in a client device having an electronic resource database
US20040088375A1 (en) Method for prefetching Web pages to improve response time networking
US20100094822A1 (en) System and method for determining a file save location
CN103699674A (en) Webpage storing method, webpage opening method, webpage storing device, webpage opening device and webpage browsing system
USRE45021E1 (en) Method and software for processing server pages
CN1339747A (en) System and method for high speed buffer storage file information
US20030106025A1 (en) Method and system for providing XML-based web pages for non-pc information terminals
JPH10114126A (en) Method and device for printing hyperspace document
US20060242105A1 (en) Pack URI scheme to identify and reference parts of a package
US20050043938A1 (en) Mutilingual support in web servers for embedded systems
CN1330326A (en) Device and method for providing quick information service for multiple equipments
US7853580B2 (en) Method, system and computer program for downloading information based on a snapshot approach
US9639547B2 (en) Method and system for file-system based caching
US20060026510A1 (en) Method for optimizing markup language transformations using a fragment data cache

Legal Events

Date Code Title Description
AS Assignment

Owner name: NOVELL, INC., UTAH

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:BROUGH, FARRELL LYNN;FERGUSON, HELAMAN DAVID PRATT;REEL/FRAME:011396/0193;SIGNING DATES FROM 20001206 TO 20001221

STCB Information on status: application discontinuation

Free format text: EXPRESSLY ABANDONED -- DURING EXAMINATION

AS Assignment

Owner name: MICRO FOCUS SOFTWARE INC., DELAWARE

Free format text: CHANGE OF NAME;ASSIGNOR:NOVELL, INC.;REEL/FRAME:040020/0703

Effective date: 20160718