CA2701621C - Modular storage server architecture with dynamic data management - Google Patents
Modular storage server architecture with dynamic data management Download PDFInfo
- Publication number
- CA2701621C CA2701621C CA2701621A CA2701621A CA2701621C CA 2701621 C CA2701621 C CA 2701621C CA 2701621 A CA2701621 A CA 2701621A CA 2701621 A CA2701621 A CA 2701621A CA 2701621 C CA2701621 C CA 2701621C
- Authority
- CA
- Canada
- Prior art keywords
- storage device
- product
- content
- track
- data
- 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.)
- Expired - Lifetime
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0613—Improving I/O performance in relation to throughput
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/432—Content retrieval operation from a local storage medium, e.g. hard-disk
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/20—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F11/2053—Error detection or correction of the data by redundancy in hardware using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements where persistent mass storage functionality or persistent mass storage control functionality is redundant
- G06F11/2094—Redundant storage or storage space
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/1727—Details of free space management performed by the file system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/065—Replication mechanisms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0683—Plurality of storage devices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/222—Secondary servers, e.g. proxy server, cable television Head-end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23103—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion using load balancing strategies, e.g. by placing or distributing content on different disks, different memories or different servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23106—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving caching operations
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23113—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving housekeeping operations for stored content, e.g. prioritizing content for deletion because of storage space restrictions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/231—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion
- H04N21/23116—Content storage operation, e.g. caching movies for short term storage, replicating data over plural servers, prioritizing data for deletion involving data replication, e.g. over plural servers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/25—Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
- H04N21/258—Client or end-user data management, e.g. managing client capabilities, user preferences or demographics, processing of multiple end-users preferences to derive collaborative data
- H04N21/25866—Management of end-user data
- H04N21/25891—Management of end-user data being end-user preferences
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/40—Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
- H04N21/43—Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
- H04N21/438—Interfacing the downstream path of the transmission network originating from a server, e.g. retrieving MPEG packets from an IP network
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/60—Network structure or processes for video distribution between server and client or between remote clients; Control signalling between clients, server and network components; Transmission of management data between server and client, e.g. sending from server to client commands for recording incoming content stream; Communication details between server and client
- H04N21/65—Transmission of management data between client and server
- H04N21/658—Transmission by the client directed to the server
- H04N21/6587—Control parameters, e.g. trick play commands, viewpoint selection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/80—Generation or processing of content or additional data by content creator independently of the distribution process; Content per se
- H04N21/83—Generation or processing of protective or descriptive data associated with content; Content structuring
- H04N21/845—Structuring of content, e.g. decomposing content into time segments
- H04N21/8456—Structuring of content, e.g. decomposing content into time segments by decomposing the content in the time domain, e.g. in time segments
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/173—Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
- H04N7/17309—Transmission or handling of upstream communications
- H04N7/17318—Direct or substantially direct transmission and handling of requests
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/173—Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
- H04N7/17309—Transmission or handling of upstream communications
- H04N7/17336—Handling of requests in head-ends
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/16—Analogue secrecy systems; Analogue subscription systems
- H04N7/173—Analogue secrecy systems; Analogue subscription systems with two-way working, e.g. subscriber sending a programme selection signal
- H04N7/17345—Control of the passage of the selected programme
- H04N7/17354—Control of the passage of the selected programme in an intermediate station common to a plurality of user terminals
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/16—Error detection or correction of the data by redundancy in hardware
- G06F11/1658—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit
- G06F11/1662—Data re-synchronization of a redundant component, or initial sync of replacement, additional or spare unit the resynchronized component or unit being a persistent storage device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2206/00—Indexing scheme related to dedicated interfaces for computers
- G06F2206/10—Indexing scheme related to storage interfaces for computers, indexing schema related to group G06F3/06
- G06F2206/1012—Load balancing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0647—Migration mechanisms
- G06F3/0649—Lifecycle management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
- H04L67/61—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources taking into account QoS or priority requirements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- Computer Graphics (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
Abstract
The architecture of the present invention employs dynamic data management methods, which determine whether data should reside on disk or secondary storage (130), on which disk drives data should be stored, and how data should be replicated and/or migrated to new disk drives based on observed user (120) access patterns. These methods also migrate popular data to faster disk tracks to reduce average access time and thus improve performance. User access requests are assigned to modules based on the data stored at each module, and each module's current load (the number of request: waiting to be serviced). If the requested data is not on a disk drived, the data is retrieved from secondary storage (130), and may be stored on the disk drives for rapid subsequent access. When a requested data item on the disk drive is replicated, load balancing is performed by assigning the request to the module holding the data with the lowest load. In addition, user access requests waiting to retrieve replicated data may be dynamically and seamlessly migrated to another module based on changes in module loads.
Description
MODULAR STORAGE SERVER ARCHITECTURE WITH
DYNAMIC DATA MANAGEMENT
This application is a divisional of Canadian patent application serial number 2,446,602 which is the national phase of International application PCT/2002/14871 filed May 2, 2002 (09.05.2002) and published 21 November 2002 (21.11.2002) under International Publication No. WO 02/093298 A3.
FIELD OF THE INVENTION
The present invention generally relates to a modular storage server architecture for retrieving data in response to user access requests. In particular, the invention relates to a server architecture in which data is dynamically distributed over a plurality of disks, a plurality of processors are assigned to particular disks, and data access requests are assigned to particular processors in order to provide good data access performance and server fault tolerance.
BACKGROUND OF THE DISCLOSURE
A storage server allows users to efficiently retrieve information from large volumes of data stored on a plurality of disks and secondary storage (e.g., magnetic tape or an optical-disk jukebox). For example, a video server is a 25 storage server that accepts user requests to view a particular movie from a video library, retrieves the requested program from disk, and delivers the program to the appropriate user(s). Such a video server is disclosed in U.S. patent 5,671,377, entitled "System For Supplying 30 Streams Of Data To Multiple Users By Distributing A Data Stream To Multiple Processors And Enabling , .
-la-Each User To Manipulate Supplied Data Stream" issued to Bleidt et al. on September 23, 1997.
The foregoing storage server employs one or more 35 processors that access data that is stored across an array of disk drives using fault tolerant storage technique such as RAID (Redundant Array of Inexpensive Disks). While such architectures provide uniform non-blocking access to all of the data stored on the disk drives, they do not facilitate a modular architecture. Since data is striped across all of the disk drives in the array, adding or removing disk drives to/from the server requires that all of the data be re-striped across the new set of disk drives. Because the servers are not modular, it is therefore inconvenient to increase or decrease storage capacity by adding or removing disk drives.
There is therefore a need in the art for a storage server architecture that is modular and can acceptably resolve content blocking issues.
SUMMARY OF THE INVENTION
The disadvantages associated with the prior art are overcome by the present invention of a server comprising a plurality of modules, each of which contains a single processor and a cluster of, for example, 16 disk drives, and a host controller that communicates with and 'assigns data requests to each of the modules. Data is written to the disk drives by striping the data across the 16-disk drive cluster of a single module according to a RAID-5 protocol, with parity and spares distributed amongst the disk drives in the cluster.
The architecture of the present invention employs dynamic data management methods, which determine whether data should reside on disk or secordary storage, on which disk drives data should be stored. end how data should be replicated and/or migrated to new disk drives based on observed user access patterns. These methods also migrate popular data to faster disk tracks to reduce average access time and thus improve performance.
User access requests are assigned to modules based on the data stored at each module, and each module's current load (the number of requests waiting to be serviced). If the requested data is not on a disk drive, the data is retrieved from secondary storage, and may be stored on the disk drives for rapid subsequent access. When a requested data item on the disk drive is replicated, load balancing is performed by assigning the request to the module holding the data with the lowest load. In addition, user access requests waiting to retrieve replicated data may be dynamically and seamlessly migrated to another module based on changes in module loads.
Accordingly, in one aspect, the present invention provides a computer implemented method, comprising: receiving a request from at least one client for a title not resident in a storage server, said title comprising a play track, said play track comprising a plurality of chapters; initiating the retrieval from a secondary storage device of play track portions proximate chapter delineation points; and in the case of a client request to begin presentation of said title at one of said chapters, initiating the streaming to said client of retrieved portions of said play track chapter, and initiating the retrieval from said secondary storage device of at least unretrieved portions of said play track chapter and subsequent play track portions.
In a further aspect, the present invention provides a computer implemented method, comprising: receiving a request from at least one client for a title not resident in a storage server, said title comprising a play track, said play track comprising a plurality of chapters; initiating the retrieval from a secondary storage device of play track portions proximate chapter delineation points; determining bandwidth capacity and quality-of-service (QoS) parameters associated with said secondary storage device; and in the case of a client request to begin presentation of said title at one of said chapters, initiating the streaming to said client of retrieved portions of said play track chapter, masking latency associated with said secondary storage device, and initiating retrieval of at least unretrieved portions of said play track -3a-chapter and subsequent play track portions from said secondary storage device.
In a still further aspect, the present invention provides a computer implemented method comprising: for a first publication of a product, storing in a primary storage device promotional information and meta data associated with the first published product; for a plurality of products, storing in the primary storage device product elements determined to be accessed more frequently based on user access patterns; and for the plurality of products, removing at least a portion of a play track of one of the plurality of products from the primary storage device determined to be accessed less frequently based on user access patterns.
In a further aspect, the present invention provides a computer implemented method comprising: in response to receiving a request for a video program from a client, streaming an initial portion of the video program to the client from primary storage of a video server;
contemporaneously with the streaming of the initial portion, retrieving a subsequent portion of the video program from secondary storage, wherein a duration of streaming the initial portion is configured to be longer than a latency of retrieving the subsequent portion of the video program from the secondary storage; and streaming the subsequent portion of the video program to the client upon completion of the streaming of the initial portion.
In a still further aspect, the present invention provides a computer implemented method comprising: receiving requests for a plurality of titles from a plurality of clients; based on the requests, determining which titles of a library stored in secondary storage are most likely to be requested by a client; determining a remaining capacity of a storage device -3b-of a streaming video server; removing, from the storage device of the streaming video server, one or more assets related to titles not determined most likely to be requested by a client;
retrieving from the secondary storage on or more assets of the titles determined most likely to be requested by a client; and storing, to the storage device of the streaming video server, the retrieved one or more assets.
In a further aspect, the present invention provides in a storage server comprising a plurality of modules, each of said modules comprising a processor and a plurality of disks and a host controller, a method comprising the steps of: receiving data requests issued from a plurality of clients, sending vote solicitations from said host controller to each of said modules, each of said vote solicitations containing the name of the requested data, receiving votes from said modules that have said requested data on the module's respective disks, each of said votes containing a module ID, if one or more of said votes are received, selecting one of said votes according to a voting algorithm, forwarding said data request to the module that sent the selected vote, and after said module retrieves said requested data from the respective disks, receiving said data from said module and sending said data to said clients issuing said data request.
In a still further aspect, the present invention provides a method comprising: in response to receiving a request for a video program from a client, streaming an initial portion of the video program to the client from primary storage;
contemporaneously with the streaming of the initial portion, retrieving a subsequent portion of the video program from secondary storage; and streaming the subsequent portion of the video program to the client upon completion of the streaming of the initial portion.
-3c-In a further aspect, the present invention provides a method comprising: receiving requests for a plurality of titles from a plurality of clients; based on the requests for the plurality of titles, determining which titles of a library stored in a secondary storage are most likely to be requested by a client; determining a remaining capacity of a primary storage device; and removing, from the primary storage device, one or more assets related to titles not determined most likely to be requested by a client; retrieving from the secondary storage one or more assets of the titles determined most likely to be requested by a client; and storing, to the primary storage device, the retrieved one or more assets.
In a still further aspect, the present invention provides an apparatus comprising: a storage device; and a controller device configured to: in response to receiving a request for a video program from a client, stream an initial portion of the video program to the client from the storage device;
contemporaneously with the streaming of the initial portion, retrieve a subsequent portion of the video program from secondary storage; and stream the subsequent portion of the video program to the client upon completion of the streaming of the initial portion.
In a still further aspect, the present invention provides a method comprising: for a first publication of a product of a plurality of products, storing in a storage device promotional information associated with the product; storing in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and removing an interval of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns.
- 3d -In a still further aspect, the present invention provides an apparatus comprising: a storage device; and a controller configured to: for a first publication of a product of a plurality of products, store in the storage device promotional information associated with the product; store in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and remove an interval of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns.
In another aspect, the present invention provides a method comprising: for a first publication of a product of a plurality of products, storing in a storage device promotional information associated with the product; storing in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and deleting a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
In another aspect, the present invention provides an apparatus comprising: a storage device; and a controller configured to: for a first publication of a product of a plurality of products, store in the storage device promotional information associated with the product; store in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and delete a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
- 3e -In another aspect, the present invention provides a method comprising: deleting a portion of content from a storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
In a further aspect, the present invention provides an apparatus comprising: a storage device; and a controller configured to: delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
In yet another aspect, the present invention provides a system comprising: a server comprising a storage device and a controller, wherein the controller is configured to: delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
Further aspects of the invention will become apparent upon reading the following detailed description of the drawings, which illustrate the invention and preferred embodiments of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The teachings of the present invention can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
FIG. 1 depicts a high-level block diagram of a data retrieval system that includes a storage server incorporating the present invention;
- 3f -FIG. 2 depicts a detailed diagram of the architecture of the storage server;
FIG. 3 depicts a flowchart specification of the Data Initialization Protocol;
FIG. 4 depicts a flowchart specification of a more general version of the Data Initialization Protocol;
FIG. 5 depicts a flowchart specification of the Data Retrieval Protocol;
FIG. 6 depicts a flowchart specification of the Access Request Assignment Protocol; and FIG. 7 depicts a flowchart specification of the Access Request Migration Protocol;
FIG. 8 depicts a high level block diagram of a data retrieval system including a plurality of storage servers;
FIG. 9 depicts a graphical representation of a plurality of assets forming a title;
FIG. 10 depicts a flow diagram of a method for managing the publication of new products;
FIG. 11 depicts a flow diagram of a method far managing server space.
FIG. 12 depicts a flow diagram of an asset retrieval method suitable for use in an information distribution system utilizing primary and secondary storage.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures.
DYNAMIC DATA MANAGEMENT
This application is a divisional of Canadian patent application serial number 2,446,602 which is the national phase of International application PCT/2002/14871 filed May 2, 2002 (09.05.2002) and published 21 November 2002 (21.11.2002) under International Publication No. WO 02/093298 A3.
FIELD OF THE INVENTION
The present invention generally relates to a modular storage server architecture for retrieving data in response to user access requests. In particular, the invention relates to a server architecture in which data is dynamically distributed over a plurality of disks, a plurality of processors are assigned to particular disks, and data access requests are assigned to particular processors in order to provide good data access performance and server fault tolerance.
BACKGROUND OF THE DISCLOSURE
A storage server allows users to efficiently retrieve information from large volumes of data stored on a plurality of disks and secondary storage (e.g., magnetic tape or an optical-disk jukebox). For example, a video server is a 25 storage server that accepts user requests to view a particular movie from a video library, retrieves the requested program from disk, and delivers the program to the appropriate user(s). Such a video server is disclosed in U.S. patent 5,671,377, entitled "System For Supplying 30 Streams Of Data To Multiple Users By Distributing A Data Stream To Multiple Processors And Enabling , .
-la-Each User To Manipulate Supplied Data Stream" issued to Bleidt et al. on September 23, 1997.
The foregoing storage server employs one or more 35 processors that access data that is stored across an array of disk drives using fault tolerant storage technique such as RAID (Redundant Array of Inexpensive Disks). While such architectures provide uniform non-blocking access to all of the data stored on the disk drives, they do not facilitate a modular architecture. Since data is striped across all of the disk drives in the array, adding or removing disk drives to/from the server requires that all of the data be re-striped across the new set of disk drives. Because the servers are not modular, it is therefore inconvenient to increase or decrease storage capacity by adding or removing disk drives.
There is therefore a need in the art for a storage server architecture that is modular and can acceptably resolve content blocking issues.
SUMMARY OF THE INVENTION
The disadvantages associated with the prior art are overcome by the present invention of a server comprising a plurality of modules, each of which contains a single processor and a cluster of, for example, 16 disk drives, and a host controller that communicates with and 'assigns data requests to each of the modules. Data is written to the disk drives by striping the data across the 16-disk drive cluster of a single module according to a RAID-5 protocol, with parity and spares distributed amongst the disk drives in the cluster.
The architecture of the present invention employs dynamic data management methods, which determine whether data should reside on disk or secordary storage, on which disk drives data should be stored. end how data should be replicated and/or migrated to new disk drives based on observed user access patterns. These methods also migrate popular data to faster disk tracks to reduce average access time and thus improve performance.
User access requests are assigned to modules based on the data stored at each module, and each module's current load (the number of requests waiting to be serviced). If the requested data is not on a disk drive, the data is retrieved from secondary storage, and may be stored on the disk drives for rapid subsequent access. When a requested data item on the disk drive is replicated, load balancing is performed by assigning the request to the module holding the data with the lowest load. In addition, user access requests waiting to retrieve replicated data may be dynamically and seamlessly migrated to another module based on changes in module loads.
Accordingly, in one aspect, the present invention provides a computer implemented method, comprising: receiving a request from at least one client for a title not resident in a storage server, said title comprising a play track, said play track comprising a plurality of chapters; initiating the retrieval from a secondary storage device of play track portions proximate chapter delineation points; and in the case of a client request to begin presentation of said title at one of said chapters, initiating the streaming to said client of retrieved portions of said play track chapter, and initiating the retrieval from said secondary storage device of at least unretrieved portions of said play track chapter and subsequent play track portions.
In a further aspect, the present invention provides a computer implemented method, comprising: receiving a request from at least one client for a title not resident in a storage server, said title comprising a play track, said play track comprising a plurality of chapters; initiating the retrieval from a secondary storage device of play track portions proximate chapter delineation points; determining bandwidth capacity and quality-of-service (QoS) parameters associated with said secondary storage device; and in the case of a client request to begin presentation of said title at one of said chapters, initiating the streaming to said client of retrieved portions of said play track chapter, masking latency associated with said secondary storage device, and initiating retrieval of at least unretrieved portions of said play track -3a-chapter and subsequent play track portions from said secondary storage device.
In a still further aspect, the present invention provides a computer implemented method comprising: for a first publication of a product, storing in a primary storage device promotional information and meta data associated with the first published product; for a plurality of products, storing in the primary storage device product elements determined to be accessed more frequently based on user access patterns; and for the plurality of products, removing at least a portion of a play track of one of the plurality of products from the primary storage device determined to be accessed less frequently based on user access patterns.
In a further aspect, the present invention provides a computer implemented method comprising: in response to receiving a request for a video program from a client, streaming an initial portion of the video program to the client from primary storage of a video server;
contemporaneously with the streaming of the initial portion, retrieving a subsequent portion of the video program from secondary storage, wherein a duration of streaming the initial portion is configured to be longer than a latency of retrieving the subsequent portion of the video program from the secondary storage; and streaming the subsequent portion of the video program to the client upon completion of the streaming of the initial portion.
In a still further aspect, the present invention provides a computer implemented method comprising: receiving requests for a plurality of titles from a plurality of clients; based on the requests, determining which titles of a library stored in secondary storage are most likely to be requested by a client; determining a remaining capacity of a storage device -3b-of a streaming video server; removing, from the storage device of the streaming video server, one or more assets related to titles not determined most likely to be requested by a client;
retrieving from the secondary storage on or more assets of the titles determined most likely to be requested by a client; and storing, to the storage device of the streaming video server, the retrieved one or more assets.
In a further aspect, the present invention provides in a storage server comprising a plurality of modules, each of said modules comprising a processor and a plurality of disks and a host controller, a method comprising the steps of: receiving data requests issued from a plurality of clients, sending vote solicitations from said host controller to each of said modules, each of said vote solicitations containing the name of the requested data, receiving votes from said modules that have said requested data on the module's respective disks, each of said votes containing a module ID, if one or more of said votes are received, selecting one of said votes according to a voting algorithm, forwarding said data request to the module that sent the selected vote, and after said module retrieves said requested data from the respective disks, receiving said data from said module and sending said data to said clients issuing said data request.
In a still further aspect, the present invention provides a method comprising: in response to receiving a request for a video program from a client, streaming an initial portion of the video program to the client from primary storage;
contemporaneously with the streaming of the initial portion, retrieving a subsequent portion of the video program from secondary storage; and streaming the subsequent portion of the video program to the client upon completion of the streaming of the initial portion.
-3c-In a further aspect, the present invention provides a method comprising: receiving requests for a plurality of titles from a plurality of clients; based on the requests for the plurality of titles, determining which titles of a library stored in a secondary storage are most likely to be requested by a client; determining a remaining capacity of a primary storage device; and removing, from the primary storage device, one or more assets related to titles not determined most likely to be requested by a client; retrieving from the secondary storage one or more assets of the titles determined most likely to be requested by a client; and storing, to the primary storage device, the retrieved one or more assets.
In a still further aspect, the present invention provides an apparatus comprising: a storage device; and a controller device configured to: in response to receiving a request for a video program from a client, stream an initial portion of the video program to the client from the storage device;
contemporaneously with the streaming of the initial portion, retrieve a subsequent portion of the video program from secondary storage; and stream the subsequent portion of the video program to the client upon completion of the streaming of the initial portion.
In a still further aspect, the present invention provides a method comprising: for a first publication of a product of a plurality of products, storing in a storage device promotional information associated with the product; storing in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and removing an interval of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns.
- 3d -In a still further aspect, the present invention provides an apparatus comprising: a storage device; and a controller configured to: for a first publication of a product of a plurality of products, store in the storage device promotional information associated with the product; store in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and remove an interval of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns.
In another aspect, the present invention provides a method comprising: for a first publication of a product of a plurality of products, storing in a storage device promotional information associated with the product; storing in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and deleting a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
In another aspect, the present invention provides an apparatus comprising: a storage device; and a controller configured to: for a first publication of a product of a plurality of products, store in the storage device promotional information associated with the product; store in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and delete a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
- 3e -In another aspect, the present invention provides a method comprising: deleting a portion of content from a storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
In a further aspect, the present invention provides an apparatus comprising: a storage device; and a controller configured to: delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
In yet another aspect, the present invention provides a system comprising: a server comprising a storage device and a controller, wherein the controller is configured to: delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
Further aspects of the invention will become apparent upon reading the following detailed description of the drawings, which illustrate the invention and preferred embodiments of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The teachings of the present invention can be readily understood by considering the following detailed description in conjunction with the accompanying drawings, in which:
FIG. 1 depicts a high-level block diagram of a data retrieval system that includes a storage server incorporating the present invention;
- 3f -FIG. 2 depicts a detailed diagram of the architecture of the storage server;
FIG. 3 depicts a flowchart specification of the Data Initialization Protocol;
FIG. 4 depicts a flowchart specification of a more general version of the Data Initialization Protocol;
FIG. 5 depicts a flowchart specification of the Data Retrieval Protocol;
FIG. 6 depicts a flowchart specification of the Access Request Assignment Protocol; and FIG. 7 depicts a flowchart specification of the Access Request Migration Protocol;
FIG. 8 depicts a high level block diagram of a data retrieval system including a plurality of storage servers;
FIG. 9 depicts a graphical representation of a plurality of assets forming a title;
FIG. 10 depicts a flow diagram of a method for managing the publication of new products;
FIG. 11 depicts a flow diagram of a method far managing server space.
FIG. 12 depicts a flow diagram of an asset retrieval method suitable for use in an information distribution system utilizing primary and secondary storage.
To facilitate understanding, identical reference numerals have been used, where possible, to designate identical elements that are common to the figures.
DETAILED DESCRIPTION
FIG. 1 depicts a client/server data retrieval system 100 that employs a storage server 110 to accept user data access requests from clients 1201, 1202, 1203, ... 120n (collectively referred to as clients 120) via hi-directional data paths 1501, 1502, ... 150n (collectively referred to as paths 150). Server 110 retrieves the requested data from the disk drives within the server, and, when necessary, from secondary storage 130 via hi-directional path 140, and outputs the requested data for distribution to the appropriate client(s) along data path(s) 150. A detailed description of a video-on-demand system that finds the server of the present invention particularly useful is described in commonly assigned U.S. Patent No. 6,253,375, filed December 3, 1997.
FIG. 2 depicts a detailed diagram of the architecture of storage server 110. The storage server comprises a host controller 210 and a plurality of modules 2202, 2202... 220n (collectively referred to as modules 220) that are coupled to the host controller by bi-directional data paths 2301, 2302,...230n (collectively referred to as paths 230). In the preferred embodiment of the invention, data paths 230 are part of an ethernet network. Each of the modules 220 comprise a processor 240, a clUster of 16 disk drives 250, and a reauest queue 260 in which access requests wait to be serviced by the disk drives 250. The host controller 210 accepts incoming user access requests from data path 212, and assigns these requests to modules 220 by forwarding the requests along data paths 230.
A given data item (e.g., a video program) is stored on disk by striping the data across the 16 disk drives of one of the modules 220 according to the RAID 5 protocol. RAID 5 is well known in the art as a protocol that provides fault-tolerant error-correcting storage and retrieval on an array of disks.
A data item is therefore stored at a single module on a 16-disk drive cluster, in contrast to non-modular server architectures in which data is striped across the entire set of disk drives. In order to manage data in this modular architecture, protocols are necessary for determining which module shall store the data at any given time. In addition, it is possible in a modular architecture to store multiple copies of data within various modules, a technique known as data replication, and to dynamically migrate data from one module to another to accommodate changes in user access patterns. Finally, a substantial data library is stored in secondary storage 130, e.g., content server, a magneto-optical storage array or other form of data storage, and .
selected data items are recalled from secondary storage 130 stored on disk 250 at one or more modules 220 to enable rapid access of the data. As such, special data management routines are necessary to facilitate data movement from secondary storage 130 to the storage modules 220.
The Data Initialization Protocol determines which data items are retrieved from the secondary storage 130 and stored on the disk drives 250, and at which the module(s) 220 data are stored. The basic strategy of the Data Initialization Protocol is to repeatedly retrieve the most popular data items from the secondary storage 130 and store them on the disk drives 250, until there is insufficient disk space available to hold any additional data items. At each iteration of the Data Initialization Protocol, the candidate modules 220 that have sufficient disk space to hold the data are identified, and the data is stored at the candidate module with the lowest load, where "load" refers to the total bandwidth requirement for the requests waiting in the module's queue 260. Since at initialization, no user requests have yet been submitted, each data item is assigned an initial popularity value, and the load is estimated as the sum of the popularity values of the data items already stored on the module disk drive cluster 250. By Selecting the module 220 with the lowest load, the Data Initialization Protocol provides a significant load-balancing effect that keeps the popular data items evenly distributed over all the modules 220, thus enhancing the performance of the server 110.
FIG. 3 depicts a flow diagram of the Data Initialization Protocol 300. At each iteration of the protocol, the most popular data item in secondary storage that can fit in at least one module's 16-disk drive cluster is selected at step 320. If no such data item exists, as determined by the query at step 330, the protocol terminates at step 370; otherwise, the set of candidate modules (M) with sufficient disk space is determined at step 340. At step 350, the module (M) having the lowest present load is selected from the set of modules M having sufficient space to store data d. At step 360, the data item is then stored on the disk drive cluster of the candidate module with the lowest load and the next iteration begins at step 320.
Note that the above specification of the Data Initialization Protocol does not have any provisions for multiple copies of data items stored on the disk drives (i.e., data replication.) In some applications such as a video server; however, it is desirable to replicate frequently requested data so that these data items don't act as "bottlenecks" when a substantial number of users request the same data item concurrently. Thus, the preferred embodiment of the invention employs a more general version of the Data Initialization Protocol in which data can be stored on the disk drive clusters of multiple modules simultaneously. In this more general version of the protocol, the popularity value of a data item is an integer denoting the desired degree of replication for that data item (i.e., how many copies of the data item should be stored.) Note that multiple copies of a data item should never be stored within the same module, as this offers no performance advantage while unnecessarily consuming additional disk space.
FIG. 4 depicts a flow diagram of the Data Initialization Protocol 400. At each iteration of the protocol 400, the data item with the highest replication count (denoted by copies(d)) is selected at step 420 and, as in the previous version of the protocol, this data item is stored at the module with sufficient free disk space having the lowest load as determined in steps 440, 450, and 460. After the data item is stored, the replication count copies(d) is decremented by 1, at step 470, and the next iteration begins at step 420.
When a user requests a data item that is not stored on the disk drives, the storage server retrieves the data from secondary storage, loads it onto a selected module disk drive cluster, and outputs the data for delivery to the requesting user(s). In order to determine at which disk drive cluster the data should be stored, a Data Retrieval Protocol is used. If there is no available disk space on any of the clusters, and there is at least one data item with more than a single copy on disk, the Data Retrieval Protocol will select one such data item and remove a copy from disk to make room for the new data item. The basic strategy of the Data Retrieval Protocol is to store the new data item on the least loaded nodule that has sufficient free disk space to accommodate the new data item. If no modules have available disk space, however, then the Data Retrieval Protocol will make room for the new data item by replacing one of the data items currently on the disk drives. Alternatively, if no free space is available, the system may send the data item to the user without storing the data item.
Selecting the data item on disk to be replaced is similar to the selection of virtual memory pages to be , replaced in an operating system. The Data Retrieval Protocol borrows from two page replacement algorithms, called Least Recently Used and Not Frequently Used, which are well known in the operating system arts. Specifically, the Data Retrieval Protocol maintains a view count for each data item which indicates the number of times the data item has been requested, and a timestamp for each data item indicating the time at which the data was last requested.
The protocol then identifies the set of data items which are both inactive and replicated, and from this set selects the item that has been least frequently requested (i.e., having the smallest view count), breaking ties by selecting the item that was least recently used (i.e., having the earliest timestamp). A data item is active, and thus ineligible for the aforementioned set of replacement candidates, in any one of the four following situations: (1) the data item is being read from the disk drives in response to a user access request, (2) the data item is being retrieved from secondary storage and stored on the disk drives, (3) the data item is being migrated to another module disk drive cluster, and (4) the data item is in the process of being. replicated.
FIG. 5 depicts a flow diagram of a Data Retrieval Protocol 500. This Protocol begins at step 510 and then checks (at step 520) whether the requested data item d is stored on the disk drives, and if the data is stored on disk, the data item d is retrieved at step 585. If the data is not locally available, the protocol retrieves data item d from secondary storage at step 530, and then, at step 540, determines the set C of inactive data items having more than one copy. If set C is empty as determined by the query at step 550, data item d is output for delivery to the requesting user(s) at step 590. Otherwise, at step 555, the protocol tries to select a subset C' of set C of data items in the same module, each having a low view count and/or timestamp. If such a subset C' does not exist as determined at step 560, data item d is forwarded to the user without being stored on the disk drives at step 590. Otherwise, at step 570, the protocol removes set C' from the disk drives, stores data item d on disk in the vacated spot at step 580, and forwards d to the host controller at step 590. The protocol ends at step 595.
In addition to the protocols disclosed, the present invention employs dynamic data migration to maintain server performance as user access patterns change over time. A
low-priority, non-real-time thread migrates data to new modules based on monitored access patterns, with the objective of evenly re-distributing popular data over all modules. A second low-priority non-real-time thread migrates data to new tracks on the same disk drives, also based on observed access patterns, with the objective of locating popular data on the faster outer tracks of disk drives. The difference in seek and transfer rates between the outer and inner tracks of a disk are substantial; for example, the internal transfer rate of a Seagate Cheetah disk varies from 152 Mbps on inner tracks to 231 Mbps on outer tracks, and the seek time can vary from 2ms to 13ms depending on how far away the next segment of data on the disk drive is. The movement of popular data by the second thread to faster tracks can therefore significantly increase disk bandwidth, and consequently, overall server performance.
In addition to data management, in a modular server architecture it is necessary to assign user access requests to modules, a task that is particularly important when the requested data item is located at multiple modules. This task is accomplished in the present invention by an Access Request Assignment Protocol that is performed by the host controller. The object of the protocol is to assign requests to modules such that outstanding user requests are evenly distributed among the module processors, thus resulting in steady-state module loads. The Access Request Assignment Protocol 600 is depicted as a flow diagram in FIG. 6. The protocol 600 is essentially a conventional voting algorithm (voting algorithms are well-known in the distributed system arts.) The process begins at step 610 and proceeds to step 620 wherein each of the module processors determines, in parallel, whether the requested data item is stored on its disk drive cluster. At step 630, all processors that have the requested data item submit a vote to the host controller and, at step 640, the host controller forwards the access request to the module with the lightest load. The protocol 600 ends at step 650.
After an access request has been forwarded to a module by the Access Request Assignment Protocol 600, the request waits in the module queue for disk drive servicing. Since module loads may become uneven over time, the present invention employs an Access Request Migration Protocol which attempts to dynamically re-balance module loads by moving requests waiting for service from one module's queue to another module's queue. Of course, the protocol can only migrate a request to another module if the requested data item is replicated (i.e., another complete copy of the data is located on some other module disk cluster.) The basic strategy of the Access Request Migration Protocol is to find the two modules in the server with the maximum and minimum loads, and attempt to migrate a user request from the maximum-loaded module queue to the minimum-loaded module. The protocol repeats this process periodically, running as a background thread.
FIG. 7 depicts a flow diagram of the Access Request Migration Protocol 700. The protocol begins at step 705 and proceeds to step 710 wherein the protocol first finds MAX, the module with the largest load, and MIN, the module with the lightest load. The queue of outstanding requests in MAX's queue is then examined at step 720 to see if there is some request in the queue waiting to access a data item with another copy at MIN, such that the disk in MIN's cluster needed for the next service period has a free slot. If such a request is found, it is migrated at steps 730 and 740 from MAX to MIN). Optionally, in the case where multiple such requests are found, it is advantageous for the protocol to migrate the request for the largest data item (i.e., the data that will take longest to read from disk). This process is then repeated indefinitely, starting at step 710.
The foregoing discloses a detailed description of a modular architecture and data management methods for a general-purpose storage server. In video servers, there are a number of additional issues that arise due to the specific nature of video programs. In particular, it is advantageous to have the Data Initialization Protocol store only "leader tracks" containing the first few minutes of a movie on the disk drives, and then, once a movie has been requested for viewing, retrieve the remainder of the movie from secondary storage to the disk drives while the user is watching the leader track. This allows the video server to deliver a much larger volume of programs in real-time, rather than initially storing complete movies on the disk drives. As in the case of general-purpose data, leader tracks should be evenly distributed over the server modules, and when retrieving the remainder of a movie from secondary storage, it is not necessary to store the data at the same module at which the leader is located. Finally, in the Access Request Migration Protocol, if there are multiple outstanding request candidates in the maximum-loaded module, the optional selection procedure should choose the request for the movie with the longest remaining playing time and least recently manipulated, i.e., least recent use of fast forward, rewind and the like.
FIG. 8 depicts a high level block diagram of a data i retrieval system including a plurality of storage servers.
Specifically, FIG. 8 depicts a client/server data retrieval system 800 that employs, illustratively, a plurality of storage servers 8102 through 810N (collectively storage servers 810) to accept user data access requests from respective client groups 8151 through 815N (collectively client groups 815). It is noted that each client group 815 comprises a plurality of clients, such as client 82011 through 8201,4, which are shown in FIG. 8 as comprising client group 8152. Each server 810 communicates with its respective client group 815 via a respective bi-directional data path 150 (e.g., data paths 150,a through 150m). Each server 810 retrieves the client requested data from disk drives within the server and, when necessary, from a secondary storage device 830.
It is noted that secondary device 830 of FIG. 8 communicates with each of the servers 8101 through 810N via a respective bi-directional data path 1401 through 140N.
The data retrieval system 800 of FIG. 8 is especially useful within the context of a networked secondary storage solution. The network implementing communications for such a secondary storage solution may comprise point-to-point links, an Internet protocol (IP) network,. a fiber channel network or any other network suitable for carrying high bandwidth traffic. Preferably, the quality of service (QoS) provided to a customer requesting content via data paths 150 is not dependent upon a particular QoS level within the network 140. That is, as long as the network 140 delivers content from the secondary storage device 830 to the appropriate server 810 in a timely manner, irrespective of QoS deficiencies, the server 810 will be able to stream the requested content to a requesting subscriber via a respective network 150 in a manner providing a high quality presentation of the requested content to the subscriber.
However, where a server 810 has insufficiently cached requested content, the QoS of the requested content will also depend upon the QoS of network 140. That is, the .controller must operate within the quality of service (QoS) associated with the network, such as latency, packet jitter and/or loss and other QoS factors. Thus, in one embodiment, a server 810 requesting content from the secondary storage device 830 via a network 140 performs various processing functions to insure that any degradation induced by the QoS
of network 140 is either compensated for or masked prior to the serving of a requested title to a client 820.
Various processing techniques or algorithms may be utilized by a server 810 to address latency issues and other issues. For example, in one embodiment a server 810 is preloaded with one or more portions of a title such that subscriber access latency to the title is minimized. In this embodiment of the invention, a server 810 includes, for example, an initial portion of a title, which is streamed to a client immediately upon receiving a request for the title from the client. Additionally, other preloaded portions such as initial portions of title chapters or scenes may be preloaded such that user requests for title access at a particular chapter or scene may be rapidly satisfied.
Contemporaneous to the start of streaming a preloaded portion, the server 810 accesses the secondary storage device 830 via the network 140 to retrieve the remaining portion of the title. In this manner, the server 810 operates as a caching server for at least the remaining portion of the title. Advantageously, the present invention operates to selectively provide push and/or pull provisioning techniques to control the type and/or amount of content stored within the servers 810.
In one embodiment, a title from the secondary storage unit 830 is loaded at a location other than the start of the title or other asset, such that latency to a particular portion of the title or other asset is minimized. That is, a title or other asset is loaded in a manner providing one or more entry points to the title or asset other than an initial entry point. Each of the one or more entry points comprises a portion of the title that may be accessed rapidly. For example, in the case of a title divided into a plurality of chapters such as used in digital versatile disks (DVD) storage media, a title loaded onto the secondary server may be loaded as a plurality of chapters, where each chapter may be rapidly entered (i.e., retrieved) based on client requests. This random entry of predefined portions of a title helps reduce latency. By storing several portions of an asset within a server 810, where the stored portions are proximate logical play track or content entry points (i.e., chapter points or scene change points), the server 810 is more likely to be able to Immediately satisfy a customer request. =
In one embodiment, a video reservation method is implemented. In this embodiment, a client request for a particular title or other asset is queued by the corresponding server 810. The server 810 retrieves the requested title or other asset from the secondary storage device 830 via the network 140. When the requested title or other asset is retrieved, a notification is sent to the client that the requested title or asset is available for delivery and presentation to the client.
In one embodiment, a preview, promotion or advertisement is used to mask latency associated with the transfer of a title or other asset from the secondary storage 830 to the server 810. In this embodiment, various "eye candy" is presented to a client while a client request is processed by the server. It is noted that further refinement of this embodiment is allowing a client to skip the preview, promotion or advertisement in the case of the title or requested asset having at least an initial portion preloaded on the server, as discussed above.
The secondary storage interconnect network 140 has associated with it various capacity and QoS parameters, while title or asset availability depends upon the provisioning of secondary storage 830 and the server 810 serving a particular client. These parameters heavily influence the time required to acquire a title, product or other asset stored in secondary storage 830. As such, the close controller within server 810 (or other controllers within the data retrieval system operating to satisfy a client request) must evaluate provisioning, QoS and/or bandwidth availability information to responsively determine an appropriate latency masking and/or client message strategy. In each instance, the goal is to enhance the client-side interaction experience. This experience is enhanced by timely providing requested content, by masking latency associated with satisfying such requests, by directing appropriate promotional material to clients and/or by providing pre-loaded content or content portions on the server 180 or random access to appropriate entry points within content titles.
In one embodiment, a server 810 requiring content to satisfy a user request retrieves the required content from the secondary storage device 830 or, optionally, from another storage server 810. Content may be transferred between storage servers 810 via the secondary storage device 830 using the network 140.. Optionally, a second or auxiliary network 840 connecting one or more of the storage servers 810 is provided for this purpose. The auxiliary network 840 optionally includes connectivity with the secondary storage device 830. The auxiliary network 840 is especially useful where two storage servers 810 are used to store respective portions of available content, such that each storage server 810 operates as a secondary storage device with respect to a portion of available content.
Optionally, each server 810/. through 810. has associated with it a respective network connection 8451 through 845N used to ' 5 connect the storage server to other equipment (not shown).
Such other equipment may comprise local area network (LAN), wide area network (WAN), additional secondary and/or primary storage devices and the like. Essentially, each storage server 810 may be used to provide additional services and/or coordinate with other equipment.
The above-described embodiments are associated with a managed server storage model, in which the service operator and server demand determine the Provisioning of content, either wholly or in part, within secondary and/or primary server modules.
The inventors have determined that for some applications a demand storage model is appropriate. A
demand storage model of managing content may comprise, for example, a push model and a pull model. A pull model is where provisioning is adapted in response to client demand.
A push model is where provisioning is adapted to storage and/or bandwidth availability, along with decisions regarding specific content to be promoted. As an example of a push model, a push from the server 830 to the caches 810 may be selected using service decisions made by programming personnel, as well as service decisions based Upon aggregate purchasing behavior of network customers as evaluated against the characteristics of the asset(s) to be pushed.
The total bandwidth usage of the network 140 may be minimized by using a broadcast (i.e., a multi-cast) model for the push implementation. In this case, illustratively all servers 810 receive the push content but each server implements a level of filtering of received content according to a server-specific evaluation of the importance of the pushed content made according to the needs and/or preferences of the subtended customers associated with the respective server 810. Thus, content pushed from secondary storage 830 to the servers 810 is blended with pull criteria based upon client groups 815 served by respective servers 810.
Within the context of the storage server 800 of FIG. 8, or any server network comprising secondary storage communicating with multiple streaming servers, optimal provisioning and other data management functions may be realized by balancing push and pull methodologies within a demand storage model.
STORAGE MANAGEMENT
Within the concept of data retrieval systems utilizing primary and secondary storage (especially where high bandwidth information such as video information is stored), it is important to efficiently store and delete content from at least the primary storage devices. For purposes of this discussion, all content titles are primarily stored in secondary storage and a demand pull algorithm is used to decide when to bring a product, title and/or asset to a primary storage device, such as a streaming server. The following definitions are applied: A "product" is a subscriber purchasable item, such as a movie, package of movies, subscription and the like. Products are defined by meta data which includes description, price, discount rules and the like. Products contain assets such as the play track of a movie, fast play and fast reverse tracks, navigation related assets such aQ navigation screens, promotional videos and the like.
Information associated with a product comprises at least product rights (or information) enabling a host controller to determine what a customer may do with a particular product, such as viewing time, use time, price, purchase rules, encryption methodologies and the like. A
"title" is a viewable entity, such as a movie, a television episode and the like. An "asset" is an elementary component of a title or product, such as an MPEG play track, a preview track, a JPEG still image associated with a title, fast forward and/or rewind tracks and the like.
FIG. 1 depicts a client/server data retrieval system 100 that employs a storage server 110 to accept user data access requests from clients 1201, 1202, 1203, ... 120n (collectively referred to as clients 120) via hi-directional data paths 1501, 1502, ... 150n (collectively referred to as paths 150). Server 110 retrieves the requested data from the disk drives within the server, and, when necessary, from secondary storage 130 via hi-directional path 140, and outputs the requested data for distribution to the appropriate client(s) along data path(s) 150. A detailed description of a video-on-demand system that finds the server of the present invention particularly useful is described in commonly assigned U.S. Patent No. 6,253,375, filed December 3, 1997.
FIG. 2 depicts a detailed diagram of the architecture of storage server 110. The storage server comprises a host controller 210 and a plurality of modules 2202, 2202... 220n (collectively referred to as modules 220) that are coupled to the host controller by bi-directional data paths 2301, 2302,...230n (collectively referred to as paths 230). In the preferred embodiment of the invention, data paths 230 are part of an ethernet network. Each of the modules 220 comprise a processor 240, a clUster of 16 disk drives 250, and a reauest queue 260 in which access requests wait to be serviced by the disk drives 250. The host controller 210 accepts incoming user access requests from data path 212, and assigns these requests to modules 220 by forwarding the requests along data paths 230.
A given data item (e.g., a video program) is stored on disk by striping the data across the 16 disk drives of one of the modules 220 according to the RAID 5 protocol. RAID 5 is well known in the art as a protocol that provides fault-tolerant error-correcting storage and retrieval on an array of disks.
A data item is therefore stored at a single module on a 16-disk drive cluster, in contrast to non-modular server architectures in which data is striped across the entire set of disk drives. In order to manage data in this modular architecture, protocols are necessary for determining which module shall store the data at any given time. In addition, it is possible in a modular architecture to store multiple copies of data within various modules, a technique known as data replication, and to dynamically migrate data from one module to another to accommodate changes in user access patterns. Finally, a substantial data library is stored in secondary storage 130, e.g., content server, a magneto-optical storage array or other form of data storage, and .
selected data items are recalled from secondary storage 130 stored on disk 250 at one or more modules 220 to enable rapid access of the data. As such, special data management routines are necessary to facilitate data movement from secondary storage 130 to the storage modules 220.
The Data Initialization Protocol determines which data items are retrieved from the secondary storage 130 and stored on the disk drives 250, and at which the module(s) 220 data are stored. The basic strategy of the Data Initialization Protocol is to repeatedly retrieve the most popular data items from the secondary storage 130 and store them on the disk drives 250, until there is insufficient disk space available to hold any additional data items. At each iteration of the Data Initialization Protocol, the candidate modules 220 that have sufficient disk space to hold the data are identified, and the data is stored at the candidate module with the lowest load, where "load" refers to the total bandwidth requirement for the requests waiting in the module's queue 260. Since at initialization, no user requests have yet been submitted, each data item is assigned an initial popularity value, and the load is estimated as the sum of the popularity values of the data items already stored on the module disk drive cluster 250. By Selecting the module 220 with the lowest load, the Data Initialization Protocol provides a significant load-balancing effect that keeps the popular data items evenly distributed over all the modules 220, thus enhancing the performance of the server 110.
FIG. 3 depicts a flow diagram of the Data Initialization Protocol 300. At each iteration of the protocol, the most popular data item in secondary storage that can fit in at least one module's 16-disk drive cluster is selected at step 320. If no such data item exists, as determined by the query at step 330, the protocol terminates at step 370; otherwise, the set of candidate modules (M) with sufficient disk space is determined at step 340. At step 350, the module (M) having the lowest present load is selected from the set of modules M having sufficient space to store data d. At step 360, the data item is then stored on the disk drive cluster of the candidate module with the lowest load and the next iteration begins at step 320.
Note that the above specification of the Data Initialization Protocol does not have any provisions for multiple copies of data items stored on the disk drives (i.e., data replication.) In some applications such as a video server; however, it is desirable to replicate frequently requested data so that these data items don't act as "bottlenecks" when a substantial number of users request the same data item concurrently. Thus, the preferred embodiment of the invention employs a more general version of the Data Initialization Protocol in which data can be stored on the disk drive clusters of multiple modules simultaneously. In this more general version of the protocol, the popularity value of a data item is an integer denoting the desired degree of replication for that data item (i.e., how many copies of the data item should be stored.) Note that multiple copies of a data item should never be stored within the same module, as this offers no performance advantage while unnecessarily consuming additional disk space.
FIG. 4 depicts a flow diagram of the Data Initialization Protocol 400. At each iteration of the protocol 400, the data item with the highest replication count (denoted by copies(d)) is selected at step 420 and, as in the previous version of the protocol, this data item is stored at the module with sufficient free disk space having the lowest load as determined in steps 440, 450, and 460. After the data item is stored, the replication count copies(d) is decremented by 1, at step 470, and the next iteration begins at step 420.
When a user requests a data item that is not stored on the disk drives, the storage server retrieves the data from secondary storage, loads it onto a selected module disk drive cluster, and outputs the data for delivery to the requesting user(s). In order to determine at which disk drive cluster the data should be stored, a Data Retrieval Protocol is used. If there is no available disk space on any of the clusters, and there is at least one data item with more than a single copy on disk, the Data Retrieval Protocol will select one such data item and remove a copy from disk to make room for the new data item. The basic strategy of the Data Retrieval Protocol is to store the new data item on the least loaded nodule that has sufficient free disk space to accommodate the new data item. If no modules have available disk space, however, then the Data Retrieval Protocol will make room for the new data item by replacing one of the data items currently on the disk drives. Alternatively, if no free space is available, the system may send the data item to the user without storing the data item.
Selecting the data item on disk to be replaced is similar to the selection of virtual memory pages to be , replaced in an operating system. The Data Retrieval Protocol borrows from two page replacement algorithms, called Least Recently Used and Not Frequently Used, which are well known in the operating system arts. Specifically, the Data Retrieval Protocol maintains a view count for each data item which indicates the number of times the data item has been requested, and a timestamp for each data item indicating the time at which the data was last requested.
The protocol then identifies the set of data items which are both inactive and replicated, and from this set selects the item that has been least frequently requested (i.e., having the smallest view count), breaking ties by selecting the item that was least recently used (i.e., having the earliest timestamp). A data item is active, and thus ineligible for the aforementioned set of replacement candidates, in any one of the four following situations: (1) the data item is being read from the disk drives in response to a user access request, (2) the data item is being retrieved from secondary storage and stored on the disk drives, (3) the data item is being migrated to another module disk drive cluster, and (4) the data item is in the process of being. replicated.
FIG. 5 depicts a flow diagram of a Data Retrieval Protocol 500. This Protocol begins at step 510 and then checks (at step 520) whether the requested data item d is stored on the disk drives, and if the data is stored on disk, the data item d is retrieved at step 585. If the data is not locally available, the protocol retrieves data item d from secondary storage at step 530, and then, at step 540, determines the set C of inactive data items having more than one copy. If set C is empty as determined by the query at step 550, data item d is output for delivery to the requesting user(s) at step 590. Otherwise, at step 555, the protocol tries to select a subset C' of set C of data items in the same module, each having a low view count and/or timestamp. If such a subset C' does not exist as determined at step 560, data item d is forwarded to the user without being stored on the disk drives at step 590. Otherwise, at step 570, the protocol removes set C' from the disk drives, stores data item d on disk in the vacated spot at step 580, and forwards d to the host controller at step 590. The protocol ends at step 595.
In addition to the protocols disclosed, the present invention employs dynamic data migration to maintain server performance as user access patterns change over time. A
low-priority, non-real-time thread migrates data to new modules based on monitored access patterns, with the objective of evenly re-distributing popular data over all modules. A second low-priority non-real-time thread migrates data to new tracks on the same disk drives, also based on observed access patterns, with the objective of locating popular data on the faster outer tracks of disk drives. The difference in seek and transfer rates between the outer and inner tracks of a disk are substantial; for example, the internal transfer rate of a Seagate Cheetah disk varies from 152 Mbps on inner tracks to 231 Mbps on outer tracks, and the seek time can vary from 2ms to 13ms depending on how far away the next segment of data on the disk drive is. The movement of popular data by the second thread to faster tracks can therefore significantly increase disk bandwidth, and consequently, overall server performance.
In addition to data management, in a modular server architecture it is necessary to assign user access requests to modules, a task that is particularly important when the requested data item is located at multiple modules. This task is accomplished in the present invention by an Access Request Assignment Protocol that is performed by the host controller. The object of the protocol is to assign requests to modules such that outstanding user requests are evenly distributed among the module processors, thus resulting in steady-state module loads. The Access Request Assignment Protocol 600 is depicted as a flow diagram in FIG. 6. The protocol 600 is essentially a conventional voting algorithm (voting algorithms are well-known in the distributed system arts.) The process begins at step 610 and proceeds to step 620 wherein each of the module processors determines, in parallel, whether the requested data item is stored on its disk drive cluster. At step 630, all processors that have the requested data item submit a vote to the host controller and, at step 640, the host controller forwards the access request to the module with the lightest load. The protocol 600 ends at step 650.
After an access request has been forwarded to a module by the Access Request Assignment Protocol 600, the request waits in the module queue for disk drive servicing. Since module loads may become uneven over time, the present invention employs an Access Request Migration Protocol which attempts to dynamically re-balance module loads by moving requests waiting for service from one module's queue to another module's queue. Of course, the protocol can only migrate a request to another module if the requested data item is replicated (i.e., another complete copy of the data is located on some other module disk cluster.) The basic strategy of the Access Request Migration Protocol is to find the two modules in the server with the maximum and minimum loads, and attempt to migrate a user request from the maximum-loaded module queue to the minimum-loaded module. The protocol repeats this process periodically, running as a background thread.
FIG. 7 depicts a flow diagram of the Access Request Migration Protocol 700. The protocol begins at step 705 and proceeds to step 710 wherein the protocol first finds MAX, the module with the largest load, and MIN, the module with the lightest load. The queue of outstanding requests in MAX's queue is then examined at step 720 to see if there is some request in the queue waiting to access a data item with another copy at MIN, such that the disk in MIN's cluster needed for the next service period has a free slot. If such a request is found, it is migrated at steps 730 and 740 from MAX to MIN). Optionally, in the case where multiple such requests are found, it is advantageous for the protocol to migrate the request for the largest data item (i.e., the data that will take longest to read from disk). This process is then repeated indefinitely, starting at step 710.
The foregoing discloses a detailed description of a modular architecture and data management methods for a general-purpose storage server. In video servers, there are a number of additional issues that arise due to the specific nature of video programs. In particular, it is advantageous to have the Data Initialization Protocol store only "leader tracks" containing the first few minutes of a movie on the disk drives, and then, once a movie has been requested for viewing, retrieve the remainder of the movie from secondary storage to the disk drives while the user is watching the leader track. This allows the video server to deliver a much larger volume of programs in real-time, rather than initially storing complete movies on the disk drives. As in the case of general-purpose data, leader tracks should be evenly distributed over the server modules, and when retrieving the remainder of a movie from secondary storage, it is not necessary to store the data at the same module at which the leader is located. Finally, in the Access Request Migration Protocol, if there are multiple outstanding request candidates in the maximum-loaded module, the optional selection procedure should choose the request for the movie with the longest remaining playing time and least recently manipulated, i.e., least recent use of fast forward, rewind and the like.
FIG. 8 depicts a high level block diagram of a data i retrieval system including a plurality of storage servers.
Specifically, FIG. 8 depicts a client/server data retrieval system 800 that employs, illustratively, a plurality of storage servers 8102 through 810N (collectively storage servers 810) to accept user data access requests from respective client groups 8151 through 815N (collectively client groups 815). It is noted that each client group 815 comprises a plurality of clients, such as client 82011 through 8201,4, which are shown in FIG. 8 as comprising client group 8152. Each server 810 communicates with its respective client group 815 via a respective bi-directional data path 150 (e.g., data paths 150,a through 150m). Each server 810 retrieves the client requested data from disk drives within the server and, when necessary, from a secondary storage device 830.
It is noted that secondary device 830 of FIG. 8 communicates with each of the servers 8101 through 810N via a respective bi-directional data path 1401 through 140N.
The data retrieval system 800 of FIG. 8 is especially useful within the context of a networked secondary storage solution. The network implementing communications for such a secondary storage solution may comprise point-to-point links, an Internet protocol (IP) network,. a fiber channel network or any other network suitable for carrying high bandwidth traffic. Preferably, the quality of service (QoS) provided to a customer requesting content via data paths 150 is not dependent upon a particular QoS level within the network 140. That is, as long as the network 140 delivers content from the secondary storage device 830 to the appropriate server 810 in a timely manner, irrespective of QoS deficiencies, the server 810 will be able to stream the requested content to a requesting subscriber via a respective network 150 in a manner providing a high quality presentation of the requested content to the subscriber.
However, where a server 810 has insufficiently cached requested content, the QoS of the requested content will also depend upon the QoS of network 140. That is, the .controller must operate within the quality of service (QoS) associated with the network, such as latency, packet jitter and/or loss and other QoS factors. Thus, in one embodiment, a server 810 requesting content from the secondary storage device 830 via a network 140 performs various processing functions to insure that any degradation induced by the QoS
of network 140 is either compensated for or masked prior to the serving of a requested title to a client 820.
Various processing techniques or algorithms may be utilized by a server 810 to address latency issues and other issues. For example, in one embodiment a server 810 is preloaded with one or more portions of a title such that subscriber access latency to the title is minimized. In this embodiment of the invention, a server 810 includes, for example, an initial portion of a title, which is streamed to a client immediately upon receiving a request for the title from the client. Additionally, other preloaded portions such as initial portions of title chapters or scenes may be preloaded such that user requests for title access at a particular chapter or scene may be rapidly satisfied.
Contemporaneous to the start of streaming a preloaded portion, the server 810 accesses the secondary storage device 830 via the network 140 to retrieve the remaining portion of the title. In this manner, the server 810 operates as a caching server for at least the remaining portion of the title. Advantageously, the present invention operates to selectively provide push and/or pull provisioning techniques to control the type and/or amount of content stored within the servers 810.
In one embodiment, a title from the secondary storage unit 830 is loaded at a location other than the start of the title or other asset, such that latency to a particular portion of the title or other asset is minimized. That is, a title or other asset is loaded in a manner providing one or more entry points to the title or asset other than an initial entry point. Each of the one or more entry points comprises a portion of the title that may be accessed rapidly. For example, in the case of a title divided into a plurality of chapters such as used in digital versatile disks (DVD) storage media, a title loaded onto the secondary server may be loaded as a plurality of chapters, where each chapter may be rapidly entered (i.e., retrieved) based on client requests. This random entry of predefined portions of a title helps reduce latency. By storing several portions of an asset within a server 810, where the stored portions are proximate logical play track or content entry points (i.e., chapter points or scene change points), the server 810 is more likely to be able to Immediately satisfy a customer request. =
In one embodiment, a video reservation method is implemented. In this embodiment, a client request for a particular title or other asset is queued by the corresponding server 810. The server 810 retrieves the requested title or other asset from the secondary storage device 830 via the network 140. When the requested title or other asset is retrieved, a notification is sent to the client that the requested title or asset is available for delivery and presentation to the client.
In one embodiment, a preview, promotion or advertisement is used to mask latency associated with the transfer of a title or other asset from the secondary storage 830 to the server 810. In this embodiment, various "eye candy" is presented to a client while a client request is processed by the server. It is noted that further refinement of this embodiment is allowing a client to skip the preview, promotion or advertisement in the case of the title or requested asset having at least an initial portion preloaded on the server, as discussed above.
The secondary storage interconnect network 140 has associated with it various capacity and QoS parameters, while title or asset availability depends upon the provisioning of secondary storage 830 and the server 810 serving a particular client. These parameters heavily influence the time required to acquire a title, product or other asset stored in secondary storage 830. As such, the close controller within server 810 (or other controllers within the data retrieval system operating to satisfy a client request) must evaluate provisioning, QoS and/or bandwidth availability information to responsively determine an appropriate latency masking and/or client message strategy. In each instance, the goal is to enhance the client-side interaction experience. This experience is enhanced by timely providing requested content, by masking latency associated with satisfying such requests, by directing appropriate promotional material to clients and/or by providing pre-loaded content or content portions on the server 180 or random access to appropriate entry points within content titles.
In one embodiment, a server 810 requiring content to satisfy a user request retrieves the required content from the secondary storage device 830 or, optionally, from another storage server 810. Content may be transferred between storage servers 810 via the secondary storage device 830 using the network 140.. Optionally, a second or auxiliary network 840 connecting one or more of the storage servers 810 is provided for this purpose. The auxiliary network 840 optionally includes connectivity with the secondary storage device 830. The auxiliary network 840 is especially useful where two storage servers 810 are used to store respective portions of available content, such that each storage server 810 operates as a secondary storage device with respect to a portion of available content.
Optionally, each server 810/. through 810. has associated with it a respective network connection 8451 through 845N used to ' 5 connect the storage server to other equipment (not shown).
Such other equipment may comprise local area network (LAN), wide area network (WAN), additional secondary and/or primary storage devices and the like. Essentially, each storage server 810 may be used to provide additional services and/or coordinate with other equipment.
The above-described embodiments are associated with a managed server storage model, in which the service operator and server demand determine the Provisioning of content, either wholly or in part, within secondary and/or primary server modules.
The inventors have determined that for some applications a demand storage model is appropriate. A
demand storage model of managing content may comprise, for example, a push model and a pull model. A pull model is where provisioning is adapted in response to client demand.
A push model is where provisioning is adapted to storage and/or bandwidth availability, along with decisions regarding specific content to be promoted. As an example of a push model, a push from the server 830 to the caches 810 may be selected using service decisions made by programming personnel, as well as service decisions based Upon aggregate purchasing behavior of network customers as evaluated against the characteristics of the asset(s) to be pushed.
The total bandwidth usage of the network 140 may be minimized by using a broadcast (i.e., a multi-cast) model for the push implementation. In this case, illustratively all servers 810 receive the push content but each server implements a level of filtering of received content according to a server-specific evaluation of the importance of the pushed content made according to the needs and/or preferences of the subtended customers associated with the respective server 810. Thus, content pushed from secondary storage 830 to the servers 810 is blended with pull criteria based upon client groups 815 served by respective servers 810.
Within the context of the storage server 800 of FIG. 8, or any server network comprising secondary storage communicating with multiple streaming servers, optimal provisioning and other data management functions may be realized by balancing push and pull methodologies within a demand storage model.
STORAGE MANAGEMENT
Within the concept of data retrieval systems utilizing primary and secondary storage (especially where high bandwidth information such as video information is stored), it is important to efficiently store and delete content from at least the primary storage devices. For purposes of this discussion, all content titles are primarily stored in secondary storage and a demand pull algorithm is used to decide when to bring a product, title and/or asset to a primary storage device, such as a streaming server. The following definitions are applied: A "product" is a subscriber purchasable item, such as a movie, package of movies, subscription and the like. Products are defined by meta data which includes description, price, discount rules and the like. Products contain assets such as the play track of a movie, fast play and fast reverse tracks, navigation related assets such aQ navigation screens, promotional videos and the like.
Information associated with a product comprises at least product rights (or information) enabling a host controller to determine what a customer may do with a particular product, such as viewing time, use time, price, purchase rules, encryption methodologies and the like. A
"title" is a viewable entity, such as a movie, a television episode and the like. An "asset" is an elementary component of a title or product, such as an MPEG play track, a preview track, a JPEG still image associated with a title, fast forward and/or rewind tracks and the like.
Products are typically stored on secondary storage by either the network operator or third party program providers. The availability of such stored products is "published" to the application servers that present a user interface to the customers. The products become elements of the overall user interface, either as on screen graphical or video imagery or web page information. Methods and apparatus for providing such on-screen graphical or video imagery within the context of a user interface are disclosed lo in U.S. Patent No. 6,208,335 (Attorney Docket No. 006), granted on March 27, 2001.
When a customer or a client requests a product that is not currently resident on the respective storage server or primary storage device, the host controller must retrieve the product definition of the requested product, which' will provide, inter alia, a list of titles or products comprising the requested product. The product definition allows the application server to adapt the presented user interface of a customer to achieve a next level of selection, where a list of titles is presented to the customer for final title selection.
FIG. 9 depicts a graphical representation of a plurality of assets foiilling a title. Specifically, the exemplary title 900 of FIG. 9 comprises a play track 901, a fast rorward track 902, a rewind track 903, a promotional track 904, a still image 905 and meta data (i.e., data related to the title or product) 906. It is noted that the relative sizes of the various tracks and other asset elements are not to scale. However, it is noted that the amount of disk space required to store the play track 901 is significantly greater than the amount of space required to store the fast forward track 902 or rewind track 903.
Moreover, the amount of disk space required to store the fast forward/rewind tracks is significantly greater (typically) than the amount of time reouired to store the promotional track 904. The still imagery 905 and meta data 906 require even less memory to store. As such, multi-level caching preferably favors the removal of high storage requirement assets, such as play tracks and FF/REW tracks, prior to the removal of other assets. As an example, a 100 minute movie encoded at 4 megabits per second results in, approximately, 3 gigabytes of data. Depending upon the speed of the trick play tracks, the FF/REW tracks comprise approximately 20% of the total file size. The preview track comprises, typically, 60 megabytes of data. The majority of the three gigabyte file is occupied by the play track.
To provide information sufficient to enable a customer to select an individual title, a subset of the assets associated with the various titles may be provided. For .
example, in one embodiment, a promotional track is streamed in response to user interaction with an interactive program guide. Optionally, still imagery associated with a potentially selected title may be provided. JPEG files and meta data that describe individual titles may be used to create electronic program guide screens Which are presented to a subscriber via the subscriber's presentation or display device. These screens may be presented as video information or as web pages, such as HTML pages. A customer may choose to view a promotional or preview track of a title or product, in which case the server will retrieve the appropriate promotional track from a secondary storage device or from the primary storage server devices.
It is important to note that the storage on a primary storage server is generally much less than the storage within a secondary storage device. As such, the host controller must actively manage the server storage to insure a high quality interactive experience for each of the subscribers within the system. Storage management functionality within the context of the present invention includes a number of elements, such as:
Complete titles as well as the individual assets forming complete titles are individually managed. Thus, when a product is first published the promotional information and metal data (e.g., usage rules) are retrieved and stored in primary storage. Some of the information related to the individual titles, such as JPEG files or other still imagery, may be stored in primary storage such that latency is reduced to a user interacting via an interactive program guide.
Where elements of the product are expected to be frequently viewed, such elements may also be retrieved and stored in a primary storage device. As previously discussed, a push method may be used to distribute the various assets associated with a product. For example, when a product is first published and heavily promoted, preview information associated with individual titles may be retrieved from secondary storage and stored within primary storage prior to customer requests. Additionally, information published with the product, such as Motion Picture Association of America (MPAA) ratings or other ratings may also be placed in primary storage as meta data.
Such information is useful in enabling subscribers to select appropriate content.
Storage management algorithms according to the invention adapt to the usage pattern of customers, the storage requirements and/or capacity of the primary and secondary storage devices, and the expected demand for content.
In this method, the controller waits for new products to be published. Product meta data may be retrieved (not shown) and, from that meta data, decisions are made by the controller regarding the assets to be transferred. For example, product promotional assets are always transferred, since these assets are generally required for a customer to access the product. Thus, if no space is available in a storage server, space will be made for at least the promotional assets. A decision is then made to transfer titles and assets that may be frequently requested, though these assets are only transferred if space is available.
Otherwise, this requirement is queued to be rechecked at a future time. In transferring frequently used titles and assets, the actual transfers will depend upon the available space within the storage server. A space management method will be described in more detail below with respect to FIG.
11.
FIG. 10 depicts a flow diagram of a method for managing the publication of new products. The method 1000 of FIG. 10 is suitable for use in, for example, a controller (such as the host controller 210 of FIG. 2) operating with a server (such as the servers 110 or 810 of FIGS. 1 and 8).
The method 1000 is entered at step 1005 where the controller waits for new product. Upon receiving new product, a query is made at step 1010 as to whether any promotional assets exist in the new product. If no promotional assets exists, the method 1000 returns to step 1005. If promotional assets exist, then a determination is made at steps 1015 and 1020 as to whether space on the storage server 110/810 is available. If space is not available, then at step 1025 sufficient space within the storage server is freed or released.
At step 1030, the promotional assets associated with the new product are transferred to the existing (or newly released) space on the storage server. At step 1035, a query is made as to whether any high usage titles are included with the new product. If no high usage titles are included, then the method 1000 returns to step 1005 to await further new products. If high usage titles are included, then at step 1040 a determination is made as to whether sufficient space is available to store the high usage titles. At step 1045, a query is made as to whether the determination at step 1040 indicates that sufficient space is available. If available, at step 1050 the assets that will fit are transferred to the storage server. Otherwise, a request for the high usage title assets is placed in a request queue. The method 1000 then returns to step 1005.
FIG. 11 depicts a flow diagram of a method for managing server space. The space management method 1100 of FIG. 11 is suitable for use in, for example, a controller (such as the host controller 210 of FIG. 2) operating with a server (such as the storage servers 110 of FIG. 1 or 810 of FIG.
8). The space management algorithm 1100 takes into account the need to minimize the time to restore a title and provide full VOD capability. The flow diagram depicts some of the considerations, such as not deleting bookmarked titles, deleting the play track first and the like. Other modifications to the method 1100 of FIG. 11 include deleting the end of a play track before deleting an entire play track and other modifications.
At step 1105, the available space within the storage server to be managed is checked. At step 1110, a query is made as to whether sufficient space to store the assets associated with a product or title has been found. If sufficient space has been found, the method 1100 exits at step 1115.
If sufficient space has not been found at step 1110, then at least one infrequently used title is found at step 1120. At step 1125, a query is made as to whether the title found at step 1120 has been bookmarked. If the infrequently used title of step 1120 has been bookmarked, then the method 1100 proceeds to step 1120 where the next infrequently used title is found. The method iterates through this loop until an infrequently used title that has not been bookmarked is found, at which point the method 1100 proceeds to step 1135.
If no unbookmarked title is found (i.e., bookmarked titles are not deleted) then the method 1100 proceeds to step 1130, where the title least used or requested by subscribers is identified.
At step 1135, at least a portion of the play track of the non-bookmarked infrequently used title (or the Least used title) is deleted. As previously noted, the play track of a title comprises the video and associated audio information associated with the title, and is the largest single asset associated with the title. In one embodiment, only those portions of the play track not proximate chapter entry points and/or scene change points are deleted. In this manner, customer requests for the entry into a play track at typical chapter entry points may be rapidly satisfied. Such requests will be discussed in more detail below with respect to step 1235 in the method 1200 of FIG.
12. The method 1100 then proceeds to step 1140.
At step 1140, a query is made'as to whether the remaining free space is sufficient to store a desired title.
If the available space is sufficient, then the method 1100 exits at step 1145. Otherwise, other assets associated with the infrequently used title (or least used title) are deleted at step 1150. At step 1155, a determination is made as to whether the available space is now sufficient to store the desired title. If sufficient space is available, then the method 1100 exits at step 1145. If the space is insufficient, then the method 1100 performs the above steps beginning with step 1120 to free up additional space within the server. It is noted that where a bookmarked title is found that the play track of the bookmarked title may be partially deleted to free space.
SERVICE MANAGEMENT/ASSET RETRIEVAL
Within the context of the present invention, the storage management methodologies employed to effect efficient video asset caching are adapted in response to service considerations. That is, the retention or deletion of assets associated with products and/or titles depends upon the need to provide access to new titles or products as well as the need to avoid the expense of storing infrequently used or otherwise less necessary titles and products on a primary storage device. To achieve appropriate service levels for customers or subscribers within the system, it is necessary to transfer video assets from secondary storage to primary storage prior to streaming the video assets to a customer. Within the context of video assets including play tracks, fast forward tracks, fast reverse tracks, bookmark or chapter entry points and the like, this transfer must be intelligently handled. In one embodiment, the transfer of video assets from primary to secondary storage occurs prior to any streaming of the video assets to a requesting subscriber. Unfortunately, this results in a relatively high degree of latency. To avoid such latency, a smart retrieval method will now be described with respect to FIG. 1.
FIG. 12 depicts a flow diagram of an asset retrieval method suitable for use in an information distribution system utilizing primary and secondary storage, such as for the distribution of video information. Specifically, the method 1200 of FIG. 12 is especially useful within the context of titles or products comprising a plurality of video assets, such as described above with respect to FIG.
9.
The method 12C0 of FIG. 12 is entered at step 1205 when a controller executing the method receives a title request.
At step 1210, a query is made as to whether the requested title is resident within a primary storage device associated with a requesting user or subscriber. If the requested title is resident, then at step 1215 the primary storage ' device begins streaming the play track of the requested title to the requesting subscriber. Optionally, a promotional track or other asset associated with the requested title is provided to the subscriber. The method 1200 then exits at step 1220. It is noted that further user interactions requiring the streaming of fast forward/rewind or other trick play tracks are handled in the manner previously described above with respect to FIGS. 1-8.
If at step 1210 it is determined that the requested title is not resident with the primary storage, then at step - -. --1225 the controller begins retrieving portions of the play track proximate chapter delineation points. That is, at step 1225, where a play= track is divided into chapters or segments, such as chapters commonly found on digital versatile disk (DVD) media, several blocks or portions of the play track near each chapter point are retrieved prior to the retrieval of the remainder of the play track. In this manner, if a customer chooses to "jump" to a chapter point, at least some of the play track proximate that chapter point will be available for presentation, thereby reducing the latency experienced by the user.
At step 1230, the play track retrieval continues until all the portions proximate chapter delineation points are retrieved or until a user interaction indicates a request to jump to the presentation of retrieved content at a chapter point. If a jump request is received, then at step 1235 the retrieved play track is streamed to the user beginning at the requested chapter. Additionally, the controller causes the play track to be retrieved from the secondary storage device beginning with the play track portions necessary to provide the requested chapter and subsequent chapters in the title or product. The method 1200 then proceeds to step 1240. When the play track portions proximate chapter delineation points have been retrieved (per step 1230) or when at least the requested chapter play track has been retrieved (per step 1235), at step 1240 the controller begins retrieving play track portions supportive of trick play operation. Specifically, portions of the play track are associated with respective portions of trick play tracks, such as fast forward or fast rewind tracks.
Transitions between play and trick play tracks are supported using indexing information, whereby streaming and presentation of a play track results in the advancement of an index associated with the play track, said index having a trick play index counterpart indicating the entry point into a trick play track should a user request fast forward or rewind of a currmatly streamed play track. Thus, given a play track being streamed to a user, it is desirable to retrieve from secondary storage at least portions of trick play tracks associated with presently streamed play track portions.
At step 1245, the retrieval of play track portions supportive of trick play operation is continued until play track portions capable of supporting at least limited trick play transitions have been retrieved or the user enters a trick play mode.
At step 1245, if the user requests a trick play mode, then the method proceeds to step 1250 where the controller begins retrieving the appropriate trick play track (i.e., FF
or REW) from the secondary storage device and streaming the trick play track to the user beginning at the requested entry point. At step 1255, when the user exits the trick play mode, the controller begins retrieving play track data and streaming the retrieved play track data at the play track entry point associated with the trick play track exit point. The method 1200 then proceeds to step 1260.
At step 1260, the controller begins retrieving the remaining portions of the trick play tracks from the secondary storage device. At step 1265, the trick play track retrieval continues until all the trick play tracks have been retrieved or until user input is received. Upon retrieval of all the trick play tracks from the secondary storage device, the controller begins retrieving the remainder of the play track and any other assets not yet retrieved at step 1270.
At step 1275, the controller waits for (or responds to) user input, such as a jump request, a trick play mode entry or exit request and the like. The method 1200 exits at step 1280.
Within the context of the present invention, it is contemplated that fast play and fast reverse play tracks are utilized in which compressed video streams (e.g., MPEG or other compression schemes) including intracoded frames (I-frames), forward predictively coded frames (i.e., P-frames) and/or bidirectionally predicted frames (i.e., B-Lrames) are utilized. In this manner, a predefined presentation speed ratio may be established between the play track and the trick play tracks, illustratively a lx9 ratio. It is noted that in the case of trick play tracks providing a 9x speed increase with respect to standard play tracks that the amount of time required to retrieve a quick play track form a secondary storage device is approximately one fifth of the time required to retrieve the play track from the secondary storage device. Using the method 1200 of FIG. 12, where selected blocks of the play track (e.g. less than 5% of the total play track) are retrieved, the latency experienced by a subscriber is greatly reduced. It is noted that the blocks retrieved at step 1225 represent approximately 5% of the total play track blocks. These blocks are preferably equally spaced throughout the play track, each block containing at least one complete group of pictures (GOP).
In one embodiment of the invention, imagery displayed upon the user's display device comprises a "progress bar,"
which serves to graphically represent the relative presentation position of a presently viewed play or quick play track. The progress bar represents the beginning of a title on one end and the end of the title on another end, with a marker therebetween indicating a relative temporal presentation distance between the beginning and end portions of the title or product. In one embodiment of the invention, control information is received from the subscriber indicative of subscriber selection of a portion of the control bar, said portion of the control ter being translated by the server module controller into a segment identification or chapter point, at which time the controller causes the streaming of content from that point in either a play mode or trick play mode.
The method 1200 of FIG. 12 advantageously minimizes the latency experienced by a user within an interactive information distribution system by selectively retrieving portions of a title or product from a secondary storage device in a manner calculated to meet user expectations. In one embodiment of the invention, one or mre of the play and trick play tracks are stored in the secondary storage device multiple times at respective multiple quality levels. It is known that the amount of data required to represent video at a relatively coarse quality level is less than the amount of data required to represent the same video at a relatively high quality level, where quality is defined in terms of spatial and/or temporal resolution. It is also noted that the above-described teachings with respect to video tracks may also be applied to audio tracks associated with the video tracks. However, since the amount of information typically required to represent audio is far less than the amount of information required to represent corresponding , video, such processing of audio tracks is typically unnecessary, though such processing is contemplated by the inventors within the context of the present invention.
In one embodiment of the invention, the secondary storage device 830 of FIG. 8 may operate as a primary storage device. Thus, where the secondary storage device 830 operates as a primary storage device (such as a storage device 810), the primary storage device operations described above with respect to storage device 810 and FIGS. 8-12 are applicable to at least a subset of the secondary storage device 830 operations.
While this invention has been particularly shown and described with references to a preferred embodiment thereof, the scope of the claims should not be limited by the preferred embodiments set forth in the examples, but should be given the broadest interpretation consistent with the description as a whole.
When a customer or a client requests a product that is not currently resident on the respective storage server or primary storage device, the host controller must retrieve the product definition of the requested product, which' will provide, inter alia, a list of titles or products comprising the requested product. The product definition allows the application server to adapt the presented user interface of a customer to achieve a next level of selection, where a list of titles is presented to the customer for final title selection.
FIG. 9 depicts a graphical representation of a plurality of assets foiilling a title. Specifically, the exemplary title 900 of FIG. 9 comprises a play track 901, a fast rorward track 902, a rewind track 903, a promotional track 904, a still image 905 and meta data (i.e., data related to the title or product) 906. It is noted that the relative sizes of the various tracks and other asset elements are not to scale. However, it is noted that the amount of disk space required to store the play track 901 is significantly greater than the amount of space required to store the fast forward track 902 or rewind track 903.
Moreover, the amount of disk space required to store the fast forward/rewind tracks is significantly greater (typically) than the amount of time reouired to store the promotional track 904. The still imagery 905 and meta data 906 require even less memory to store. As such, multi-level caching preferably favors the removal of high storage requirement assets, such as play tracks and FF/REW tracks, prior to the removal of other assets. As an example, a 100 minute movie encoded at 4 megabits per second results in, approximately, 3 gigabytes of data. Depending upon the speed of the trick play tracks, the FF/REW tracks comprise approximately 20% of the total file size. The preview track comprises, typically, 60 megabytes of data. The majority of the three gigabyte file is occupied by the play track.
To provide information sufficient to enable a customer to select an individual title, a subset of the assets associated with the various titles may be provided. For .
example, in one embodiment, a promotional track is streamed in response to user interaction with an interactive program guide. Optionally, still imagery associated with a potentially selected title may be provided. JPEG files and meta data that describe individual titles may be used to create electronic program guide screens Which are presented to a subscriber via the subscriber's presentation or display device. These screens may be presented as video information or as web pages, such as HTML pages. A customer may choose to view a promotional or preview track of a title or product, in which case the server will retrieve the appropriate promotional track from a secondary storage device or from the primary storage server devices.
It is important to note that the storage on a primary storage server is generally much less than the storage within a secondary storage device. As such, the host controller must actively manage the server storage to insure a high quality interactive experience for each of the subscribers within the system. Storage management functionality within the context of the present invention includes a number of elements, such as:
Complete titles as well as the individual assets forming complete titles are individually managed. Thus, when a product is first published the promotional information and metal data (e.g., usage rules) are retrieved and stored in primary storage. Some of the information related to the individual titles, such as JPEG files or other still imagery, may be stored in primary storage such that latency is reduced to a user interacting via an interactive program guide.
Where elements of the product are expected to be frequently viewed, such elements may also be retrieved and stored in a primary storage device. As previously discussed, a push method may be used to distribute the various assets associated with a product. For example, when a product is first published and heavily promoted, preview information associated with individual titles may be retrieved from secondary storage and stored within primary storage prior to customer requests. Additionally, information published with the product, such as Motion Picture Association of America (MPAA) ratings or other ratings may also be placed in primary storage as meta data.
Such information is useful in enabling subscribers to select appropriate content.
Storage management algorithms according to the invention adapt to the usage pattern of customers, the storage requirements and/or capacity of the primary and secondary storage devices, and the expected demand for content.
In this method, the controller waits for new products to be published. Product meta data may be retrieved (not shown) and, from that meta data, decisions are made by the controller regarding the assets to be transferred. For example, product promotional assets are always transferred, since these assets are generally required for a customer to access the product. Thus, if no space is available in a storage server, space will be made for at least the promotional assets. A decision is then made to transfer titles and assets that may be frequently requested, though these assets are only transferred if space is available.
Otherwise, this requirement is queued to be rechecked at a future time. In transferring frequently used titles and assets, the actual transfers will depend upon the available space within the storage server. A space management method will be described in more detail below with respect to FIG.
11.
FIG. 10 depicts a flow diagram of a method for managing the publication of new products. The method 1000 of FIG. 10 is suitable for use in, for example, a controller (such as the host controller 210 of FIG. 2) operating with a server (such as the servers 110 or 810 of FIGS. 1 and 8).
The method 1000 is entered at step 1005 where the controller waits for new product. Upon receiving new product, a query is made at step 1010 as to whether any promotional assets exist in the new product. If no promotional assets exists, the method 1000 returns to step 1005. If promotional assets exist, then a determination is made at steps 1015 and 1020 as to whether space on the storage server 110/810 is available. If space is not available, then at step 1025 sufficient space within the storage server is freed or released.
At step 1030, the promotional assets associated with the new product are transferred to the existing (or newly released) space on the storage server. At step 1035, a query is made as to whether any high usage titles are included with the new product. If no high usage titles are included, then the method 1000 returns to step 1005 to await further new products. If high usage titles are included, then at step 1040 a determination is made as to whether sufficient space is available to store the high usage titles. At step 1045, a query is made as to whether the determination at step 1040 indicates that sufficient space is available. If available, at step 1050 the assets that will fit are transferred to the storage server. Otherwise, a request for the high usage title assets is placed in a request queue. The method 1000 then returns to step 1005.
FIG. 11 depicts a flow diagram of a method for managing server space. The space management method 1100 of FIG. 11 is suitable for use in, for example, a controller (such as the host controller 210 of FIG. 2) operating with a server (such as the storage servers 110 of FIG. 1 or 810 of FIG.
8). The space management algorithm 1100 takes into account the need to minimize the time to restore a title and provide full VOD capability. The flow diagram depicts some of the considerations, such as not deleting bookmarked titles, deleting the play track first and the like. Other modifications to the method 1100 of FIG. 11 include deleting the end of a play track before deleting an entire play track and other modifications.
At step 1105, the available space within the storage server to be managed is checked. At step 1110, a query is made as to whether sufficient space to store the assets associated with a product or title has been found. If sufficient space has been found, the method 1100 exits at step 1115.
If sufficient space has not been found at step 1110, then at least one infrequently used title is found at step 1120. At step 1125, a query is made as to whether the title found at step 1120 has been bookmarked. If the infrequently used title of step 1120 has been bookmarked, then the method 1100 proceeds to step 1120 where the next infrequently used title is found. The method iterates through this loop until an infrequently used title that has not been bookmarked is found, at which point the method 1100 proceeds to step 1135.
If no unbookmarked title is found (i.e., bookmarked titles are not deleted) then the method 1100 proceeds to step 1130, where the title least used or requested by subscribers is identified.
At step 1135, at least a portion of the play track of the non-bookmarked infrequently used title (or the Least used title) is deleted. As previously noted, the play track of a title comprises the video and associated audio information associated with the title, and is the largest single asset associated with the title. In one embodiment, only those portions of the play track not proximate chapter entry points and/or scene change points are deleted. In this manner, customer requests for the entry into a play track at typical chapter entry points may be rapidly satisfied. Such requests will be discussed in more detail below with respect to step 1235 in the method 1200 of FIG.
12. The method 1100 then proceeds to step 1140.
At step 1140, a query is made'as to whether the remaining free space is sufficient to store a desired title.
If the available space is sufficient, then the method 1100 exits at step 1145. Otherwise, other assets associated with the infrequently used title (or least used title) are deleted at step 1150. At step 1155, a determination is made as to whether the available space is now sufficient to store the desired title. If sufficient space is available, then the method 1100 exits at step 1145. If the space is insufficient, then the method 1100 performs the above steps beginning with step 1120 to free up additional space within the server. It is noted that where a bookmarked title is found that the play track of the bookmarked title may be partially deleted to free space.
SERVICE MANAGEMENT/ASSET RETRIEVAL
Within the context of the present invention, the storage management methodologies employed to effect efficient video asset caching are adapted in response to service considerations. That is, the retention or deletion of assets associated with products and/or titles depends upon the need to provide access to new titles or products as well as the need to avoid the expense of storing infrequently used or otherwise less necessary titles and products on a primary storage device. To achieve appropriate service levels for customers or subscribers within the system, it is necessary to transfer video assets from secondary storage to primary storage prior to streaming the video assets to a customer. Within the context of video assets including play tracks, fast forward tracks, fast reverse tracks, bookmark or chapter entry points and the like, this transfer must be intelligently handled. In one embodiment, the transfer of video assets from primary to secondary storage occurs prior to any streaming of the video assets to a requesting subscriber. Unfortunately, this results in a relatively high degree of latency. To avoid such latency, a smart retrieval method will now be described with respect to FIG. 1.
FIG. 12 depicts a flow diagram of an asset retrieval method suitable for use in an information distribution system utilizing primary and secondary storage, such as for the distribution of video information. Specifically, the method 1200 of FIG. 12 is especially useful within the context of titles or products comprising a plurality of video assets, such as described above with respect to FIG.
9.
The method 12C0 of FIG. 12 is entered at step 1205 when a controller executing the method receives a title request.
At step 1210, a query is made as to whether the requested title is resident within a primary storage device associated with a requesting user or subscriber. If the requested title is resident, then at step 1215 the primary storage ' device begins streaming the play track of the requested title to the requesting subscriber. Optionally, a promotional track or other asset associated with the requested title is provided to the subscriber. The method 1200 then exits at step 1220. It is noted that further user interactions requiring the streaming of fast forward/rewind or other trick play tracks are handled in the manner previously described above with respect to FIGS. 1-8.
If at step 1210 it is determined that the requested title is not resident with the primary storage, then at step - -. --1225 the controller begins retrieving portions of the play track proximate chapter delineation points. That is, at step 1225, where a play= track is divided into chapters or segments, such as chapters commonly found on digital versatile disk (DVD) media, several blocks or portions of the play track near each chapter point are retrieved prior to the retrieval of the remainder of the play track. In this manner, if a customer chooses to "jump" to a chapter point, at least some of the play track proximate that chapter point will be available for presentation, thereby reducing the latency experienced by the user.
At step 1230, the play track retrieval continues until all the portions proximate chapter delineation points are retrieved or until a user interaction indicates a request to jump to the presentation of retrieved content at a chapter point. If a jump request is received, then at step 1235 the retrieved play track is streamed to the user beginning at the requested chapter. Additionally, the controller causes the play track to be retrieved from the secondary storage device beginning with the play track portions necessary to provide the requested chapter and subsequent chapters in the title or product. The method 1200 then proceeds to step 1240. When the play track portions proximate chapter delineation points have been retrieved (per step 1230) or when at least the requested chapter play track has been retrieved (per step 1235), at step 1240 the controller begins retrieving play track portions supportive of trick play operation. Specifically, portions of the play track are associated with respective portions of trick play tracks, such as fast forward or fast rewind tracks.
Transitions between play and trick play tracks are supported using indexing information, whereby streaming and presentation of a play track results in the advancement of an index associated with the play track, said index having a trick play index counterpart indicating the entry point into a trick play track should a user request fast forward or rewind of a currmatly streamed play track. Thus, given a play track being streamed to a user, it is desirable to retrieve from secondary storage at least portions of trick play tracks associated with presently streamed play track portions.
At step 1245, the retrieval of play track portions supportive of trick play operation is continued until play track portions capable of supporting at least limited trick play transitions have been retrieved or the user enters a trick play mode.
At step 1245, if the user requests a trick play mode, then the method proceeds to step 1250 where the controller begins retrieving the appropriate trick play track (i.e., FF
or REW) from the secondary storage device and streaming the trick play track to the user beginning at the requested entry point. At step 1255, when the user exits the trick play mode, the controller begins retrieving play track data and streaming the retrieved play track data at the play track entry point associated with the trick play track exit point. The method 1200 then proceeds to step 1260.
At step 1260, the controller begins retrieving the remaining portions of the trick play tracks from the secondary storage device. At step 1265, the trick play track retrieval continues until all the trick play tracks have been retrieved or until user input is received. Upon retrieval of all the trick play tracks from the secondary storage device, the controller begins retrieving the remainder of the play track and any other assets not yet retrieved at step 1270.
At step 1275, the controller waits for (or responds to) user input, such as a jump request, a trick play mode entry or exit request and the like. The method 1200 exits at step 1280.
Within the context of the present invention, it is contemplated that fast play and fast reverse play tracks are utilized in which compressed video streams (e.g., MPEG or other compression schemes) including intracoded frames (I-frames), forward predictively coded frames (i.e., P-frames) and/or bidirectionally predicted frames (i.e., B-Lrames) are utilized. In this manner, a predefined presentation speed ratio may be established between the play track and the trick play tracks, illustratively a lx9 ratio. It is noted that in the case of trick play tracks providing a 9x speed increase with respect to standard play tracks that the amount of time required to retrieve a quick play track form a secondary storage device is approximately one fifth of the time required to retrieve the play track from the secondary storage device. Using the method 1200 of FIG. 12, where selected blocks of the play track (e.g. less than 5% of the total play track) are retrieved, the latency experienced by a subscriber is greatly reduced. It is noted that the blocks retrieved at step 1225 represent approximately 5% of the total play track blocks. These blocks are preferably equally spaced throughout the play track, each block containing at least one complete group of pictures (GOP).
In one embodiment of the invention, imagery displayed upon the user's display device comprises a "progress bar,"
which serves to graphically represent the relative presentation position of a presently viewed play or quick play track. The progress bar represents the beginning of a title on one end and the end of the title on another end, with a marker therebetween indicating a relative temporal presentation distance between the beginning and end portions of the title or product. In one embodiment of the invention, control information is received from the subscriber indicative of subscriber selection of a portion of the control bar, said portion of the control ter being translated by the server module controller into a segment identification or chapter point, at which time the controller causes the streaming of content from that point in either a play mode or trick play mode.
The method 1200 of FIG. 12 advantageously minimizes the latency experienced by a user within an interactive information distribution system by selectively retrieving portions of a title or product from a secondary storage device in a manner calculated to meet user expectations. In one embodiment of the invention, one or mre of the play and trick play tracks are stored in the secondary storage device multiple times at respective multiple quality levels. It is known that the amount of data required to represent video at a relatively coarse quality level is less than the amount of data required to represent the same video at a relatively high quality level, where quality is defined in terms of spatial and/or temporal resolution. It is also noted that the above-described teachings with respect to video tracks may also be applied to audio tracks associated with the video tracks. However, since the amount of information typically required to represent audio is far less than the amount of information required to represent corresponding , video, such processing of audio tracks is typically unnecessary, though such processing is contemplated by the inventors within the context of the present invention.
In one embodiment of the invention, the secondary storage device 830 of FIG. 8 may operate as a primary storage device. Thus, where the secondary storage device 830 operates as a primary storage device (such as a storage device 810), the primary storage device operations described above with respect to storage device 810 and FIGS. 8-12 are applicable to at least a subset of the secondary storage device 830 operations.
While this invention has been particularly shown and described with references to a preferred embodiment thereof, the scope of the claims should not be limited by the preferred embodiments set forth in the examples, but should be given the broadest interpretation consistent with the description as a whole.
Claims (42)
1. A method comprising:
for a first publication of a product of a plurality of products, storing in a storage device promotional information associated with the product;
storing in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and deleting a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
for a first publication of a product of a plurality of products, storing in a storage device promotional information associated with the product;
storing in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and deleting a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
2. The method of claim 1, wherein the product comprises a movie, a package of movies or a subscription.
3. The method of claim 1, wherein the first publication comprises a communication to one or more application servers that the product is available for presentation to users, elements of the product being configured for presentation to the users via user interfaces.
4. The method of claim 1, wherein the elements of the plurality of products include one or more of a play track, a fast play track, a fast reverse track, navigation related assets and promotional videos.
5. The method of claim 1, wherein the product is associated with at least one title comprising a viewable entity having an associated respective group of assets including one or more of a play track, a preview track, a fast forward track, a fast rewind track and a still image.
6. The method of claim 1, further comprising, for the first publication of the product, storing in the storage device meta data associated with the product, wherein the meta data comprises one or more of product description, product rights, a product price, product discount rules, still images, moving images, preview tracks, HTML
links, title descriptions, MPAA ratings, and product information configured for interactive presentation within a client.
links, title descriptions, MPAA ratings, and product information configured for interactive presentation within a client.
7. The method of claim 1, further comprising:
storing in the storage device at least a portion of at least one trick play track associated with said product.
storing in the storage device at least a portion of at least one trick play track associated with said product.
8. The method of claim 1, further comprising:
iteratively determining a remaining capacity of the storage device; and adapting product information stored on the storage device in response to the frequency of product viewing.
iteratively determining a remaining capacity of the storage device; and adapting product information stored on the storage device in response to the frequency of product viewing.
9. The method of claim 1, wherein the portion is the end of the play track.
10. The method of claim 1, wherein the elements of the plurality of products are leader tracks of a movie.
11. The method of claim 1, further comprising:
transmitting the promotional information of the product and the elements of the plurality of products from a secondary storage device to a server for storing in the storage device.
transmitting the promotional information of the product and the elements of the plurality of products from a secondary storage device to a server for storing in the storage device.
12. An apparatus comprising:
a storage device; and a controller configured to:
for a first publication of a product of a plurality of products, store in the storage device promotional information associated with the product;
store in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and delete a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
a storage device; and a controller configured to:
for a first publication of a product of a plurality of products, store in the storage device promotional information associated with the product;
store in the storage device elements of the plurality of products determined to be accessed more frequently based on user access patterns; and delete a portion of a play track of one of the plurality of products from the storage device determined to be accessed less frequently based on the user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points of the play track.
13. The apparatus of claim 12, wherein the product comprises a movie, a package of movies or a subscription.
14. The apparatus of claim 12, wherein the first publication comprises a communication to one or more application servers that the product is available for presentation to users, elements of the product being configured for presentation to the users via user interfaces.
15. The apparatus of claim 12, wherein the elements of the plurality of products include one or more of a play track, a fast play track, a fast reverse track, navigation related assets and promotional videos.
16. The apparatus of claim 12, wherein the product is associated with at least one title comprising a viewable entity having an associated respective group of assets including one or more of a play track, a preview track, a fast forward track, a fast rewind track and a still image.
17. The apparatus of claim 12, wherein the controller is further configured to:
for the first publication of the product, store in the storage device meta data associated with the product, wherein the meta data comprises one or more of product description, product rights, a product price, product discount rules, still images, moving images, preview tracks, HTML links, title descriptions, MPAA ratings, and product information configured for interactive presentation within a client.
for the first publication of the product, store in the storage device meta data associated with the product, wherein the meta data comprises one or more of product description, product rights, a product price, product discount rules, still images, moving images, preview tracks, HTML links, title descriptions, MPAA ratings, and product information configured for interactive presentation within a client.
18. The apparatus of claim 12, wherein the controller is further configured to:
store in the storage device at least a portion of at least one trick play track associated with said product.
store in the storage device at least a portion of at least one trick play track associated with said product.
19. The apparatus of claim 12, wherein the controller is further configured to:
iteratively determine a remaining capacity of the storage device; and adapt product information stored on the storage device in response to the frequency of product viewing.
iteratively determine a remaining capacity of the storage device; and adapt product information stored on the storage device in response to the frequency of product viewing.
20. The apparatus of claim 12, wherein the portion is the end of the play track.
21. The apparatus of claim 12, wherein the elements of the plurality of products are leader tracks of a movie.
22. The apparatus of claim 12, further comprising:
a secondary storage device, wherein the controller is configured to retrieve the promotional information of the product and the elements of the plurality of products from the secondary storage device.
a secondary storage device, wherein the controller is configured to retrieve the promotional information of the product and the elements of the plurality of products from the secondary storage device.
23. A method comprising:
deleting a portion of content from a storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
deleting a portion of content from a storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
24. The method of claim 23, wherein the content comprises at least one of a play track, a trick track, a leader track, a promotional track, a still image, and metadata.
25. The method of claim 23, further comprising:
iteratively determining a remaining capacity of the storage device; and adapting at least a second portion of the content stored on the storage device based at least in part on the user access patterns and the determined remaining capacity of the storage device.
iteratively determining a remaining capacity of the storage device; and adapting at least a second portion of the content stored on the storage device based at least in part on the user access patterns and the determined remaining capacity of the storage device.
26. The method of claim 23, wherein the storage device is comprised of a plurality of modules, and wherein the content is stored on at least two of the plurality of modules.
27. The method of claim 23, wherein the deleted portion is determined as being last accessed at an earlier point in time relative to at least one other portion of the content.
28. The method of claim 23, wherein the storage device is comprised of a plurality of modules, and wherein the portion is deleted from a first of the plurality of modules, and wherein the portion is stored on a second of the plurality of modules.
29. The method of claim 28, wherein the deletion of the portion from the first of the plurality of modules and the storage of the portion on the second of the plurality of modules is based at least in part on a relative load between the first and second plurality of modules.
30. The method of claim 23, wherein the storage device is included in a server, the method further comprising:
receiving second content at the server, wherein the deletion of the portion of content is responsive to receiving the second content at the server.
receiving second content at the server, wherein the deletion of the portion of content is responsive to receiving the second content at the server.
31. The method of claim 30, wherein the receipt of the second content is based at least in part on a push model, the method further comprising:
determining, at the server, that the second content is likely to be accessed by at least one user serviced by the server; and storing the second content on the storage device responsive to determining that the second content is likely to be accessed by the at least one user.
determining, at the server, that the second content is likely to be accessed by at least one user serviced by the server; and storing the second content on the storage device responsive to determining that the second content is likely to be accessed by the at least one user.
32. The method of claim 23, wherein the content is an audio track.
33. An apparatus comprising:
a storage device; and a controller configured to:
delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
a storage device; and a controller configured to:
delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
34. The apparatus of claim 33, wherein the content comprises at least one of a play track, a trick track, a leader track, a promotional track, a still image, and metadata.
35. The apparatus of claim 33, wherein the controller is further configured to:
for a first publication of the content, store in the storage device meta data associated with the content, wherein the meta data comprises one or more of content description, content rights, a content price, content discount rules, still images, moving images, preview tracks, HTML links, title descriptions, MPAA ratings, and content information configured for interactive presentation within a client.
for a first publication of the content, store in the storage device meta data associated with the content, wherein the meta data comprises one or more of content description, content rights, a content price, content discount rules, still images, moving images, preview tracks, HTML links, title descriptions, MPAA ratings, and content information configured for interactive presentation within a client.
36. The apparatus of claim 33, wherein the controller is further configured to:
iteratively determine a remaining capacity of the storage device; and adapt at least a second portion of the content stored on the storage device based at least in part on the user access patterns and the determined remaining capacity of the storage device.
iteratively determine a remaining capacity of the storage device; and adapt at least a second portion of the content stored on the storage device based at least in part on the user access patterns and the determined remaining capacity of the storage device.
37. The apparatus of claim 33, wherein the storage device is comprised of a plurality of modules, and wherein the content is stored on at least two of the plurality of modules.
38. The apparatus of claim 33, wherein the deleted portion is determined by the controller to have been last accessed at an earlier point in time relative to at least one other portion of the content.
39. The apparatus of claim 33, wherein the content is an audio track.
40. A system comprising:
a server comprising a storage device and a controller, wherein the controller is configured to:
delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
a server comprising a storage device and a controller, wherein the controller is configured to:
delete a portion of content from the storage device determined to be accessed less frequently based on user access patterns, wherein the deleted portion is determined as not being bookmarked or proximate to entry points associated with the content.
41. The system of claim 40, further comprising:
a secondary storage device, wherein the server is configured to receive the content from the secondary storage device via a network.
a secondary storage device, wherein the server is configured to receive the content from the secondary storage device via a network.
42. The system of claim 41, further comprising:
a second server, wherein the server is configured to receive the content from the second server via a second network.
a second server, wherein the server is configured to receive the content from the second server via a second network.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CA2841216A CA2841216C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US09/854,839 US6721794B2 (en) | 1999-04-01 | 2001-05-14 | Method of data management for efficiently storing and retrieving data to respond to user access requests |
US09/854,839 | 2001-05-14 | ||
CA2446602A CA2446602C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA2446602A Division CA2446602C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA2841216A Division CA2841216C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
Publications (2)
Publication Number | Publication Date |
---|---|
CA2701621A1 CA2701621A1 (en) | 2002-11-21 |
CA2701621C true CA2701621C (en) | 2014-04-15 |
Family
ID=25319649
Family Applications (3)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA2701621A Expired - Lifetime CA2701621C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
CA2841216A Expired - Lifetime CA2841216C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
CA2446602A Expired - Lifetime CA2446602C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
Family Applications After (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CA2841216A Expired - Lifetime CA2841216C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
CA2446602A Expired - Lifetime CA2446602C (en) | 2001-05-14 | 2002-05-09 | Modular storage server architecture with dynamic data management |
Country Status (5)
Country | Link |
---|---|
US (6) | US6721794B2 (en) |
EP (1) | EP1388079A4 (en) |
AU (1) | AU2002344329A1 (en) |
CA (3) | CA2701621C (en) |
WO (1) | WO2002093298A2 (en) |
Families Citing this family (190)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6721794B2 (en) | 1999-04-01 | 2004-04-13 | Diva Systems Corp. | Method of data management for efficiently storing and retrieving data to respond to user access requests |
US7472353B1 (en) * | 1999-12-16 | 2008-12-30 | Ricoh Co., Ltd. | Remote console for network application servers |
US7032226B1 (en) * | 2000-06-30 | 2006-04-18 | Mips Technologies, Inc. | Methods and apparatus for managing a buffer of events in the background |
US7058064B2 (en) * | 2000-02-08 | 2006-06-06 | Mips Technologies, Inc. | Queueing system for processors in packet routing operations |
US7082552B2 (en) * | 2000-02-08 | 2006-07-25 | Mips Tech Inc | Functional validation of a packet management unit |
US7139901B2 (en) * | 2000-02-08 | 2006-11-21 | Mips Technologies, Inc. | Extended instruction set for packet processing applications |
US7649901B2 (en) * | 2000-02-08 | 2010-01-19 | Mips Technologies, Inc. | Method and apparatus for optimizing selection of available contexts for packet processing in multi-stream packet processing |
US7155516B2 (en) * | 2000-02-08 | 2006-12-26 | Mips Technologies, Inc. | Method and apparatus for overflowing data packets to a software-controlled memory when they do not fit into a hardware-controlled memory |
US7165257B2 (en) | 2000-02-08 | 2007-01-16 | Mips Technologies, Inc. | Context selection and activation mechanism for activating one of a group of inactive contexts in a processor core for servicing interrupts |
US7434242B1 (en) * | 2000-08-07 | 2008-10-07 | Sedna Patent Services, Llc | Multiple content supplier video asset scheduling |
DE10044161B4 (en) * | 2000-09-06 | 2006-12-07 | T-Mobile Deutschland Gmbh | Method and system for communicating with the Internet |
JP2002091452A (en) * | 2000-09-11 | 2002-03-27 | Nec Corp | System for distributing data and method for the same |
JP2002132614A (en) * | 2000-10-18 | 2002-05-10 | Nec Corp | Data distributing system |
US20020059371A1 (en) * | 2000-11-16 | 2002-05-16 | Jamail John M. | Caching proxy streaming appliance systems and methods |
JP3842549B2 (en) * | 2000-12-14 | 2006-11-08 | 株式会社東芝 | Information collection system, information collection method, and storage medium |
US8239354B2 (en) | 2005-03-03 | 2012-08-07 | F5 Networks, Inc. | System and method for managing small-size files in an aggregated file system |
US8195760B2 (en) * | 2001-01-11 | 2012-06-05 | F5 Networks, Inc. | File aggregation in a switched file system |
US7512673B2 (en) | 2001-01-11 | 2009-03-31 | Attune Systems, Inc. | Rule based aggregation of files and transactions in a switched file system |
EP1368736A2 (en) | 2001-01-11 | 2003-12-10 | Z-Force Communications, Inc. | File switch and switched file system |
US7383288B2 (en) | 2001-01-11 | 2008-06-03 | Attune Systems, Inc. | Metadata based file switch and switched file system |
US20040133606A1 (en) * | 2003-01-02 | 2004-07-08 | Z-Force Communications, Inc. | Directory aggregation for files distributed over a plurality of servers in a switched file system |
US7788335B2 (en) * | 2001-01-11 | 2010-08-31 | F5 Networks, Inc. | Aggregated opportunistic lock and aggregated implicit lock management for locking aggregated files in a switched file system |
US7509322B2 (en) | 2001-01-11 | 2009-03-24 | F5 Networks, Inc. | Aggregated lock management for locking aggregated files in a switched file system |
US8001259B2 (en) * | 2001-06-01 | 2011-08-16 | International Business Machines Corporation | Pervasive, distributed provision of services such as product brokerage |
US7320131B1 (en) * | 2001-06-06 | 2008-01-15 | Cisco Technology, Inc. | Methods and apparatus for selecting a server to process a request |
AU2002334947A1 (en) * | 2001-06-14 | 2003-01-21 | Cable And Wireless Internet Services, Inc. | Secured shared storage architecture |
US7444662B2 (en) * | 2001-06-28 | 2008-10-28 | Emc Corporation | Video file server cache management using movie ratings for reservation of memory and bandwidth resources |
WO2003007154A2 (en) * | 2001-07-09 | 2003-01-23 | Cable & Wireless Internet Services, Inc. | Methods and systems for shared storage virtualization |
WO2003007116A2 (en) * | 2001-07-11 | 2003-01-23 | Broadcom Corporation | Method, system, and computer program product for suppression index reuse and packet classification for payload header suppression |
JP4122740B2 (en) * | 2001-07-27 | 2008-07-23 | 日本電気株式会社 | Recording / reproducing method and recording / reproducing apparatus |
JP2003044575A (en) * | 2001-07-30 | 2003-02-14 | Fuji Photo Film Co Ltd | Writing apparatus for order information, accepting apparatus for order, portable device and accepting method for print order |
US7245632B2 (en) * | 2001-08-10 | 2007-07-17 | Sun Microsystems, Inc. | External storage for modular computer systems |
US20030182237A1 (en) * | 2002-03-21 | 2003-09-25 | Pierre Costa | Method to provide multiple rating selection on video storage content |
US7944953B2 (en) * | 2002-04-03 | 2011-05-17 | Tvworks, Llc | Method and apparatus for transmitting data in a data stream |
AU2003230821A1 (en) | 2002-04-08 | 2003-10-27 | Flarion Technologies, Inc. | Support of disparate addressing plans and dynamic ha address allocation in mobile ip |
US7774343B2 (en) * | 2002-04-15 | 2010-08-10 | Microsoft Corporation | Multiple media vendor support |
US20040006636A1 (en) * | 2002-04-19 | 2004-01-08 | Oesterreicher Richard T. | Optimized digital media delivery engine |
US20040006635A1 (en) * | 2002-04-19 | 2004-01-08 | Oesterreicher Richard T. | Hybrid streaming platform |
US7899924B2 (en) * | 2002-04-19 | 2011-03-01 | Oesterreicher Richard T | Flexible streaming hardware |
US20030204602A1 (en) | 2002-04-26 | 2003-10-30 | Hudson Michael D. | Mediated multi-source peer content delivery network architecture |
US7614066B2 (en) * | 2002-05-03 | 2009-11-03 | Time Warner Interactive Video Group Inc. | Use of multiple embedded messages in program signal streams |
US8312504B2 (en) | 2002-05-03 | 2012-11-13 | Time Warner Cable LLC | Program storage, retrieval and management based on segmentation messages |
US7610606B2 (en) * | 2002-05-03 | 2009-10-27 | Time Warner Cable, Inc. | Technique for effectively providing various entertainment services through a communications network |
US8443383B2 (en) | 2002-05-03 | 2013-05-14 | Time Warner Cable Enterprises Llc | Use of messages in program signal streams by set-top terminals |
US8392952B2 (en) | 2002-05-03 | 2013-03-05 | Time Warner Cable Enterprises Llc | Programming content processing and management system and method |
US7908626B2 (en) * | 2002-05-03 | 2011-03-15 | Time Warner Interactive Video Group, Inc. | Network based digital information and entertainment storage and delivery system |
US6934804B2 (en) * | 2002-05-28 | 2005-08-23 | Sun Microsystems, Inc. | Method and system for striping spares in a data storage system including an array of disk drives |
US8650601B2 (en) * | 2002-11-26 | 2014-02-11 | Concurrent Computer Corporation | Video on demand management system |
US7877511B1 (en) | 2003-01-13 | 2011-01-25 | F5 Networks, Inc. | Method and apparatus for adaptive services networking |
US20040143850A1 (en) * | 2003-01-16 | 2004-07-22 | Pierre Costa | Video Content distribution architecture |
US20040181707A1 (en) * | 2003-03-11 | 2004-09-16 | Hitachi, Ltd. | Method and apparatus for seamless management for disaster recovery |
US7386616B1 (en) * | 2003-05-09 | 2008-06-10 | Google Inc. | System and method for providing load balanced processing |
US20040254984A1 (en) * | 2003-06-12 | 2004-12-16 | Sun Microsystems, Inc | System and method for coordinating cluster serviceability updates over distributed consensus within a distributed data system cluster |
JP4462852B2 (en) | 2003-06-23 | 2010-05-12 | 株式会社日立製作所 | Storage system and storage system connection method |
US8370454B2 (en) | 2003-06-30 | 2013-02-05 | International Business Machines Corporation | Retrieving a replica of an electronic document in a computer network |
US9489150B2 (en) | 2003-08-14 | 2016-11-08 | Dell International L.L.C. | System and method for transferring data between different raid data storage types for current data and replay data |
JP2007502470A (en) | 2003-08-14 | 2007-02-08 | コンペレント・テクノロジーズ | Virtual disk drive system and method |
US7415011B2 (en) * | 2003-08-29 | 2008-08-19 | Sun Microsystems, Inc. | Distributed switch |
US8472792B2 (en) | 2003-12-08 | 2013-06-25 | Divx, Llc | Multimedia distribution system |
US7519274B2 (en) | 2003-12-08 | 2009-04-14 | Divx, Inc. | File format for multiple track digital data |
US20050138655A1 (en) * | 2003-12-22 | 2005-06-23 | Randy Zimler | Methods, systems and storage medium for managing digital rights of segmented content |
US20050177618A1 (en) * | 2003-12-22 | 2005-08-11 | Randy Zimler | Methods, systems and storage medium for managing bandwidth of segmented content |
US7818387B1 (en) | 2004-02-09 | 2010-10-19 | Oracle America, Inc. | Switch |
WO2005098674A1 (en) * | 2004-03-12 | 2005-10-20 | Thomson Licensing | System and method for scheduling downloading in a cached network environment |
FR2868637B1 (en) * | 2004-03-30 | 2008-09-26 | Canon Europa Nv | METHOD AND SYSTEM FOR MANAGING STORAGE OF CONTENTS IN A NETWORK, BASED ON TAKING INTO ACCOUNT THE NUMBER OF COPIES OF THESE CONTENTS |
US20050262245A1 (en) * | 2004-04-19 | 2005-11-24 | Satish Menon | Scalable cluster-based architecture for streaming media |
US20050262246A1 (en) * | 2004-04-19 | 2005-11-24 | Satish Menon | Systems and methods for load balancing storage and streaming media requests in a scalable, cluster-based architecture for real-time streaming |
US8484308B2 (en) * | 2004-07-02 | 2013-07-09 | MatrixStream Technologies, Inc. | System and method for transferring content via a network |
EP1782287A2 (en) * | 2004-07-21 | 2007-05-09 | Beach Unlimited LLC | Distributed storage architecture based on block map caching and vfs stackable file system modules |
US7526525B2 (en) * | 2004-07-22 | 2009-04-28 | International Business Machines Corporation | Method for efficiently distributing and remotely managing meeting presentations |
EP1772016A2 (en) * | 2004-07-23 | 2007-04-11 | Beach Unlimited LLC | Trickmodes and speed transitions |
JP2006072715A (en) * | 2004-09-02 | 2006-03-16 | Hitachi Ltd | Content delivery system and content delivery method |
JP2006140966A (en) * | 2004-11-15 | 2006-06-01 | Kyocera Mita Corp | Time authentication management system and image forming apparatus |
US7523286B2 (en) * | 2004-11-19 | 2009-04-21 | Network Appliance, Inc. | System and method for real-time balancing of user workload across multiple storage systems with shared back end storage |
KR100660850B1 (en) * | 2005-01-11 | 2006-12-26 | 삼성전자주식회사 | A Video On Demand system and a method for reconstructing a Video On Demand system |
US7885970B2 (en) * | 2005-01-20 | 2011-02-08 | F5 Networks, Inc. | Scalable system for partitioning and accessing metadata over multiple servers |
US20060167838A1 (en) * | 2005-01-21 | 2006-07-27 | Z-Force Communications, Inc. | File-based hybrid file storage scheme supporting multiple file switches |
US7823156B2 (en) * | 2005-02-03 | 2010-10-26 | Hewlett-Packard Development Company, L.P. | Method of hashing address space to storage servers |
US7958347B1 (en) | 2005-02-04 | 2011-06-07 | F5 Networks, Inc. | Methods and apparatus for implementing authentication |
US20060271975A1 (en) * | 2005-05-23 | 2006-11-30 | Edmund Sun | Time-shifting audio and video programs |
US9063941B2 (en) * | 2005-06-03 | 2015-06-23 | Hewlett-Packard Development Company, L.P. | System having an apparatus that uses a resource on an external device |
US8074248B2 (en) | 2005-07-26 | 2011-12-06 | Activevideo Networks, Inc. | System and method for providing video content associated with a source image to a television in a communication network |
US20080016533A1 (en) * | 2005-11-09 | 2008-01-17 | Rothschild Leigh M | Device, system and method for delivering digital media content to a user |
US8191098B2 (en) | 2005-12-22 | 2012-05-29 | Verimatrix, Inc. | Multi-source bridge content distribution system and method |
EP1999883A4 (en) | 2006-03-14 | 2013-03-06 | Divx Llc | Federated digital rights management scheme including trusted systems |
US8417746B1 (en) | 2006-04-03 | 2013-04-09 | F5 Networks, Inc. | File system management with enhanced searchability |
US8548948B2 (en) * | 2006-04-11 | 2013-10-01 | Oracle International Corporation | Methods and apparatus for a fine grained file data storage system |
EP1858228A1 (en) * | 2006-05-16 | 2007-11-21 | THOMSON Licensing | Network data storage system with distributed file management |
CN102880424B (en) | 2006-05-24 | 2015-10-28 | 克姆佩棱特科技公司 | For RAID management, redistribute and the system and method for segmentation again |
JP4984669B2 (en) * | 2006-06-15 | 2012-07-25 | ソニー株式会社 | Data writing apparatus and data delivery system |
WO2008002999A2 (en) * | 2006-06-27 | 2008-01-03 | Metabeam Corporation | Digital content playback |
CN103561278B (en) | 2007-01-05 | 2017-04-12 | 索尼克知识产权股份有限公司 | Video distribution system including progressive playback |
US20080201736A1 (en) * | 2007-01-12 | 2008-08-21 | Ictv, Inc. | Using Triggers with Video for Interactive Content Identification |
US9826197B2 (en) * | 2007-01-12 | 2017-11-21 | Activevideo Networks, Inc. | Providing television broadcasts over a managed network and interactive content over an unmanaged network to a client device |
WO2008088741A2 (en) * | 2007-01-12 | 2008-07-24 | Ictv, Inc. | Interactive encoded content system including object models for viewing on a remote device |
US20140108888A1 (en) | 2008-03-11 | 2014-04-17 | Rod Brittner | Error tolerant or streaming storage device |
CN101809543A (en) * | 2007-03-10 | 2010-08-18 | 罗德·布里特尼尔 | Error tolerant or streaming storage device |
US8312214B1 (en) | 2007-03-28 | 2012-11-13 | Netapp, Inc. | System and method for pausing disk drives in an aggregate |
WO2008130983A1 (en) * | 2007-04-16 | 2008-10-30 | Attune Systems, Inc. | File aggregation in a switched file system |
US8055779B1 (en) | 2007-05-10 | 2011-11-08 | Adobe Systems Incorporated | System and method using data keyframes |
WO2008147973A2 (en) * | 2007-05-25 | 2008-12-04 | Attune Systems, Inc. | Remote file virtualization in a switched file system |
US9979931B2 (en) * | 2007-05-30 | 2018-05-22 | Adobe Systems Incorporated | Transmitting a digital media stream that is already being transmitted to a first device to a second device and inhibiting presenting transmission of frames included within a sequence of frames until after an initial frame and frames between the initial frame and a requested subsequent frame have been received by the second device |
US8548953B2 (en) * | 2007-11-12 | 2013-10-01 | F5 Networks, Inc. | File deduplication using storage tiers |
US20090204705A1 (en) * | 2007-11-12 | 2009-08-13 | Attune Systems, Inc. | On Demand File Virtualization for Server Configuration Management with Limited Interruption |
US8180747B2 (en) | 2007-11-12 | 2012-05-15 | F5 Networks, Inc. | Load sharing cluster file systems |
US8117244B2 (en) | 2007-11-12 | 2012-02-14 | F5 Networks, Inc. | Non-disruptive file migration |
US20090204650A1 (en) * | 2007-11-15 | 2009-08-13 | Attune Systems, Inc. | File Deduplication using Copy-on-Write Storage Tiers |
CN101861583B (en) | 2007-11-16 | 2014-06-04 | 索尼克Ip股份有限公司 | Hierarchical and reduced index structures for multimedia files |
US7904673B2 (en) * | 2007-11-20 | 2011-03-08 | Seagate Technology Llc | Data storage device with histogram of idle time and scheduling of background and foreground jobs |
US8352785B1 (en) | 2007-12-13 | 2013-01-08 | F5 Networks, Inc. | Methods for generating a unified virtual snapshot and systems thereof |
US7984259B1 (en) | 2007-12-17 | 2011-07-19 | Netapp, Inc. | Reducing load imbalance in a storage system |
US8032689B2 (en) * | 2007-12-18 | 2011-10-04 | Hitachi Global Storage Technologies Netherlands, B.V. | Techniques for data storage device virtualization |
US8291086B2 (en) * | 2008-01-18 | 2012-10-16 | General Electric Company | Method and system for accessing data in an enterprise information system |
JP4475334B2 (en) * | 2008-01-30 | 2010-06-09 | 沖電気工業株式会社 | Data provision system |
US8914340B2 (en) * | 2008-02-06 | 2014-12-16 | International Business Machines Corporation | Apparatus, system, and method for relocating storage pool hot spots |
US8423739B2 (en) * | 2008-02-06 | 2013-04-16 | International Business Machines Corporation | Apparatus, system, and method for relocating logical array hot spots |
JP5436793B2 (en) * | 2008-04-04 | 2014-03-05 | 株式会社バンダイナムコゲームス | Game video distribution system |
CN102132578A (en) * | 2008-06-25 | 2011-07-20 | 活动视频网络有限公司 | Providing television broadcasts over managed network and interactive content over unmanaged network to client device |
WO2010002400A1 (en) * | 2008-07-01 | 2010-01-07 | Hewlett-Packard Development Company, L.P. | Remote computing services |
US8549582B1 (en) | 2008-07-11 | 2013-10-01 | F5 Networks, Inc. | Methods for handling a multi-protocol content name and systems thereof |
US8224868B2 (en) * | 2008-07-31 | 2012-07-17 | Verizon Patent And Licensing Inc. | Network coding with last modified dates for P2P web caching |
US7631034B1 (en) * | 2008-09-18 | 2009-12-08 | International Business Machines Corporation | Optimizing node selection when handling client requests for a distributed file system (DFS) based on a dynamically determined performance index |
US8949915B2 (en) * | 2008-10-20 | 2015-02-03 | At&T Intellectual Property Ii, Lp | System and method for delivery of Video-on-Demand |
KR101222129B1 (en) * | 2008-12-22 | 2013-01-15 | 한국전자통신연구원 | Metadata Server and Data Storage Disk Volumn Selecting Method Thereof |
KR101236477B1 (en) * | 2008-12-22 | 2013-02-22 | 한국전자통신연구원 | Method of processing data in asymetric cluster filesystem |
US9479836B2 (en) * | 2009-05-26 | 2016-10-25 | Verizon Patent And Licensing Inc. | Method and apparatus for navigating and playing back media content |
US8661075B2 (en) * | 2009-06-04 | 2014-02-25 | Qualcomm Incorporated | Method and apparatus for serving episodic secondary content |
US10721269B1 (en) | 2009-11-06 | 2020-07-21 | F5 Networks, Inc. | Methods and system for returning requests with javascript for clients before passing a request to a server |
CA2782825C (en) | 2009-12-04 | 2016-04-26 | Divx, Llc | Elementary bitstream cryptographic material transport systems and methods |
US9195500B1 (en) | 2010-02-09 | 2015-11-24 | F5 Networks, Inc. | Methods for seamless storage importing and devices thereof |
US8204860B1 (en) | 2010-02-09 | 2012-06-19 | F5 Networks, Inc. | Methods and systems for snapshot reconstitution |
US8347100B1 (en) | 2010-07-14 | 2013-01-01 | F5 Networks, Inc. | Methods for DNSSEC proxying and deployment amelioration and systems thereof |
US9286298B1 (en) | 2010-10-14 | 2016-03-15 | F5 Networks, Inc. | Methods for enhancing management of backup data sets and devices thereof |
CA2814070A1 (en) | 2010-10-14 | 2012-04-19 | Activevideo Networks, Inc. | Streaming digital video between video devices using a cable television system |
US8832722B2 (en) | 2010-12-02 | 2014-09-09 | Microsoft Corporation | Media asset voting |
US9247312B2 (en) | 2011-01-05 | 2016-01-26 | Sonic Ip, Inc. | Systems and methods for encoding source media in matroska container files for adaptive bitrate streaming using hypertext transfer protocol |
US9348515B2 (en) * | 2011-01-17 | 2016-05-24 | Hitachi, Ltd. | Computer system, management computer and storage management method for managing data configuration based on statistical information |
US8533767B1 (en) * | 2011-03-02 | 2013-09-10 | The Directv Group, Inc. | Method and system for prioritizing content in a delivery queue of a content delivery system |
EP2695388B1 (en) | 2011-04-07 | 2017-06-07 | ActiveVideo Networks, Inc. | Reduction of latency in video distribution networks using adaptive bit rates |
WO2012166141A1 (en) | 2011-06-02 | 2012-12-06 | Hewlett-Packard Development Company, L.P. | Managing processing of user requests and data replication for a mass storage system |
US8621352B2 (en) * | 2011-06-08 | 2013-12-31 | Cisco Technology, Inc. | Virtual meeting video sharing |
US8396836B1 (en) | 2011-06-30 | 2013-03-12 | F5 Networks, Inc. | System for mitigating file virtualization storage import latency |
US9467708B2 (en) | 2011-08-30 | 2016-10-11 | Sonic Ip, Inc. | Selection of resolutions for seamless resolution switching of multimedia content |
US8787570B2 (en) | 2011-08-31 | 2014-07-22 | Sonic Ip, Inc. | Systems and methods for automatically genenrating top level index files |
US8909922B2 (en) | 2011-09-01 | 2014-12-09 | Sonic Ip, Inc. | Systems and methods for playing back alternative streams of protected content protected using common cryptographic information |
US8463850B1 (en) | 2011-10-26 | 2013-06-11 | F5 Networks, Inc. | System and method of algorithmically generating a server side transaction identifier |
WO2013070800A1 (en) | 2011-11-07 | 2013-05-16 | Nexgen Storage, Inc. | Primary data storage system with quality of service |
JP5773493B2 (en) | 2011-11-14 | 2015-09-02 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | Information processing device |
WO2013106390A1 (en) | 2012-01-09 | 2013-07-18 | Activevideo Networks, Inc. | Rendering of an interactive lean-backward user interface on a television |
US9020912B1 (en) | 2012-02-20 | 2015-04-28 | F5 Networks, Inc. | Methods for accessing data in a compressed file system and devices thereof |
US9438487B2 (en) | 2012-02-23 | 2016-09-06 | Ericsson Ab | Bandwith policy management in a self-corrected content delivery network |
US9253051B2 (en) * | 2012-02-23 | 2016-02-02 | Ericsson Ab | System and method for delivering content in a content delivery network |
US9123084B2 (en) | 2012-04-12 | 2015-09-01 | Activevideo Networks, Inc. | Graphical application integration with MPEG objects |
US8959297B2 (en) * | 2012-06-04 | 2015-02-17 | Spectra Logic Corporation | Retrieving a user data set from multiple memories |
GB2506164A (en) | 2012-09-24 | 2014-03-26 | Ibm | Increased database performance via migration of data to faster storage |
US9519501B1 (en) | 2012-09-30 | 2016-12-13 | F5 Networks, Inc. | Hardware assisted flow acceleration and L2 SMAC management in a heterogeneous distributed multi-tenant virtualized clustered system |
US9304711B2 (en) | 2012-10-10 | 2016-04-05 | Apple Inc. | Latency reduction in read operations from data storage in a host device |
US8832024B2 (en) * | 2012-10-26 | 2014-09-09 | Netapp, Inc. | Simplified copy offload |
US9191457B2 (en) | 2012-12-31 | 2015-11-17 | Sonic Ip, Inc. | Systems, methods, and media for controlling delivery of content |
US10375155B1 (en) | 2013-02-19 | 2019-08-06 | F5 Networks, Inc. | System and method for achieving hardware acceleration for asymmetric flow connections |
US9554418B1 (en) | 2013-02-28 | 2017-01-24 | F5 Networks, Inc. | Device for topology hiding of a visited network |
WO2014145921A1 (en) | 2013-03-15 | 2014-09-18 | Activevideo Networks, Inc. | A multiple-mode system and method for providing user selectable video content |
US9778885B2 (en) * | 2013-03-15 | 2017-10-03 | Skyera, Llc | Compressor resources for high density storage units |
BR112015026148B1 (en) | 2013-04-18 | 2022-02-08 | Ruslan Albertovich Shigabutdinov | METHOD, SYSTEM AND COMPUTER-READABLE NON-TRANSITORY STORAGE MEDIA FOR FILE MANAGEMENT BY MOBILE COMPUTER DEVICES |
US9326047B2 (en) | 2013-06-06 | 2016-04-26 | Activevideo Networks, Inc. | Overlay rendering of user interface onto source video |
US9219922B2 (en) | 2013-06-06 | 2015-12-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
US9294785B2 (en) | 2013-06-06 | 2016-03-22 | Activevideo Networks, Inc. | System and method for exploiting scene graph information in construction of an encoded video sequence |
US9525755B2 (en) * | 2014-03-26 | 2016-12-20 | Verizon Patent And Licensing Inc. | Providing content based on user bandwidth |
US9729933B2 (en) | 2014-06-30 | 2017-08-08 | Rovi Guides, Inc. | Systems and methods for loading interactive media guide data based on user history |
US9451315B2 (en) * | 2014-06-30 | 2016-09-20 | Rovi Guides, Inc. | Systems and methods for generating for display an interactive media guide based on user history |
US11838851B1 (en) | 2014-07-15 | 2023-12-05 | F5, Inc. | Methods for managing L7 traffic classification and devices thereof |
US10182013B1 (en) | 2014-12-01 | 2019-01-15 | F5 Networks, Inc. | Methods for managing progressive image delivery and devices thereof |
JP6944371B2 (en) | 2015-01-06 | 2021-10-06 | ディビックス, エルエルシー | Systems and methods for encoding content and sharing content between devices |
US11895138B1 (en) | 2015-02-02 | 2024-02-06 | F5, Inc. | Methods for improving web scanner accuracy and devices thereof |
US10834065B1 (en) | 2015-03-31 | 2020-11-10 | F5 Networks, Inc. | Methods for SSL protected NTLM re-authentication and devices thereof |
US20170149883A1 (en) * | 2015-11-20 | 2017-05-25 | Datadirect Networks, Inc. | Data replication in a data storage system having a disjointed network |
US10404698B1 (en) | 2016-01-15 | 2019-09-03 | F5 Networks, Inc. | Methods for adaptive organization of web application access points in webtops and devices thereof |
US10797888B1 (en) | 2016-01-20 | 2020-10-06 | F5 Networks, Inc. | Methods for secured SCEP enrollment for client devices and devices thereof |
JP6458752B2 (en) * | 2016-03-04 | 2019-01-30 | 日本電気株式会社 | Storage control device, storage system, storage control method, and program |
JP6747018B2 (en) * | 2016-03-31 | 2020-08-26 | 日本電気株式会社 | Storage system, storage system control device, storage system control method and program |
US10205989B2 (en) | 2016-06-12 | 2019-02-12 | Apple Inc. | Optimized storage of media items |
US10412198B1 (en) | 2016-10-27 | 2019-09-10 | F5 Networks, Inc. | Methods for improved transmission control protocol (TCP) performance visibility and devices thereof |
US10567492B1 (en) | 2017-05-11 | 2020-02-18 | F5 Networks, Inc. | Methods for load balancing in a federated identity environment and devices thereof |
US11223689B1 (en) | 2018-01-05 | 2022-01-11 | F5 Networks, Inc. | Methods for multipath transmission control protocol (MPTCP) based session migration and devices thereof |
US10833943B1 (en) | 2018-03-01 | 2020-11-10 | F5 Networks, Inc. | Methods for service chaining and devices thereof |
US10776165B2 (en) * | 2018-05-15 | 2020-09-15 | Sap Se | Optimized database resource handling |
KR20190096853A (en) * | 2019-07-30 | 2019-08-20 | 엘지전자 주식회사 | Speech processing method and apparatus therefor |
FR3101502B1 (en) * | 2019-09-27 | 2021-11-19 | Thales Sa | Multimedia server for an in-car entertainment system, in-car entertainment system comprising such a server, method of controlling storage in such a server and associated computer program |
CA3163480A1 (en) * | 2020-01-02 | 2021-07-08 | William Crowder | Systems and methods for storing content items in secondary storage |
US11797179B1 (en) * | 2022-05-13 | 2023-10-24 | The Toronto-Dominion Bank | Accumulated data transfer amount access |
Family Cites Families (56)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5148432A (en) | 1988-11-14 | 1992-09-15 | Array Technology Corporation | Arrayed disk drive system and method |
US6850252B1 (en) * | 1999-10-05 | 2005-02-01 | Steven M. Hoffberg | Intelligent electronic appliance system and method |
US5473362A (en) | 1993-11-30 | 1995-12-05 | Microsoft Corporation | Video on demand system comprising stripped data across plural storable devices with time multiplex scheduling |
CA2130395C (en) * | 1993-12-09 | 1999-01-19 | David G. Greenwood | Multimedia distribution over wide area networks |
US5802301A (en) * | 1994-05-11 | 1998-09-01 | International Business Machines Corporation | System for load balancing by replicating portion of file while being read by first stream onto second device and reading portion with stream capable of accessing |
US5606359A (en) * | 1994-06-30 | 1997-02-25 | Hewlett-Packard Company | Video on demand system with multiple data sources configured to provide vcr-like services |
US5671377A (en) | 1994-07-19 | 1997-09-23 | David Sarnoff Research Center, Inc. | System for supplying streams of data to multiple users by distributing a data stream to multiple processors and enabling each user to manipulate supplied data stream |
US5889561A (en) * | 1994-11-04 | 1999-03-30 | Rca Thomson Licensing Corporation | Method and apparatus for scaling a compressed video bitstream |
US5793980A (en) * | 1994-11-30 | 1998-08-11 | Realnetworks, Inc. | Audio-on-demand communication system |
EP0716370A3 (en) * | 1994-12-06 | 2005-02-16 | International Business Machines Corporation | A disk access method for delivering multimedia and video information on demand over wide area networks |
US5774668A (en) * | 1995-06-07 | 1998-06-30 | Microsoft Corporation | System for on-line service in which gateway computer uses service map which includes loading condition of servers broadcasted by application servers for load balancing |
US5659539A (en) * | 1995-07-14 | 1997-08-19 | Oracle Corporation | Method and apparatus for frame accurate access of digital audio-visual information |
US6047309A (en) * | 1995-10-02 | 2000-04-04 | International Business Machines Corporation | Recording observed and reported response characteristics at server and/or client nodes in a replicated data environment, and selecting a server to provide data based on the observed and/or reported response characteristics |
US6047323A (en) * | 1995-10-19 | 2000-04-04 | Hewlett-Packard Company | Creation and migration of distributed streams in clusters of networked computers |
US6061504A (en) * | 1995-10-27 | 2000-05-09 | Emc Corporation | Video file server using an integrated cached disk array and stream server computers |
US5933603A (en) | 1995-10-27 | 1999-08-03 | Emc Corporation | Video file server maintaining sliding windows of a video data set in random access memories of stream server computers for immediate video-on-demand service beginning at any specified location |
US5918213A (en) * | 1995-12-22 | 1999-06-29 | Mci Communications Corporation | System and method for automated remote previewing and purchasing of music, video, software, and other multimedia products |
JPH09261617A (en) * | 1996-01-19 | 1997-10-03 | Matsushita Electric Ind Co Ltd | On-demand communication system |
US6065050A (en) * | 1996-06-05 | 2000-05-16 | Sun Microsystems, Inc. | System and method for indexing between trick play and normal play video streams in a video delivery system |
US5991306A (en) * | 1996-08-26 | 1999-11-23 | Microsoft Corporation | Pull based, intelligent caching system and method for delivering data over a network |
US5920700A (en) * | 1996-09-06 | 1999-07-06 | Time Warner Cable | System for managing the addition/deletion of media assets within a network based on usage and media asset metadata |
US6263411B1 (en) * | 1996-09-20 | 2001-07-17 | Matsushita Electric Industrial Co., Ltd. | Video server scheduling for simultaneous read-write requests |
US5892913A (en) * | 1996-12-02 | 1999-04-06 | International Business Machines Corporation | System and method for datastreams employing shared loop architecture multimedia subsystem clusters |
US5935206A (en) | 1996-12-13 | 1999-08-10 | International Business Machines Corporation | Automatic replication of digital video as needed for video-on-demand |
US6014706A (en) * | 1997-01-30 | 2000-01-11 | Microsoft Corporation | Methods and apparatus for implementing control functions in a streamed video display system |
US6314456B1 (en) | 1997-04-02 | 2001-11-06 | Allegro Software Development Corporation | Serving data from a resource limited system |
US6094677A (en) * | 1997-05-30 | 2000-07-25 | International Business Machines Corporation | Methods, systems and computer program products for providing insertions during delays in interactive systems |
US6112239A (en) * | 1997-06-18 | 2000-08-29 | Intervu, Inc | System and method for server-side optimization of data delivery on a distributed computer network |
US6028725A (en) | 1997-06-30 | 2000-02-22 | Emc Corporation | Method and apparatus for increasing disc drive performance |
US6006264A (en) * | 1997-08-01 | 1999-12-21 | Arrowpoint Communications, Inc. | Method and system for directing a flow between a client and a server |
AU8697498A (en) * | 1997-08-08 | 1999-03-01 | Pics Previews, Inc. | A reconfigurable audiovisual previewing system and method of operation |
US6728965B1 (en) * | 1997-08-20 | 2004-04-27 | Next Level Communications, Inc. | Channel changer for use in a switched digital video system |
US6230200B1 (en) * | 1997-09-08 | 2001-05-08 | Emc Corporation | Dynamic modeling for resource allocation in a file server |
US5996015A (en) | 1997-10-31 | 1999-11-30 | International Business Machines Corporation | Method of delivering seamless and continuous presentation of multimedia data files to a target device by assembling and concatenating multimedia segments in memory |
US6362836B1 (en) * | 1998-04-06 | 2002-03-26 | The Santa Cruz Operation, Inc. | Universal application server for providing applications on a variety of client devices in a client/server network |
US6018359A (en) * | 1998-04-24 | 2000-01-25 | Massachusetts Institute Of Technology | System and method for multicast video-on-demand delivery system |
US6314573B1 (en) * | 1998-05-29 | 2001-11-06 | Diva Systems Corporation | Method and apparatus for providing subscription-on-demand services for an interactive information distribution system |
US6178460B1 (en) | 1998-06-30 | 2001-01-23 | International Business Machines Corporation | Method of efficiently retrieving data on a computer network by monitoring performance of mirrored network locations |
US6571391B1 (en) * | 1998-07-09 | 2003-05-27 | Lucent Technologies Inc. | System and method for scheduling on-demand broadcasts for heterogeneous workloads |
US6233389B1 (en) * | 1998-07-30 | 2001-05-15 | Tivo, Inc. | Multimedia time warping system |
US6226618B1 (en) * | 1998-08-13 | 2001-05-01 | International Business Machines Corporation | Electronic content delivery system |
US6092178A (en) * | 1998-09-03 | 2000-07-18 | Sun Microsystems, Inc. | System for responding to a resource request |
JP3396639B2 (en) * | 1998-09-30 | 2003-04-14 | 株式会社東芝 | Hierarchical storage device and hierarchical storage control method |
US6314466B1 (en) | 1998-10-06 | 2001-11-06 | Realnetworks, Inc. | System and method for providing random access to a multimedia object over a network |
US6223203B1 (en) * | 1998-11-04 | 2001-04-24 | Advanced Micro Devices, Inc. | Method for performing parallel management operations including and deleting computer systems |
US6377972B1 (en) * | 1999-01-19 | 2002-04-23 | Lucent Technologies Inc. | High quality streaming multimedia |
WO2000059202A2 (en) * | 1999-03-31 | 2000-10-05 | Diva Systems Corporation | Method for distributing and managing content for on demand applications utilizing local storage |
US6721794B2 (en) * | 1999-04-01 | 2004-04-13 | Diva Systems Corp. | Method of data management for efficiently storing and retrieving data to respond to user access requests |
US6233607B1 (en) * | 1999-04-01 | 2001-05-15 | Diva Systems Corp. | Modular storage server architecture with dynamic data management |
US6535920B1 (en) * | 1999-04-06 | 2003-03-18 | Microsoft Corporation | Analyzing, indexing and seeking of streaming information |
US7028096B1 (en) * | 1999-09-14 | 2006-04-11 | Streaming21, Inc. | Method and apparatus for caching for streaming data |
US6757796B1 (en) * | 2000-05-15 | 2004-06-29 | Lucent Technologies Inc. | Method and system for caching streaming live broadcasts transmitted over a network |
US7107606B2 (en) * | 2000-08-30 | 2006-09-12 | The Chinese University Of Hong Kong | System and method for highly scalable video on demand |
US20020161911A1 (en) * | 2001-04-19 | 2002-10-31 | Thomas Pinckney | Systems and methods for efficient memory allocation for streaming of multimedia files |
GB2386738B (en) * | 2002-03-18 | 2005-09-21 | Hewlett Packard Co | Media playing |
US7761505B2 (en) * | 2002-11-18 | 2010-07-20 | Openpeak Inc. | System, method and computer program product for concurrent performance of video teleconference and delivery of multimedia presentation and archiving of same |
-
2001
- 2001-05-14 US US09/854,839 patent/US6721794B2/en not_active Expired - Lifetime
-
2002
- 2002-05-09 CA CA2701621A patent/CA2701621C/en not_active Expired - Lifetime
- 2002-05-09 CA CA2841216A patent/CA2841216C/en not_active Expired - Lifetime
- 2002-05-09 WO PCT/US2002/014871 patent/WO2002093298A2/en not_active Application Discontinuation
- 2002-05-09 AU AU2002344329A patent/AU2002344329A1/en not_active Abandoned
- 2002-05-09 EP EP02769711A patent/EP1388079A4/en not_active Ceased
- 2002-05-09 CA CA2446602A patent/CA2446602C/en not_active Expired - Lifetime
-
2003
- 2003-10-28 US US10/695,101 patent/US6912585B2/en not_active Expired - Lifetime
-
2005
- 2005-06-27 US US11/168,641 patent/US7882260B2/en not_active Expired - Lifetime
-
2010
- 2010-02-18 US US12/708,144 patent/US8875203B2/en not_active Expired - Fee Related
- 2010-10-26 US US12/911,936 patent/US8065431B2/en not_active Expired - Lifetime
-
2014
- 2014-09-11 US US14/483,760 patent/US9615125B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US6721794B2 (en) | 2004-04-13 |
US20050268160A1 (en) | 2005-12-01 |
EP1388079A2 (en) | 2004-02-11 |
AU2002344329A1 (en) | 2002-11-25 |
US6912585B2 (en) | 2005-06-28 |
CA2701621A1 (en) | 2002-11-21 |
CA2446602C (en) | 2010-07-20 |
US20040088384A1 (en) | 2004-05-06 |
US20020007417A1 (en) | 2002-01-17 |
US8875203B2 (en) | 2014-10-28 |
US7882260B2 (en) | 2011-02-01 |
CA2841216C (en) | 2016-01-05 |
CA2841216A1 (en) | 2002-11-21 |
EP1388079A4 (en) | 2010-03-17 |
WO2002093298A2 (en) | 2002-11-21 |
US20110040866A1 (en) | 2011-02-17 |
WO2002093298A3 (en) | 2003-02-06 |
CA2446602A1 (en) | 2002-11-21 |
US9615125B2 (en) | 2017-04-04 |
US8065431B2 (en) | 2011-11-22 |
US20150067750A1 (en) | 2015-03-05 |
US20100146566A1 (en) | 2010-06-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2701621C (en) | Modular storage server architecture with dynamic data management | |
US5815662A (en) | Predictive memory caching for media-on-demand systems | |
US9813745B2 (en) | Method and apparatus for hierarchical distribution of video content for an interactive information distribution system | |
Dan et al. | Multimedia caching strategies for heterogeneous application and server environments | |
US6233607B1 (en) | Modular storage server architecture with dynamic data management | |
JP4328207B2 (en) | Interactive broadband server system | |
CA2362727C (en) | Queuing architecture with multiple queues and method for statistical disk scheduling for video servers | |
US8739231B2 (en) | System and method for distributed video-on-demand | |
US20050262246A1 (en) | Systems and methods for load balancing storage and streaming media requests in a scalable, cluster-based architecture for real-time streaming | |
US20050262245A1 (en) | Scalable cluster-based architecture for streaming media | |
JP2003167813A (en) | Stream data storing and distributing method and system | |
JPH0887865A (en) | Video storage device and method for reproduction of video program | |
KR20020019597A (en) | Method of and system for reading blocks from a storage medium | |
JP2002540545A (en) | Multimedia server | |
KR100303019B1 (en) | Vod system using proxy server | |
US20140214906A1 (en) | Scalable networked digital video recordings via shard-based architecture | |
Chan et al. | Hierarchical storage systems for interactive video-on-demand | |
Philip et al. | Look-ahead scheduling to support pause-resume for video-on-demand applications | |
Tanaka et al. | Performance improvements of large‐scale video servers by video segment allocation | |
Vin et al. | Multimedia Storage Systems | |
Shih | A Study of Data Allocation for a Video-on-demand Server | |
Tetzlaff | Scheduling, striping, and scaling issues for video server file systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
EEER | Examination request | ||
MKEX | Expiry |
Effective date: 20220509 |