Storage and retrieval of media records in an object store
By assigning recording IDs and hashing metadata within the object store, and concatenating index objects, the solution addresses the inefficiencies in storing and retrieving media records in object stores, enhancing search performance and reducing traffic.
Patent Information
- Application Number
- JP2022192711
- Authority / Receiving Office
- JP · JP
- Patent Type
- Patents
- Current Assignee / Owner
- Priority Date
- 2021-12-08
- Filing Date
- 2022-12-01
- Publication Date
- 2025-04-09
- Estimated Expiration
- 2042-12-01
AI Technical Summary
Existing digital data storage solutions, particularly object stores, face challenges in efficiently storing, retrieving, and maintaining media records while minimizing unnecessary calls to the object store and reducing traffic between the object store and other components.
The proposed solution involves assigning a recording ID to media records and storing media data and metadata in separate objects within the object store. A hash of the metadata is calculated and stored in an index object, which is then concatenated with existing index objects to reduce the number of index objects and improve search efficiency. This approach allows for efficient retrieval of media records and reduces the need for unnecessary calls to the object store.
This solution enables efficient storage and retrieval of media records by reducing the number of index objects and minimizing traffic to and from the object store, thereby improving search performance and reducing overhead costs.
Smart Images

Figure 0007659535000006 
Figure 0007659535000007 
Figure 0007659535000008
Abstract
Description
[Technical field]
[0001] The present disclosure relates to digital data storage technologies. In particular, the present invention proposes a method and device for storing and retrieving media recordings in an object store and for performing maintenance of the object store in which the media recordings are stored. [Background technology]
[0002] Alongside classical file systems, where files are organized in a directory structure (folder tree), non-hierarchical data storage architectures are gaining interest in various industry sectors and are increasingly used in applications where large amounts of data are stored in networked (cloud) memory. An architecture well suited to large amounts of unstructured data stored and accessed over a network connection is object storage, where data is managed as objects without a file or block hierarchy. When an object store is implemented on a memory drive, the lower protocol layers of the memory drive are abstracted from users of the object store (e.g., human users, software applications, and connected client computers).
[0003] In the case of video surveillance and similar uses, storage is not only required to be a secure and reliable archive, but also to have search tools that allow efficient searching of stored data items. A useful search tool should combine good precision and recall with acceptable execution time. Many available storage solutions achieve this by indexing or tagging the data prior to searching. Indexing and tagging are computationally very expensive pre-processing steps that can add a significant amount of overhead data, and are often difficult to parallelize.
[0004] US Patent 10210191 discloses a method for accessing data stored using object storage technology. The storing operation includes creating an object in an object store using a file system, obtaining an index node (I-node) identifier (ID) for an I-node associated with the object, creating an object ID for the object, where the object ID is unique from any other object ID in the object store, merging the I-node ID into the object ID to create a merged object ID whose entirety includes the I-node ID, where the I-node ID is extractable from the merged object ID, and modifying the I-node to include at least the merged object ID. The accessing operation includes extracting the entire I-node ID from the object ID associated with the object stored in the object store using the file system, accessing the I-node associated with the I-node ID to determine the object ID stored therein, determining whether the object ID from the I-node matches the object ID associated with the object from which the I-node ID was extracted, and performing an operation on the object. US Patent No. 10210191 suggests that I-node based access can be upscaled more conveniently than the simple option of using object IDs directly. This disclosure proposes an alternative to this storage / access setup and similar techniques according to the state of the art.
[0005] Focusing on the cognitive aspect, US Patent Application Publication No. 20210112154 proposes a software application for analyzing a scene seen by a mobile phone camera. Image processing tasks applied to the scene and which may be assisted by additional information such as voice commands can be performed locally in the phone, while the associated indexing tasks can be left to networked processing resources. In particular, the goal of the local processing can be to identify pixel groups ("chunks") that potentially depict identifiable visual objects or features in the camera's field of view. Each pixel chunk has a "symbol" and this "chunk ID" can be similarly utilized as an "object ID" if the chunk can be visually recognized as an object. Furthermore, the recognized visual objects can be annotated with a "key vector" constituting a set of attributes stored in an "element cloud-based form" in a cloud-based registry, so that "each data object known to the local device is instantiated via data in the cloud". The attributes can include the recording time and the recording source. The pixel data is stored in the phone's own memory. Summary of the Invention
[0006] One objective of the present disclosure is to make available methods and devices for storing media records in an object store. In such methods and devices, it is desirable for the media records to be searchable as soon as they are stored or with only a limited amount of additional processing. Another objective is to make available methods and devices for searching for related media records among the media records stored in the object store. The efficiency and performance of such methods and devices may be improved if related media records can be located without unnecessary calls to the object store and with a limited amount of traffic to and from the object store. A further objective is to make available methods and devices for performing maintenance of the object store including the stored media records. The maintenance should be such as to facilitate later retrieval of related media records and / or to facilitate cleanup of old media records. It is an overarching objective to achieve this using general purpose, non-customized technology (e.g., object storage solutions) to the greatest extent possible, leveraging such capabilities already available in this technology.
[0007] At least some of these objects are achieved by the invention as defined by the independent claims. The dependent claims relate to advantageous embodiments of the invention.
[0008] In a first aspect of the invention, there is provided a method of storing a media recording including media data associated with metadata, the method comprising: assigning a recording identifier ID to the media recording, storing the media data in one or more data objects in an object store, each data object having the recording ID, storing the media data in an attribute object in the object store, the attribute object having the recording ID, computing a hash of the metadata, storing the hash, the recording ID, the recording interval and the recording source of the media recording in an index object in the object store, and concatenating the index object with an existing index object.
[0009] Concatenating index objects with existing index objects tends to reduce the total number of index objects in the object store. As a result, the number of index objects that need to be examined when an exhaustive search of media records is performed is limited. As will be explained in more detail below, the inclusion of the index object in a hash of metadata allows for a search to be performed with the support of a local cache, which helps to reduce traffic to and from the object store. Preferably, the concatenation process is performed in a component separate from the component or components performing the aforementioned processes. For example, the concatenation process may be delegated to a maintenance component, which may be delegated to an ingest component at the same or a different location. The proposed separation of responsibilities means that the ingest component can be optimized for convenient and fast storage of new media records, while the maintenance component can operate independently. Furthermore, the maintenance component is not subject to any mandatory execution time constraints, and can therefore be scheduled to run on shared processing resources during periods of low computational load.
[0010] In a second aspect of the invention, there is provided a method of searching for media records including media data associated with metadata, the method being implemented in a search component having access to an object store and local access to a cache. It will be appreciated that the local access is practically unlimited in terms of capacity and / or very fast, so does not contribute significantly to the overall execution time. Access to the object store may be more limited in the sense that data exchange with the object store implies cost, delay, or some degree of congestion, as is the case with remote or network access.
[0011] The method according to this second aspect includes receiving a search query; identifying matching media records that match the search query based on one or more index objects in an object store, at least one of which references a plurality of media records and stores, for each media record, a record identifier, ID, and a hash of the metadata of the media record; and determining whether the hash of the matching media record matches a hash of any metadata in the cache (i.e., any metadata item that corresponds to the metadata of a media record). The next step depends on the outcome of the determination. If there is a match, the metadata of the matching media record is retrieved from the cache. If there is no match, an attribute object of the matching media record is retrieved from the object store and the metadata is retrieved from the retrieved attribute object. Regardless of whether the hashes are found to match, one or more data objects of the matching media record are retrieved from the object store.
[0012] Because at least some of the index objects each reference multiple media records (e.g., as a result of concatenation), the identification process can be performed by examining a limited number of index objects. Unnecessary calls to the object store to look up attribute objects are advantageously avoided by virtue of the fact that the index objects hold hashes of the metadata of the media records.
[0013] In a third aspect of the present invention, there is provided a method of performing maintenance of an object store storing a plurality of media recordings, each media recording comprising media data associated with metadata, the object store comprising one or more index objects, each index object referencing at least one media recording and storing, for the media recording, a record identifier, an ID, and a hash of the media recording metadata. The method comprises locating two or more index objects in the object store that refer to the media records having respective recording intervals that fall within a common time period, and concatenating the index objects.
[0014] The concatenation of two or more index objects tends to reduce the total number of index objects in the object store. As a result, the number of index objects that need to be examined when an exhaustive search of media records is performed is limited. A "period" in the sense of the claims is understood to be longer than a "recording interval", where a "recording interval" can represent a granularity suitable for managing records (e.g., minutes, hours), while a "period" can correspond to a granularity suitable for managing the cleanup of a batch of old media records (e.g., hours, days, weeks). Thus, the condition that concatenated index objects belong to a common period (e.g., the same recording date) ensures that an index object does not refer to records from two different periods (e.g., different dates), so that the desired purging of all media records from a particular date can be achieved without complexity.
[0015] A fourth aspect of the invention relates to a system comprising an ingest component and a maintenance component configured to perform a storage method.
[0016] A fifth aspect of the invention relates to a system comprising a search component configured to perform a search method.
[0017] A sixth aspect of the invention relates to a system comprising a maintenance component configured to perform a maintenance method.
[0018] A seventh aspect of the invention relates to a system comprising an ingest component configured to perform the storage method except for the concatenation step.
[0019] The invention further relates to a computer program comprising instructions for causing a computer, in particular the ingest, maintenance and / or retrieval components described above, to carry out the above methods or method steps. The computer program may be stored or distributed on a data carrier. As used herein, a "data carrier" may be a transitory data carrier, such as a modulated electromagnetic or light wave, or a non-transitory data carrier. Non-transitory data carriers include volatile and non-volatile memories, such as permanent and non-permanent storage media of magnetic, optical or solid state type. Still within the scope of "data carrier", such memories may be fixedly attached or may be portable.
[0020] The system and computer program according to the present invention generally share the effects and advantages of the first, second and third aspects outlined above, which may be implemented with a corresponding degree of technical variation.
[0021] In general, all terms used in the claims should be interpreted according to their ordinary meaning in the art, unless expressly defined otherwise herein. All references to "a / an / element, apparatus, component, means, step, etc." should be interpreted broadly as referring to at least one example of an element, apparatus, component, means, step, etc., unless otherwise stated. The steps of any method disclosed herein do not have to be performed in the exact order described, unless expressly stated.
[0022] Aspects and embodiments will now be described, by way of example only, with reference to the accompanying drawings, in which: [Brief description of the drawings]
[0023] [Figure 1] FIG. 1 illustrates a system having components for storing and retrieving media recordings in an object store, and further components for performing maintenance of the object store, according to an embodiment of the present invention. [Diagram 2] 2 is a flowchart of a method according to an embodiment of the present invention. [Diagram 3] 2 is a flowchart of a method according to an embodiment of the present invention. [Figure 4] 2 is a flowchart of a method according to an embodiment of the present invention. [Figure 5A-5B] FIG. 2 illustrates an exemplary index object used to store and retrieve media recordings in an object store. [Figure 6A-6C] FIG. 2 illustrates an exemplary index object used to store and retrieve media recordings in an object store. DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
[0024] Aspects of the present disclosure will now be described more fully hereinafter with reference to the accompanying drawings, in which specific embodiments of the present invention are shown. However, these aspects may be embodied in many different forms and should not be construed as limiting, but rather these embodiments are provided as examples so that this disclosure will be thorough and complete, and will fully convey the scope of all aspects of the present invention to those skilled in the art. Like numbers refer to like elements throughout the description.
[0025] 1 shows a system with components 100, 110, 120, 130, 190 for storing and retrieving media recordings 150 in an object store 123 and further components for performing maintenance of the object store 123. The media recording 150 consists of media data 151 and metadata 152, the metadata 152 including information of a technical or administrative nature that is not necessarily rendered to a user during playback of the media recording 150 but that may affect quantitatively and qualitatively how the rendering is performed. The metadata 152 may also be utilized for additional content-related data that the specified encoding format of the media data 151 cannot absorb. The media recording 150 may be further annotated with a recording interval 153 and a recording source 154. The recording interval 153 indicates the start and end of the capture of the media recording 150 with reference to a reference clock (e.g. network time, GMT). A recording interval 153 may be expressed as, for example, {start, end}, {start, duration} or {duration, end}, where the start and end of the entries refer to the reference clock. Understanding that a recording source 154 produces at most one media recording 150 at a given time, the combination of recording interval 153 and recording source 154 can be used as a search query to identify relevant media recordings 150.
[0026] In the example shown in Figure 1, media recording 150 is a video recording, and media data 151 and metadata 152 include video data related to the video metadata. A video camera 130 suitable for acquiring such a video recording is shown in Figure 1. Video camera 130 may be a digital video camera, a digital surveillance video camera, or a digital surveillance camera. Metadata 152 may relate to technical characteristics of the video recording, such as resolution, frames per second, encoding format, etc. The metadata may be relied upon to accurately and efficiently render (play) the video recording.
[0027] Ingest component 190 is configured to store the media it records as data objects 160, attribute objects 170, and index objects 180 in object store 123. Data objects 160, attribute objects 170, and index objects 180 may, in some embodiments, be instances of the same object type for which object store 123 is configured. In other embodiments, data objects 160, attribute objects 170, and index objects 180 correspond to two or more different object types that differ, for example, with respect to their specified payload sizes or associated operations.
[0028] The search component 110 is configured to process the search query and search for relevant media records 150 based thereon. To this end, the search component 110 comprises a processing circuit 112 and a memory that functions as a cache 111. The processing circuit 112 may be a localized circuit or may be a distributed circuit having one or more processor cores. Access to the cache 111 is local in the sense that no perceptible speed, cost or capacity constraints apply.
[0029] The system further comprises a storage component 120 (or server) including memory 121 and processing circuitry 122 and implementing an object store 123. The object store 123 is operable to receive data from the ingest component 190. The object store 123 is further operable to accept and process search requests from the search component 110 and to forward search results in response thereto. Additionally, the search component 110 can retrieve objects from the object store 123, i.e., forward them from the storage component 120 to the search component 110. If the search component 110 has remote access to the object store 123, as suggested by the intervening communication network 140 in FIG. 1, the number of calls and traffic volume between these components may incur costs in terms of latency, minor contribution to network congestion, and / or processing effort. In this disclosure, the object store 123 is an instance (repository) of a storage technology that conforms to an object storage architecture. Optionally, the object store 123 may comply with standards such as INCITS 458-2011 (Information Technology - Commands for SCSI Object-Based Storage Devices - 2; OSD-2) and INCITS 400-2004 (Information Technology - Commands for SCSI Object-Based Storage Devices; OSD) published by the International Committee for Information Technology Standards. Amazon Simple Storage Service™ (Amazon S3) and Microsoft Azure Blob Storage™ are exemplary cloud-based object store services.
[0030] A maintenance component 124 is further provided for performing maintenance (including index object linkages) on the object store 123. The maintenance component 124 may correspond to dedicated hardware (not shown) inside or outside the storage component 120, or may be implemented as software code executing on the processing circuitry 122 of the storage component 120 or on a processing circuitry 122 outside the storage component 120. The maintenance component 124 may optionally have the further responsibility of inspecting data structures currently stored in the object store 123, and preventing, detecting, and correcting failures thereof. It will be appreciated that lower layer aspects of the memory drive(s) on which the object store 123 is implemented may be subject to separate maintenance.
[0031] The described components of the system can exchange data, messages, and / or instructions between them when they run. The components need not be under common management or ownership; for example, object store 123 may be hosted by a different organization (e.g., a cloud service provider) than the organization that provides media recordings 150 (e.g., a security company), which is different from the parties that typically search and view media recordings 150 (e.g., customers of the security company). Thus, the components need not be located in physical proximity to one another. To illustrate the flexible choices that implementers have between local and distributed deployments, FIG. 1 shows some pairs of components connected via a communications network 140 (or multiple communications networks 140), each of which may be a local or wide area network, while other components have direct connections.
[0032] In some embodiments, the source of media recordings 150 (e.g., video camera 130, optionally with post-processing components) is co-located with storage component 120 and maintenance component 124. Ingest component 190 may be co-located with storage component 120, or implemented in the storage component, or ingest component 190 may be a separate component. Search component 110 (e.g., API) may be co-located with storage component 120, or search component 120 may be a separate component. In some embodiments, a user (e.g., a human user, a software application, a client computer connection) accesses search component 110 directly, and in other embodiments, a user interacts with search component 110 through a user interface 101 (e.g., a web interface) executing on user side component 100, as shown in FIG. 1. This is advantageous because, on the one hand, the traffic volume between the storage component 120 and the search component 110 is typically greater than the traffic volume between the search component 110 and the user side component 100, and, on the other hand, the search component 110 can be located closer to the storage component 120.
[0033] FIG. 2 is a flow chart of a method 200 for storing a media recording 150, which will be described with continued reference to FIG. 1. The steps of method 200 can be allocated in different ways. In one embodiment, all steps are performed by the same component. In another embodiment, allocation step 210, storage steps 212, 214, 218, and calculation step 216 are performed by a first component (e.g., ingest component 190 of FIG. 1), and concatenation step 220 is performed by a separate second component (e.g., maintenance component 124). This other embodiment can speed up storage operations and / or lend itself to a more economical implementation where most of the processing is deferred to periods of lower overall processing load. In yet another embodiment, initial steps 210, 212, 214, 216, 218 are as shown in FIG. 2, but concatenation step 220 is replaced by a step of initiating concatenation, and method 200 is performed in its entirety by the same component. Initiating consolidation may include issuing a command to the maintenance component 124 or leaving data stored in the object store 124 in a state that indicates to the maintenance component 124 that consolidation should be performed. The indication may be implicit, for example, the maintenance component 124 may be configured to look for index objects 180 in the object store 123 that are below a threshold size, or to periodically count the total number of index objects 180 that are below a threshold size. Either way, the creation of a new index object 180 by the ingest component 190 is signaled by the maintenance component 124 and thus may be understood as the initiation of consolidation. The indication may be explicit, for example, the index object has a flag that indicates "not consolidated."
[0034] In a first step 210 of the method 200, a recording identifier (ID) is assigned to the media recording 150. As suggested by the example ID9874, ID9875, ID9876 in Figures 1, 5 and 6, the recording ID may be any number or alphanumeric string, such as a sequential number of any suitable length. The recording ID is preferably unique to the media recording 150 as long as it is stored in the object store 124. Recording IDs of old media recordings 150 that are deleted may be reassigned to new media recordings 150. Note that the recording ID is independent of any object identifiers that the object store 123 may assign to each stored object.
[0035] In a second step 212, the media data 151 of the media recording 150 is stored in one or more data objects 160 in the object store 123, each data object 160 having a record ID. The record ID may be included in the object identifier of the data object 160 or may be included in an object metadata item. Functionally, the record ID is carried by the data object 160 such that the object store 123 allows efficient retrieval (e.g., by a dedicated request) of all data objects 160 with a specified record ID. The data object 160 may be used to store only the media data 151, or may contain data in addition to the media data 151. In some embodiments, the data object 160 may be stored incrementally in the object store 123 while the media recording 150 is being created, for example at predefined time intervals, or when the media data cache exceeds a predefined level. In other embodiments, the method 200 is not executed until the media recording 150 is completed. In this case, the number of data objects 160 used may be determined by the maximum allowed size of an object in the object store 123.
[0036] In a third step 214 of the method 200, the metadata 152 of the media recording 150 is stored in an attributes object 170. The metadata 152 of one media recording 150 may be referred to as a "metadata item" in this disclosure. As described in the second step 212, the attributes object 170 has a record ID such that the object store 123 allows efficient searching of the attributes object 170 with a specified record ID. The step 214 may include forming 214.1 a new attributes object 170 and storing the metadata 152 therein. Alternatively, the metadata 152 may be stored in an existing metadata object 152 that has been modified (edited) 214.2. In yet another alternative, an existing attributes object 170 containing metadata of one or more previously stored media recordings is replaced by a new attributes object 170 containing metadata of the previously stored media recording(s) and metadata of the media recording 150 for which the method 200 is being performed. A preferred option, particularly if the metadata 152 is not expected to change after step 214, is to store the metadata 152 in newly created 214.1 attribute objects 170 such that each attribute object 170 in the object store 123 contains the metadata 152 for only a single media record 150.
[0037] In a fourth step 216, a hash 171 of the metadata 152 is calculated. This is done using the hash function TIFF0007659535000001.tif7170. The hash function or one-way function shall be predefined (e.g., reproducible) so that the hash can be regenerated by the search component 110. The hash function may be a cryptographic or non-cryptographic hash function such as SHA-256, SHA3-512, and RSA-1024. Since the hash function is not used for security related purposes within the method 200, a relatively simple hash function may be employed as long as the collision probability is acceptably small. A hash collision may cause the search component 110 to erroneously rely on a cached metadata item but not expose the metadata to unauthorized parties.
[0038] In different embodiments, step 216 may involve hashing the entire metadata 152 or hashing a subset thereof extracted according to a predefined deterministic rule. The hash 171 may be based on a combination of the metadata 152 and a cryptographic salt. Regardless of these choices, the hash 171 of the metadata 152 is advantageously independent of the record ID, i.e., the record ID is preferably determined by the hash function should not form part of the input data to TIFF0007659535000002.tif7170. In this way, the search component 110 can refrain from retrieving metadata of a later media recording from the object store 123 if the hash indicates that this metadata matches metadata of an earlier media recording 150.
[0039] In a fifth step 218 of the method 200, the hash 171, the recording ID, and an indication of the recording interval 153 and the recording source 154 of the media recording 150 are stored in an index object 180 in the object store 123. After the fifth step 218, execution of the method 200 produces the data object 160, the attribute object 170, and the index object 180 shown in FIG. 1. More precisely, the hash 171, the recording ID, and an indication between the recording interval 153 and the recording source 154 are stored in an index object 180 in the object store 123. In the newly created (218.1) index object 180-2 (where ID 9876 is the record ID of the media recording 150 to be stored, see FIG. 6B), in a modified 218.2 index object 180-1 (see FIG. 5B, which shows a possible result of adding information about media record ID 9876 to index object 180-1 as shown in FIG. 5A), or - in a replacement index object to which information is added, replacing an existing previously stored index object in the object store 123 (218.3), It can be memorized. For purposes of illustration, this example assumes that the hash 171, the record ID, and an indication of the record interval 153 and the record source 154 are stored in a newly created index object 180-2. In this case, the newly created index object 180-2 may optionally have a record ID (i.e., in addition to including the record ID). If the index object 180 has a record ID, it becomes possible to conveniently list multiple index objects by issuing a single list operation to the object store 123. If, instead, the index object 180 does not have a record ID, as many lookup operations (e.g., get) as there are index objects may be required to read each record ID.
[0040] In a sixth step 220 of the method 220, the newly formed index object 180-2 is then concatenated with the existing index object 180-1. To illustrate, Figures 6A, 6B, and 6C show a subset of the contents of the object store 123 at three successive times. The contents include an existing index object 180-1 that holds information for media recording IDs 9874 and 9875; a newly formed index object 180-2 that holds information for a media recording ID 9876 that will be stored by execution of the storage method 200; and an index object 180-3 that results from the concatenation of the existing and newly formed index objects 180-1, 180-2. Because the index object 180-3 retransmitted from the concatenation contains information for all three media recording IDs 9874, 9875, 9876, the search component 110 can exhaustively evaluate a search query by examining one fewer index object. An existing index object 180-1 may have been stored in the object store 123 as a result of storing a previous media recording 150. In certain embodiments of the method 200, the sixth step 220 includes updating the object store 123 at scheduled intervals (e.g., Per TIFF0007659535000003.tif7170, TIFF0007659535000004.tif7170, at the end of each working day) and / or whenever affordable processing resources are available. The sixth step 220 may be configured such that the two index objects are concatenated as soon as the recording intervals 153 refer to media records 150 that fall within a common period. In this way, after the sixth step 220 has been performed a sufficiently large number of times, a single index object 180 will refer to all media records 150 from that period, which simplifies subsequent searches. It is recalled that the "period" (e.g., hours, days, weeks) is preferably configured to be longer than a typical "recording interval" (e.g., minutes, hours). The concatenation of the two index objects IO1, IO2 is - appending the contents of IO1 to IO2 and deleting IO1 from the object store 123; - appending the contents of IO2 to IO1 and deleting IO2 from the object store 123; or forming a new index object IO3 that holds the combined contents of IO1 and IO2 and replaces IO1 and IO2 in the object store 123; may include.
[0041] As initially presented, and as one of ordinary skill in the art would understand after reviewing this disclosure, method 200 can be performed in a different sequence of steps. For example, step 218 can be performed before step 214, and step 216 can be performed before step 214.
[0042] 3, a method 300 for searching media recordings 150 will now be described. The method 300 is suitable for execution by a search component 110 having access to the object store 123 and having local access to a cache 111. The method 300 may be executed at a time when the cache 111 contains metadata 152 for a large number of media recordings 150. The metadata 152 in the cache may be copies of metadata items of an attribute object 170 in the object store 123, for example, as a by-product of a previous search or as a result of dedicated storage of a snapshot of all the metadata 152 in the object store 123. In different embodiments, the cache 111 may hold free metadata items or attribute objects 170 that contain such metadata items.
[0043] In a first step 310 of the method 300, a search query is received. The search component 110 may receive the search query from a user, such as a human user, a software application, or a connected client computer. The allowable format of the search query may vary between different embodiments, particularly as a result of the search requests supported by the object store 123. For example, the search query may reference a recording interval, an identifier or other attribute of the recording source, and / or a recording ID. Because the metadata 152 of the media recording 150 is stored outside of the index object 180 in the object store 123, in this example, it may not be possible to process a search query formulated with respect to the metadata 152.
[0044] If the object store 123 is capable of processing the search request to identify all index objects 180 (e.g., by their object IDs) that reference media recordings 150 that were acquired by the recording source 154 that have the attributes specified by the search request and / or that were acquired in a recording interval 153 that overlaps with the interval specified by the search request, then the search query can be evaluated without searching for the attribute objects 180 in the object store 123 (i.e., without transferring the attribute objects 180 to the search component 110). This means that the execution flow proceeds directly to identifying 314 matching media recordings 150, which identification 314 is performed based on index objects held by the object store 123. In an alternative embodiment adapted to an object store 123 that lacks this search capability, the method 300 includes searching 312 for the index objects 180 (e.g., transferring the index objects 180 to a memory to which the search component 110 has local access), after which identification 314 of matching media recordings 150 is performed based on the searched index objects 180. Either way, the matching media recordings 150 identified in step 314 are those that match the search query.
[0045] Given the foregoing description of storage method 200, it can be seen that at least one of index objects 180 references multiple media recordings 150, which may be the result of concatenation 220. For each media recording 150, index object 180 stores a recording ID and a hash 171 of metadata 152 for the media recording 150. Optionally, index object 180 further stores, for each media recording 150, an indication of a recording interval 153 and a recording source 154.
[0046] The next step 316 of the search method 300 is to determine whether the hash 171 of the matching media recording 150 (i.e., the hash of the metadata 152 of the matching media recording 150) matches the hash 171 of any metadata 152 (of any metadata item) in the cache 111. The hash 171 of a metadata item in the cache 111 is determined using the same hash function that was used in the storage method 200 when the metadata item was stored in the cache 111. TIFF0007659535000005.tif7170. If the hashes match (e.g., their values are identical; "Yes" branch from block 316), the metadata 152 can be conveniently retrieved (320.1) by locally accessing the cached attribute object 170. If the hashes do not match ("No" branch from block 316), the corresponding attribute object 170 is retrieved (318) from the object store 123, and the metadata 152 is retrieved (320.2) from the retrieved attribute object 170. In systems where the search component 110 has non-local access to the object store 123, such a search 318 may incur a cost in terms of delay, a small contribution to network congestion, and / or processing effort.
[0047] Regardless of which option the metadata 152 is obtained (320), it may be shared (310) with the user who received the search query. Optionally, subsequent steps 322, 324 of the method 300 may be conditional, meaning that they are executed only if the user approves the metadata 152 after having had an opportunity to inspect it.
[0048] In a next step 322 of the method 300, the data objects 160 of the matching media recording 150 are retrieved from the object store 123. The media data 151 and the metadata 152 can then be combined to reconstruct the media recording 150. In this manner, the media recording 150 is made available for various purposes, such as playback 324. Playback 324 may be performed in accordance with the metadata 152 using a playback application or device (not shown).
[0049] In some embodiments, the search 318 for the attribute object 170 and / or the search 322 for the one or more data objects 160 includes issuing a request to the object store 123 using the recording IDs of the matching media recordings 150. Such requests can be performed at a relatively low cost because, as described above, the attribute objects 170 and the data objects 160 have record IDs.
[0050] In a further development of the method 300, the step of retrieving 318 the attribute objects 170 for the matching media records 150 includes storing the retrieved attribute objects 170 in the cache 111. In this way, the relatively expensive retrieval 318 of the attribute objects 170 benefits not only the current search, but also any potential later searches in which the matching media records 150 are identical or have identical metadata 152.
[0051] It should be noted that metadata hash 216 is an optional step of storage method 200. In embodiments in which storage method 200 does not include step 216, step 218 below involves storing only the recording ID, recording interval 153, and recording source 154 in index object 180. Correspondingly, retrieval method 300 may be adapted such that decision 316 is omitted and execution flow proceeds directly from step 314 to steps 318 and 320.2, i.e., attribute object 170 is always retrieved from object store 123.
[0052] 4, there is further provided a method 400 for performing maintenance of an object store 123 for storing a plurality of media recordings 150 of the type described. The maintenance method 400 is thus suitable to be performed when the object store 123 holds one or more index objects 180, each index object 180 referencing at least one media recording 150 and storing, for the media recording 150, a record ID and a hash 171 of the metadata 152 of the media recording 150.
[0053] The maintenance method 400 begins with finding 410 two or more index objects 180 that reference media recordings 150 whose respective recording intervals 153 fall within a common time period. It is recalled that the "time period" (e.g., hours, days, weeks) is preferably configured to be longer than a typical "recording interval" (e.g., minutes, hours).
[0054] If such index objects 180 are found in the object store 123, the method 400 includes concatenating the index objects 180 into fewer index objects 180, preferably a single index object. Figures 6B and 6C show how the contents of the object store 123 change as a result of the concatenation. See above for the description of step 220 of the storage method 200, which can also be performed.
[0055] As noted above, maintenance method 400 may be run at a low priority, for example as a background process, unless there is a specific reason to accelerate the progress of the consolidation. Embodiments of method 400 may include performing maintenance of low level aspects of the memory drive on which object store 123 is implemented, or providing for the inspection of data structures currently stored in object store 123, and the prevention, detection, and correction of failures thereof.
[0056] Aspects of the present disclosure have been primarily described above with reference to certain embodiments, however, as will be readily appreciated by those skilled in the art, other embodiments than those disclosed above are equally possible within the scope of the present invention, as defined by the appended claims.
Claims
1. 1. A method (300) for searching (150) in a search component (110) for video recordings (150) including video data (151) associated with video metadata (152), the video metadata (152) relating to technical characteristics of the video recordings (150) relied upon during playback of the video recordings and including one or more of resolution, frames per second, and encoding format, the method being implemented in a search component (110) having access to an object store (123) according to an object storage architecture and local access to a cache (111), the method comprising: Receiving a search query (310); identifying (314) matching video recordings (150) that match the search query based on one or more index objects (180) in the object store (123), at least one of the one or more index objects (180) referencing a plurality of video recordings (150) and storing, for each video recording (150), a recording ID, a hash (171) of metadata (152) for the video recording (150), and a recording interval (153) and recording source (154) for the video recording (150); determining (316) whether a hash (171) of the video metadata (152) of the matching video recording (150) matches a hash (171) of any video metadata (152) included in an attribute object (170) in the cache (111), where the hash (171) of the video metadata (152) of the matching video recording (150) and the hash (171) of each video metadata (152) in the cache (111) are calculated using a predefined hash function; If there is a match, retrieving (320.1) the metadata (152) from the attributes object (170) in the cache (111); if not, retrieving (318) an attribute object (170) for the matching video recording (150) from the object store (123) that stores the video metadata (152) and has the recording ID, obtaining (320.2) the video metadata (152) from the retrieved attribute object (170), and storing the retrieved attribute object (170) in the cache (111); retrieving (322) one or more data objects (160) of the matching video footage (150) from the object store (123); The method (300).
2. the search query specifies a recording time and / or a recording source; The method of claim 1.
3. The method of claim 1 , wherein the at least one of the one or more index objects (180) pointing to multiple video recordings is formed by a concatenation of one or more index objects.
4. The method of claim 1 , further comprising retrieving (312) the one or more index objects (180) from the object store (123).
5. In the ingest component (190), assigning (210) said recording ID to said video recording (150); storing (212) the video data (151) in one or more data objects (160) in the object store (123) according to an object storage architecture, each data object (160) storing (212) the video data (151) with the record ID; storing (214) the video metadata (152) in the attribute object (170) with the recording ID in the object store (123); calculating (216) the hash (171) of the video metadata (152) using a predefined hash function; storing (218) the hash (171) of the video recording (150), the recording ID, the recording interval (153), and the recording source (154) in an index object (180, 180-2) in the object store (123); In the maintenance component (124), Concatenating (220) said index object (180-2) with an existing index object (180-1); The method of claim 1 further comprising:
6. 6. The method of claim 5, wherein the existing index object (180-1) points to at least one video recording (150; ID 9874, ID 9875) having a recording interval (153) that falls within the same period as the video recording (150; ID 9876) being stored.
7. 6. The method of claim 5, further comprising creating (218.1) a new index object (180-2) in which the hash (171), the record ID, the record interval (153) and the record source (154) are stored.
8. The method of claim 5 , wherein the hash (171) of the video metadata (152) is independent of the recording ID.
9. 6. The method of claim 5, wherein the storing (214) the video metadata (152) comprises creating a new attribute object (214.1).
10. 11. A system configured to search video recordings (150), the system comprising a search component (110) having access to an object store (123) according to an object storage architecture and local access to a cache (111), the search component (110) configured to perform the method of claim 1.
11. 11. The system of claim 10, further comprising an ingest component (190) and a maintenance component (124), further configured to store the video recordings (150), the system further configured to perform the method of claim 5.
Citation Information
Patent Citations
Systems and methods for presenting content items in a collections view
US20140195516A1
Dynamic Caching and Eviction
US20200167281A1
Intuitive computing methods and systems
US20210112154A1