УПРАВЛЕНИЕ ДАННЫМИ ДЛЯ СОЕДИНЕННЫХ УСТРОЙСТВ
DATA MANAGEMENT FOR CONNECTED DEVICES

УРОВЕНЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] Здания, например, дома, склады и офисы, все больше наполняются соединенными устройствами. Например, камеры наблюдения, датчики температуры и/или датчики движения получили широкое распространение. Соответственно, приложения, которые манипулируют данными от этих устройств, также стали более распространенными. Однако, системы, ранее реализованные или предложенные для хранения данных, извлечения и совместного использования в таких приложениях, могут быть недостаточными и неэффективными.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0002] В данной заявке описаны улучшенные инфраструктура и способы для управления, например, сохранения, манипулирования и/или извлечения данных в системах соединенных устройств. В, по меньшей мере, одном примере описанные здесь подходы предусматривают форматирование и сохранение данных, принятых от домашней системы контроля, которая может включать в себя камеры наблюдения, датчики движения, датчики температуры и т.д. В некоторых примерах, способы предусматривают тегирование данных и создание индекса тегов/данных. Индекс и данные могут храниться удаленно, например, в облачном хранилище. В некоторых реализациях, индекс выбирается локально, и запросы индекса выдаются локально до выборки соответствующих частей данных. Нижеследующее рассмотрение описывает эти и другие неограничительные примеры обработки данных в системах соединенных устройств контроля. Некоторые реализации могут обеспечивать гибкость в конструкции приложений, для совместного использования информации между пользователями, и/или для улучшенной защиты данных.
[0003] Эта сущность изобретения призвана представлять в упрощенной форме основные принципы, которые дополнительно описаны в нижеследующем подробном описании. Эта сущность изобретения не призвана идентифицировать ключевые признаки или существенные признаки заявленного изобретения, а также не подлежит использованию для ограничения объема заявленного изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0004] Подробное описание приведено со ссылкой на прилагаемые чертежи. На чертежах, самая(ые) левая(ые) цифра(ы) ссылочной позиции идентифицирует фигуру, в которой впервые появляется ссылочная позиция. Одни и те же ссылочные позиции в разных фигурах указывают аналогичные или идентичные элементы.
[0005] Фиг. 1 - блок-схема, изображающая иллюстративное окружение для реализации управления данными для описанных здесь соединенных устройств.
[0006] Фиг. 2 - блок-схема, изображающая иллюстративное вычислительное устройство, например, вычислительное устройство, проиллюстрированное в окружении на фиг. 1.
[0007] Фиг. 3 - блок-схема, изображающая иллюстративную архитектуру процесса, которая может осуществлять управление данными для соединенных устройств.
[0008] Фиг. 4 - блок-схема, изображающая иллюстративную архитектуру процесса, которая может осуществлять извлечение данных для соединенных устройств.
[0009] Фиг. 5 - блок-схема, изображающая иллюстративную конфигурацию данных для реализации управления данными для описанных здесь соединенных устройств.
[0010] Фиг. 6 - блок-схема, изображающая иллюстративную конфигурацию данных для реализации управления данными для описанных здесь соединенных устройств.
ПОДРОБНОЕ ОПИСАНИЕ
[0011] Описанные здесь примеры обеспечивают подходы и конструкции для управления данными, например, данными от соединенных устройств, с использованием ресурсов, включающих в себя, например, блоки обработки и ускорители. Такие ресурсы можно реализовать с использованием специализированного программирования и/или оборудования, запрограммированного конкретными инструкциями для реализации указанных функций. Например, ресурсы могут иметь разные модели выполнения, что справедливо для графических процессоров (GPU) и центральных процессоров (CPU).
[0012] В реализациях этого изобретения, способ сохранения информации включает в себя прием от множества устройств потока данных временного ряда, содержащего множество объектов и временную идентификацию, связанную с каждым из объектов. Объектами могут быть, например, значения (например, значения температуры), изображения (например, от камеры наблюдения) и/или двоичное указание (например, наличие/отсутствие от детектора движения).
[0013] Способ также может включать в себя связывание одного или более тегов с каждым из объектов. В некоторых реализациях, теги могут описывать атрибуты объектов и могут быть доступны для поиска, например, для извлечения тегированных объектов на более позднюю дату или время. Теги могут применяться на устройстве/датчике, например, приложением, выполняющимся на устройстве/датчике. В других реализациях, пользователь может вручную вводить теги или теги можно связывать с потоком данных иначе, чем на устройстве/датчике. Способ также может включать в себя фрагментацию потока тегированных объектов на множество смежных фрагментов, с каждым из смежных фрагментов, включающих в себя множество объектов. Подходы согласно этому раскрытию позволяют сжимать и/или шифровать фрагменты, и сохранять фрагменты. В некоторых реализациях, способ также включает в себя создание индекса для потока данных. Индекс может включать в себя связь между временными идентификациями и тегами, и способы этого изобретения позволяют сохранять индекс отдельно от фрагментов. В одном примере, фрагменты могут храниться удаленно, тогда как поиск по индексу осуществляется локально. В других иллюстративных реализациях, пользователь может делать локальный запрос индекса, и способ может извлекать фрагмент(ы), имеющий(е) объект(ы), удовлетворяющий(е) запросу.
[0014] Описанные здесь подходы также позволяют использовать предпочтения пользователя для сохранения данных. Например, пользователь может принимать решение, доступны ли данные, исходящие из связанных с ним устройств, другим пользователям. Таким образом, пользователи будут авторизовать доступ к исходящей от них информации. Пользователь также может выбирать тип хранилища информации, например, для адаптации данных к устройству пользователя и/или ограничениям хранения. В других аспектах, данные, хранящиеся согласно описанным здесь инфраструктурам, могут быть конфиденциальными, защитными и/или свежими.
[0015] Примеры инфраструктуры управления данными представлены более подробно в нижеследующем описании и прилагаемых чертежах.
[0016] Описанные здесь примеры обеспечивают подходы и конструкции, применимые к поддержанию и манипулированию данными от устройств/датчиков. В различных случаях, блок обработки, сконфигурированный посредством программирования от модулей или API для осуществления описанных здесь подходов, может включать в себя один или более из GPU, вентильной матрицы, программируемой пользователем (FPGA), другого класса цифрового сигнального процессора (DSP), или других компонентов аппаратной логики, которые, в ряде случаев, могут возбуждаться посредством CPU. В порядке примера, но не ограничения, иллюстративные типы компонентов аппаратной логики, которые можно использовать, включают в себя специализированные интегральные схемы (ASIC), специализированные микросхемы массового производства (ASSP), однокристальные системы (SOCs), сложные программируемые логические устройства (CPLD) и т.д.
[0017] Различные примеры, сценарии и аспекты дополнительно описаны со ссылкой на фиг. 1-6.
[0018] Фиг.1 демонстрирует иллюстративное окружение 100, которое можно использовать для реализации управления данными и обработки в системах наблюдения, включающей в себя хранение и извлечение данных. Окружение 100 включает в себя множественные устройства 102 контроля, расположенные в месте наблюдения. В иллюстрируемом примере наблюдается два места, поэтому существует два набора устройств 102 контроля. Устройства 102 контроля по отдельности включают в себя датчик 104 и интерфейс 106 связи для вывода потока данных временного ряда, включающего в себя объекты, воспринимаемые датчиком 104, и метки времени, связанные с объектами. Иллюстративные устройства 102 контроля могут включать в себя, но без ограничения, камеры, датчики движения, датчики температуры и т.д.
[0019] Окружение 100 также включает в себя множество вычислительных устройств 108, каждое из которых связано с одним или более устройств контроля. В одной реализации, каждое вычислительное устройство 108 связано с отдельным пользователем или отдельным местом. Например, в случае, когда устройства 102 контроля являются домашними устройствами наблюдения, каждый дом имеет свое собственное вычислительное устройство 108. В других примерах, может использоваться одно единственное вычислительное устройство 108, например, для множественных домов и/или устройств наблюдения. В одном примере, вычислительное устройство 108 может находиться на или иным образом управляться сторонним поставщиком услуг, например, компанией охраны или наблюдения за домами.
[0020] Вычислительное(ые) устройство(а) 108 может(гут) принадлежать различным категориям или классам устройств, например, быть традиционными устройствами-клиентами, устройствами типа настольного компьютера, мобильными устройствами, устройствами специального назначения, встроенными устройствами и/или носимыми устройствами. Вычислительное(ые) устройство(а) 108 может(гут) включать в себя разнообразные типы устройств и не ограничиваются никаким конкретным типом устройства. Вычислительное(ые) устройство(а) 108 может(гут)включать в себя, но без ограничения, телекоммуникационные устройства, например, мобильные телефоны, планшетные компьютеры, смешанные устройства мобильного телефона/планшета, карманные персональные компьютеры (PDA), портативные компьютеры, другие мобильные компьютеры, носимые компьютеры, встроенные вычислительные устройства, настольные компьютеры, персональные (например, настольные) компьютеры, автомобильные компьютеры, телевизоры с возможностью подключения к сети, тонкие клиенты, терминалы, игровые консоли, игровые устройства, рабочие станции, медиапроигрыватели, персональные устройства видеозаписи (PVRs), телевизионные приставки, камеры, интегрированные компоненты для включения в вычислительное устройство, электроприборы, или любую другую разновидность вычислительного устройства.
[0021] Каждое из вычислительных устройств 108 имеет, по меньшей мере, один процессор 110 и память 112. Хотя проиллюстрированы только один процессор 110 и одна память 112, могут существовать множественные процессоры 110, множественные запоминающие устройства 112 или то и другое. Процессор(ы) 110 может(гут) представлять собой единичный блок обработки или несколько блоков, каждый из которых может включать в себя несколько разных блоков обработки. Процессор(ы) 110 может(гут)включать в себя микропроцессор, микрокомпьютер, микроконтроллер, цифровой сигнальный процессор, центральный процессор (CPU), графический процессор (GPU), процессор системы безопасности и т.д. Альтернативно или дополнительно, некоторые или все из описанных здесь подходов могут осуществляться, по меньшей мере, частично, одним или более компонентами аппаратной логики. В порядке примера, но не ограничения, иллюстративные типы компонентов аппаратной логики, которые можно использовать, включают в себя вентильную матрицу, программируемую пользователем (FPGA), специализированную интегральную схему (ASIC), специализированные микросхемы массового производства (ASSP), конечный автомат, сложное программируемое логическое устройство (CPLD), другую логическую схему, однокристальную систему (SoC) и/или любые другие устройства, которые осуществляют операции на основании инструкций. Помимо других возможностей, процессор(ы) 110 может(гут) быть выполнен(ы) с возможностью выбирать и/или исполнять машиночитаемые инструкции, хранящиеся в памяти 112.
[0022] Память может включать в себя один или комбинацию компьютерно-считываемых носителей. Используемый здесь термин “компьютерно-считываемые носители” включает в себя компьютерные носители данных и среды передачи данных.
[0023] Компьютерные носители данных включают в себя энергозависимые и энергонезависимые, сменные и стационарные носители, реализованный посредством любого способа или технологии для хранения информации, например, машиночитаемых инструкций, структур данных, программных модулей или других данных. Компьютерные носители данных включают в себя, но без ограничения, память на основе фазовых переходов (PRAM), статическую оперативную память (SRAM), динамическую оперативную память (DRAM), другие типы оперативной памяти (RAM), постоянную память (ROM), электрически стираемую программируемую ROM (EEPROM), флэш-память или другую технологию памяти, компакт-диск с возможностью только считывания (CD-ROM), цифровые универсальные диски (DVD) или другое оптическое запоминающее устройство, магнитные кассеты, магнитную ленту, запоминающее устройство на основе магнитного диска или другие магнитные запоминающие устройства, или любой другой носитель, который можно использовать для хранения информации с возможностью доступа со стороны вычислительного устройства.
[0024] Напротив, среды передачи данных включают в себя машиночитаемые инструкции, структуры данных, программные модули, или другие данные в модулированном сигнале данных, например, несущей волне. По определению, компьютерные носители данных не включают в себя среды передачи данных.
[0025] Исполнимые инструкции, хранящиеся на компьютерно-считываемых носителях памяти 112 могут включать в себя, например, операционную систему, инфраструктуру 114 управления данными, и/или другие модули, программы или приложения, загружаемые и исполняемые блоком(ами) 110 обработки. Альтернативно или дополнительно, описанные здесь функции могут осуществляться, по меньшей мере, частично, одним или более компонентами аппаратной логики, например, ускорителями. В порядке примера, но не ограничения, иллюстративные типы компонентов аппаратной логики, которые можно использовать, включают в себя FPGA, ASIC, ASSP, SOC, CPLD и т.д. Например, ускоритель может представлять смешанное устройство, например, один из ZYLEX или ALTERA, который включает в себя курс CPU, внедренный в ткань FPGA.
[0026] Также, как показано на фиг. 1, вычислительные устройства 108 также коммуникативно подключены друг к другу, а также к локальному хранилищу 116 и удаленному хранилищу 118, например, через сеть 120.
[0027] Например, сеть(и) 120 может(гут) включать в себя публичные сети например, интернет, частные сети, например, офисную и/или персональную интрасеть, или некоторую комбинацию частных и публичных сетей. сеть(и) 120 также может(гут) включать в себя любой тип проводной и/или беспроводной сети, в том числе, но без ограничения, локальные сети (LAN), глобальные сети (WAN), спутниковые сети, кабельные сети, сети Wi-Fi, сети WiMax, сети мобильной связи (например, 3G, 4G и т.д.) или любую их комбинацию. Сеть(и) 120 могут использовать протоколы связи, включающие в себя протоколы на основе пакетов и/или протоколы на основе дейтаграмм, например, интернет-протокол (IP), протокол управления передачей (TCP), протокол пользовательских дейтаграмм (UDP), или другие типы протоколов. Кроме того, сеть(и) 120 также может(гут) включать в себя несколько устройств, которые облегчают сетевую связь и/или образуют аппаратную основу сетей, например, коммутаторы, маршрутизаторы, шлюзы, точки доступа, брандмауэры, базовые станции, ретрансляторы, магистральные устройства и пр.
[0028] В некоторых примерах, сеть(и) 120 может(гут) дополнительно включать в себя устройства, которые обеспечивают соединение с беспроводной сетью, например, беспроводную точку доступа (WAP). Сеть(и) может(гут) поддерживать возможность соединения через WAP, которые отправляют и принимают данные на различных электромагнитных частотах (например, радиочастотах), включая WAP, которые поддерживают стандарты Института инженеров по электротехнике и радиоэлектронике (IEEE) 802.11 (например, 802.11g, 802.11n и т.д.), и другие стандарты.
[0029] Локальное хранилище 116, в общем случае, означает память и/или хранилище данных, например, базы данных, связанные с вычислительным(им) устройством(ами) 108. В одном примере, локальное хранилище может означать память, хранящуюся на жестком диске вычислительного(ых) устройства() 108. В некоторых других реализациях, локальное хранилище 116 может означать базу данных и/или память, которые совместно используют сеть с одним или более из вычислительных устройств 108. Локальное хранилище 116 может находиться по одну сторону брандмауэра с вычислительным(ыми) устройством(ами) 108.
[0030] Удаленное хранилище 118, в общем случае, означает память и/или хранилище данных, удаленное от вычислительного(ых) устройства() 108. Удаленное хранилище 118 может включать в себя хранилище в отдельном месте или в облачном хранилище.
[0031] Как показано, оба вычислительных устройства 108-1, 108-2 может осуществлять доступ к одному и тому же хранилищу 116, 118. В некоторых реализациях этого изобретения пользователь, связанный с одним вычислительным устройством 108-1, может быть авторизован для осуществления доступа к информации, исходящей из второго вычислительного устройства 108-2. Например, в случае, когда каждое вычислительное устройство 108 связано с некоторым соседним зданием, и устройство 102 контроля включает в себя камеру наблюдения, существует возможность для одного здания, находящегося по соседству, загружать и просматривать отснятый материал наблюдения с соседской камеры наблюдения. Конечно, владелец/пользователь соответствующего устройства 108-1, 108-2 должен получить от соседа право на такой доступ.
[0032] Фиг. 2 более подробно демонстрирует вычислительное устройство 108. Как показано, помимо процессора 110 и памяти 112, вычислительное устройство 108 также включает в себя интерфейс 202 связи. Интерфейс 202 связи осуществляет связь с устройствами 102, 108, а также с локальным хранилищем 114 и удаленным хранилищем 116. Интерфейс 202 может включать в себя несколько разных интерфейсов, например, проводные или беспроводные интерфейсы. Кроме того, интерфейс 202 может включать в себя один или более интерфейсов ввода-вывода (I/O), позволяющие вычислительному устройству 108 осуществлять связь с устройствами ввода/вывода, например, устройствами пользовательского ввода, включающими в себя периферийные устройства ввода (например, клавиатуру, мышь, перо, игровой контроллер, устройство речевого ввода, устройство тактильного ввода, устройство жестового ввода и пр.) и/или устройствами вывода, включающими в себя периферийные устройства вывода (например, дисплей, принтер, громкоговорители, тактильный выход и пр.). Интерфейс 202 также может включать в себя один или более сетевых интерфейсов, которые могут представлять, например, контроллеры сетевого интерфейса (NIC) или другие типы приемопередающих устройств для отправки и приема передач по сети.
[0033] Также, как показано на фиг. 2, память 112 включает в себя операционную систему 204, которая сконфигурирована для управления оборудованием и службами, входящими в состав устройства и подключенными к нему в интересах других модулей, компонентов и устройств.
[0034] Память 112 также включает в себя инфраструктуру 114 управления данными. Инфраструктура 114 может включать в себя один или более программных и/или программно-аппаратных модулей и/или API, которые выполняются на процессоре(ах) 110 для реализации различных функций, включающих в себя функции управления данными, и описанных здесь подходов. Модули и/или API проиллюстрированы в виде блоков 206, 208, 210, 212 и 214, хотя это всего лишь пример, и количество блоков может изменяться в сторону увеличения или уменьшения. Функциональные возможности, описанные в связи с блоками 206, 208, 210, 212 и 214, можно объединять для осуществления меньшим количеством модулей и/или API или можно разделять и осуществлять большим количеством модулей и/или API. Хотя модули/API описаны как программное обеспечение и/или программно-аппаратное обеспечение, исполняемое на процессоре, в других примерах, некоторые или все модули можно реализовать полностью или частично посредством оборудования (например, в виде ASIC, специализированного блока обработки и т.д.) для выполнения описанных функций.
[0035] в примере, приведенном на фиг. 2, блок 206, в общем случае, представляет модуль тегирования с логикой для программирования процессора 110 для тегирования потоков данных, принятых от датчика или воспринимающего устройства, например, устройства 102 контроля. Например, теги могут включать в себя текстуальные описания информации в потоке данных. Теги могут быть специфичными для приложения. Например, когда поток данных включает в себя изображения от камеры, например, камеры наблюдения, модуль тегирования может применять один или более тегов, соответствующих объектам в изображении. Например, такие теги, как “автомобиль”, “животное” и/или “человек” могут применяться к тем изображениям в потоке данных, которые включают в себя такие признаки. В некоторых реализациях, модуль тегирования может действовать на устройстве 102 контроля или датчике 104. В таких реализациях, устройство 108 может принимать заранее тегированный поток данных.
[0036] Блок 208, в общем случае, представляет модуль индексирования с логикой для программирования блока 110 обработки для создания индекса тегированного потока данных. Индекс может включать в себя связь между меткой времени на данных и тегами, связанными с объектами в данных. Индекс допускает поиск и может поддерживаться отдельно от потока данных. В одной реализации, поток данных может храниться удаленно, например, в облачном хранилище, хотя индекс располагается локально.
[0037] Блок 210 представляет модуль фрагментации с логикой для программирования процессора 110 для разделения потока данных на множество смежных фрагментов. Каждый фрагмент содержит пары объект/тег для непрерывного времени. Размер фрагментов может конфигурироваться, например, разработчиком приложения. Размер может зависеть от различных факторов, включающих в себя, но без ограничения, размер объектов данных. Фрагменты могут иным образом обрабатываться до сохранения. Например, фрагменты можно сжимать для более эффективного хранения. Фрагменты будут более подробно описаны ниже, в частности, со ссылкой на фиг. 4.
[0038] Блок 212 представляет модуль шифрования с логикой для программирования блока 110 обработки для шифрования фрагментов. В некоторых примерах, фрагменты предназначены для удаленного хранения, и модуль шифрования может шифровать фрагменты до сохранения. Хотя это не показано, модуль шифрования может осуществлять связь с доверенным сервером ключей (не показан) и т.п. для установления схемы для шифрования/дешифрования фрагментов. Иллюстративные схемы будут более подробно рассмотрены ниже.
[0039] Блок 214 представляет модуль пользовательского интерфейса с логикой для программирования блока 110 обработки для предписания отображения одного или более интерфейсов, позволяющих пользователю взаимодействовать с описанными здесь системами. Например, модуль может, совместно с дисплеем или другим пользовательским интерфейсом, обеспечивать интерфейс который позволяет пользователю устанавливать правила в отношении потока данных. Например, через интерфейс, пользователь может задавать размер фрагмента, задавать тип хранилища, подлежащего использованию для фрагментов, или вводить другие свойства или политики в отношении потоков данных.
[0040] В других реализациях, модуль пользовательского интерфейса также может облегчать интерфейс, через который пользователь может запрашивать индекс, например, индекс, созданный вышеописанным модулем индексирования. В некоторой реализация, индекс может быть связан с потоками данных от пользовательских устройств, тогда как в других реализациях индекс может быть связан с потоками данных от других, т.е. не находящихся во владении/эксплуатации пользователя устройств контроля. Например, домовладелец имеет возможность запрашивать индекс отснятого материала наблюдения от других домов по соседству. Конечно, пользователь и соседи получают возможность предоставлять отснятый материал в общий доступ или оставлять его в личном пользовании. Такие возможности можно реализовать посредством управляющих действий, осуществлять которые позволяет модуль пользовательского интерфейса. Кроме того, фрагменты можно шифровать, причем пользователи авторизуются для осуществления доступа к данным, например, посредством получения ключей.
[0041] Хотя модули проиллюстрированы как располагающиеся в памяти 112 вычислительного устройства 108, это не обязательно. Некоторые или все модули могут располагаться не на вычислительном устройстве 108. Например, модуль тегирования или модуль, осуществляющий аналогичную схему тегирования можно реализовать на устройстве 102 контроля таким образом, чтобы поток, выводимый из устройства 102 контроля, уже включал в себя теги. Аналогично, тегирование может осуществляться приложением, действующим между устройством 102 контроля и вычислительным устройством 108. На основании этого изобретения специалисты в данной области техники могут предложить аналогичные модификации.
[0042] Вычислительное устройство 108, как показано, также включает в себя шину 216, которая в ряде случаев может включать в себя одну или более из системной шины, шины данных, адресной шины, шины PCI, шины Mini-PCI и различных других локальных, периферийных и/или независимых шин. Шина 216 может оперативно подключать компьютерно-считываемые носители 112 к блоку(ам) 110 обработки.
[0043] На фиг. 3 показана блок-схема, изображающая иллюстративную архитектуру 300 процессов, которые могут осуществлять инфраструктуру управления данными для облегчения управления данными. В некоторых примерах инфраструктура 114 управления данными будет осуществлять всю обработку. В других реализациях, архитектура 300, полностью или частично может осуществляться на устройстве(ах) 102 или в другом месте.
[0044] Архитектура 300 в общем случае, включает в себя данные 302 датчика, например, принятые от вышеописанных воспринимающих устройств 102. В иллюстративных реализациях, данные 302 датчика являются потоком данных, в котором каждая запись имеет метку времени и одну или более пар тег-значение. Например, поток данных может принимать форму <метка времени, <value1>, [<value2>, …]>. Данные этого типа могут записываться единичной записывающей сущностью, например, устройством 102 контроля, и единичная записывающая сущность может только генерировать новые данные, например, записывающая сущность может не осуществлять обновления или удаления произвольного доступа.
[0045] Архитектура 300 включает в себя тегирование данных 302 датчика на этапе 304. Теги, в общем случае, могут включать в себя информацию о типе данных объекта в потоке данных. Например, для потока данных от камеры наблюдения, теги могут включать в себя “животное”, “человек”, “автомобиль” и пр. В системе анализа данных энергии, теги могут включать в себя “потребление тепла”, “потребление воды” и т.д. Таким образом, теги могут быть специфичными для приложения. Приложение, которое тегирует данные датчика, может выполняться на устройстве 102 контроля, на вычислительном устройстве 108 или где-либо еще.
[0046] На этапе 308, архитектура 300 принимает тегированные данные датчика. В иллюстративных реализациях этого изобретения, поток данных с тегами имеет форму <метка времени, <tag1,value1>, [<tag2, value2>, …]>. Отдельные потоки можно идентифицировать по нескольким разным критериям. Например, потоки можно уникально идентифицировать трехэлементным кортежем: <HomeID, AppID, StreamID>. Как упомянуто выше, архитектура 300 может включать в себя тегирование 304 данных датчика на устройстве 108.
[0047] Архитектура 300 также включает в себя прием информации управления данными на этапе 306. Информация управления данными, в общем случае, включает в себя любую информацию, которая определяет, каким образом манипулировать потоками данных, принятыми от воспринимающих устройств 102. Информация управления данными может определяться программистом, пользователем и/или каким-либо другим человеком или средством.
[0048] В некоторых примерах, информация управления данными может идентифицировать тип потока данных. В некоторых реализациях, тип потока данных может различаться на основании размера значений данных, содержащихся в потоке данных. Например, значения температуры и указания наличия/отсутствия, в общем случае, гораздо меньше, чем потоки изображений и видео. Соответственно, некоторые реализации будут различаться между малыми и большими значениями данных.
[0049] Информация управления данными может, альтернативно или дополнительно, указывать, где сохранять потоки данных. Например, потоки данных, части потоков данных или информация, связанная с потоками данных, (например, индекс, теги и т.д.) могут храниться локально и/или удаленно. Кроме того, некоторые или все данные могут дублироваться.
[0050] Информация управления данными может, альтернативно или дополнительно, указывать, нужно ли защищать данные, например, потоки данных и т.п. Например, данные можно шифровать или оставлять незащищенными. Кроме того, одна или более из многочисленных схем шифрования может указываться информацией управления данными.
[0051] Информация управления данными, дополнительно или альтернативно, может включать в себя информацию о доступе к данным. В одном примере, пользователи могут предоставлять или отменять доступ для считывания потоков данных или связанной с ними информации другим приложениям или пользователям. Например, информация может предписывать, следует ли совместно использовать данные от устройства 102, связанного с одним пользователем, с другими пользователями. Вышеописанная информация управления данными предназначена только для обеспечения примеров. Другие свойства данных могут храниться в информации управления данными.
[0052] На этапе 310, архитектура 300 фрагментирует тегированные данные датчика. Как упомянуто выше, данные содержат поток данных смежных записей объекта, снабженных метками времени. Записи данных могут записываться в журнале для каждого потока, что может обеспечивать эффективные записи путем только присоединения. Используемый здесь термин "фрагмент" сформирован из непрерывной последовательности записей или некоторого отрезка. Согласно аспектам этого изобретения, фрагмент является основной единицей переноса данных для сохранения и извлечения. Например, записывающие сущности данных выгружают фрагменты вместо отдельных записей, и считывающие сущности выбирают фрагменты. Хотя в ряде случаев извлечение фрагмента может быть неэффективным, например, поскольку интерес представляет одна единственная, известная запись, эксперименты демонстрируют, что чаще представляют интерес все записи из временного окна, и фрагмент делает общие запросы с временной локализацией более эффективными.
[0053] На этапе 312, фрагменты можно сжимать и/или шифровать. Инструкции в отношении сжатия и/или шифрования могут содержаться в информации управления данными, принятой на этапе 306. В общем случае, сжатие фрагментов повышает эффективность переноса и хранения. В одной иллюстративной схеме шифрования, секретный ключ, сгенерированный владельцем (т.е. владельцем устройства 102 или устройства 108) используется для шифрования фрагментов. Его также можно использовать для шифрования индекса. В этом примере ленивая отмена используется для снижения вычислительных издержек криптографических операций. Ленивая отмена только препятствует выселенным считывающим сущностям в обращении к будущему контенту, поскольку эти считывающие сущности еще до отмены могли обратиться к контенту и кэшировать его. Также в этом примере, в качестве схемы управления ключами используется регрессия ключей на основе хэширования. Эта схема позволяет владельцу совместного использовать с авторизованными считывающими сущностями только самый недавний ключ, на основании которого считывающие сущности могут вывести все предыдущие ключи для дешифрования контента. Доверенный сервер ключей может использоваться для распространения ключей в этом примере. Таким образом, после открытия потока, все последующие операции считывания и операции записи происходят непосредственно между сервером хранения и приложением. Также в этом примере, владельцы могут генерировать хэш содержимого потока, который может проверяться считывающими сущностями. Свежесть можно проверять путем включения временного окна свежести в состав метаданных потока. Это окно может обозначать время, пока данные можно считать свежими, и такое время может базироваться на периодичности, с которой владельцы предполагают генерировать новые данные. Временное окно может входить в состав информации управления данными, принятой на этапе 306. Владельцы могут периодически обновлять и помечать временное окно, причем считывающие сущности могут проверять открытие потока.
[0054] На этапе 314, архитектура 300 создает индекс фрагментов в потоке. Индекс допускает поиск, например, по времени и/или тегам.
[0055] На этапах 316 и 318, соответственно, сохраняются фрагменты и индекс. В реализациях этого изобретения, фрагменты хранятся удаленно, например, в удаленном хранилище 118, и индекс сохраняется или иным образом доступно локально, например, в локальном хранилище 116. В некоторых реализациях, индекс выбирается из удаленного хранилища, и копия сохраняется локально на считывающих сущностях и записывающих сущностях. Данные, тем не менее, могут располагаться удаленно. Благодаря локальному хранению индекса, запросы локального индекса можно производить в концевых точках. Поскольку идентификацию фрагментов можно производить локально, в удаленном хранилище не требуется вычисления (машины запроса). В этих реализациях, серверы хранения могут обеспечивать только API считывания/записи данных. Это может снижать стоимость системы хранения.
[0056] Кроме того, благодаря отдельному хранению индекса и фрагментов инфраструктура 114 управления данными может ослаблять свои предположения доверенности серверов хранения. Например, благодаря шифрованию фрагментов, некоторые реализации могут поддерживать недоверенных удаленных, например, облачных, поставщиков, не компрометируя конфиденциальности данных. Фрагменты могут шифроваться после выгрузки и дешифроваться после загрузки. Поиски могут осуществляться в удаленном хранилище, но такое размещение, вероятно, потребует, чтобы поставщик хранилища имел больше информации, потенциально снижающей защиту фрагментов.
[0057] Поскольку в некоторых реализациях только записанные данные являются новые данные, присоединенные к существующему потоку, потоки могут становиться весьма большими. Вышеописанные подходы фрагментации и хранения поддерживают архивацию смежного участка потока в сегменты, все еще позволяя эффективное запрашивание. Место хранения каждого фрагмента может быть сконфигурировано так, чтобы можно было сохранять данные в одном и том же потоке между разными поставщики хранения. Поэтому, в различных реализациях этого изобретения, потоки могут храниться локально, удаленно на недоверенных серверах, дублироваться для надежности и/или распределяться по множественным поставщикам хранения для эффективности расходов. Приложения, использующие инфраструктуру, имеют возможность отдавать предпочтение требованиям хранилища в отношении пространства, производительности, стоимости и надежности.
[0058] На фиг. 4 показана блок-схема, изображающая иллюстративную архитектуру 400 процессов, которые могут осуществлять инфраструктуру управления данными для облегчения извлечения данных в инфраструктуре управления данными. В некоторых примерах инфраструктура 114 управления данными будет осуществлять всю обработку. В других реализациях, архитектура 300, полностью или частично может осуществляться на устройстве(ах) 102 или в другом месте.
[0059] На этапе 402, архитектура 400 принимает запрос индекса. В некоторых примерах, производится запрос локального индекса, например, индекса, созданного на этапе 314. Альтернативно или дополнительно, может производиться запрос множественных индексов. Индексы могут относиться к потокам от любого количества устройств 102 контроля, включающим в себя, предполагая надлежащую авторизацию, потоки, связанные с устройствами, связанными с пользователем, отличным от запрашивающего пользователя. Не показанным предшественником этапа 402 может быть локальный прием индекса. Например, если индекс или более новая версия индекса сохраняется удаленно. В других реализациях, один индекс может включать в себя информацию обо всех потоках данных от всех датчиков, и осуществляется поиск по этому индексу.
[0060] Индекс может включать в себя, по меньшей мере, временную и теговую информацию об индексированных данных. Соответственно, запрос может запрашивать записи из определенного периода времени или записи, тегированные определенными тегами, или те и другие. Индекс также может хранить дополнительную информацию, которую можно искать посредством запроса.
[0061] На этапе 404 архитектура 400 определяет фрагмент или фрагменты, которые содержат информацию, удовлетворяющую запросу. В некоторых примерах, в ответ на запрос не осуществляется поиск отдельных записей. Вместо этого, фрагменты, которые содержат множественные записи, возвращаются. Вследствие характера фрагментов, определенный фрагмент может содержать одну или более записей, которые не совпадают с поисковым запросом, помимо записей, которые удовлетворяют запросу.
[0062] На этапе 406, архитектура 400 запрашивает один или более фрагментов, определенных на этапе 404, для включения записей, удовлетворяющих запросу, сделанному на этапе 402. В некоторых примерах, фрагменты хранятся удаленно, например, в облачной системе хранения, и, таким образом, фрагменты запрашиваются из удаленной системы хранения. В других реализациях, фрагмент(ы) может(гут) иным образом извлекаться из хранилища.
[0063] На этапе 408, запрашиваемые фрагменты принимаются архитектурой 400, и, при необходимости, фрагменты дешифруются на этапе 410. Как рассмотрено выше, шифрование фрагментов позволяет ослаблять стандарты защиты в удаленном хранилище, в частности когда индекс сохраняется, и все запросы осуществляются локально.
[0064] Иллюстративные реализации архитектур 300, 400 могут осуществляться с использованием множества потоковых API. Такие потоковые API согласно одной реализации включают в себя:
Функция
Описание
createStream(name,R/W,policy)
Создать поток данных с указанными свойствами политики (например, типом, местом хранения, особенностями защиты, правилами совместного использования потока)
openStream(name,R/W)
Открыть существующий поток данных
deleteStream(name)
Удалить существующий поток данных
append([tag,value])
Присоединить список значений с соответствующими тегами. Все получают одну и ту же метку времени
append([tag],value)
Присоединить данные, помеченные потенциально множественными тегами
getLatest()
Извлечь самый поздний кортеж <time,tag,value>, вставленный по всем тегам
get(tag)
Извлечь самый поздний кортеж <time,tag,value>, вставленный для указанного тега
getAll(tag)
Извлечь все отсортированные по времени кортежи <time,tag,value> для указанного тега
getAll(tag,t<sub>start</sub>,t<sub>end</sub>)
Запрос диапазона: получить все кортежи для тега в указанном временном диапазоне
getAll(tag,t<sub>start</sub>,t<sub>end</sub>,t<sub>skip</sub>)
Запрос диапазона дискретизации
getKeys(tag<sub>start</sub>,tag<sub>end</sub>)
Извлечь все теги в указанном временном диапазоне
sealStream()
Изолировать текущий сегмент потока и создать новый для будущих присоединений
getAllSegmentIDs()
Извлечь список всех сегментов в потоке
deleteSegment(segmentID)
Удалить указанный сегмент в текущем потоке
grant(appID)
Предоставить доступ для считывания appID
revoke(appID)
Отменить доступ для считывания appId
создания
открытия
ValueStream
FileStream
ValueStream
FileStream
[0065] В этой иллюстративной реализации, приложения идентифицируются парой <HomeID, AppID>, и являются принципалами, которые считывают или записывают. Приложение может храниться и/или выполняться, например, на устройстве 108. В этом примере, после и , приложение указывает политики, которые могут включать в себя тип, место хранения, и требования к защите и совместному использованию потока. В других примерах, дополнительные или другие политики также могут быть указаны приложением. Кроме того, хотя примеры описывают приложение, указывающее политики, политики может указывать пользователь, например владелец. В этом примере, может указываться два типа потоков:  или . В этой реализации,  полезен для малых значений данных, например показаний температуры, и  полезен для больших значений, например, изображений или видеозаписей. Два потока могут храниться по-разному.
append
предоставлять
отменять
[0066] В этой иллюстративной реализации, каждый поток имеет одну записывающую сущность (например, владельца) и одну или более считывающих сущностей. Записывающие сущности добавляют записи время-тег-значение в поток с использованием . Записи могут иметь множественные пары тег-значение и множественные теги для значения. Теги и значения являются типами, заданными приложением, которые, в иллюстративной реализации, реализуют интерфейсы IKey и IValue, позволяющие осуществлять хэширование, сравнение и/или преобразование в последовательную форму. Также в этой реализации, записывающие сущности могут  и  доступ для считывания другим приложениям. Считывающие сущности могут фильтровать и запрашивать данные с использованием тегов и времени (get*). API, перечисленные и описанные выше, поддерживают запрашивание самой поздней записи, самой поздней записи для тега, запросы временного диапазона и дискретизации и запросы диапазона на тегах. В этой инфраструктуре, запросы диапазона возвращают итератор, который выбирает данные по требованию, при осуществлении доступа.
ts
[0067] В этой иллюстративной реализации, владелец сначала создает новый поток данных и присоединяет к нему записи данных. Фиг. 5 демонстрирует конфигурацию 500 данных для потока. Этот поток включает в себя данные изображения, относящиеся к ValueStream для информации от камеры наблюдения, например, камеры охранной системы, которая может быть установлена вне дома или другого строения. Как показано, 500 включает в себя журнал записей 502 данных и индекс 504, который отображает тег 506 в список идентификаторов 508 элементов данных. В этом примере, идентификаторы 508 элементов представляют собой записи фиксированного размера, и список идентификаторов элементов в индексе сортируется по времени (например, меткам времени, ). Это размещение может обеспечивать эффективные двоичные поиски запросов диапазона и дискретизации. В иллюстративном размещении, индекс располагается в памяти и может дублироваться файлом. Записи в журнале 502 могут сохраняться на диске, например, удаленно, и извлекаться при обращении из приложения. Журнал 502 делится на фрагменты 510 из смежных записей 512 данных. Фрагменты 510 могут иметь фиксированный размер.
index
изолируется
tresh
[0068] Для снижения объема памяти, необходимой для индекса, который может расти с течением времени, потоки можно архивировать. В некоторых примерах, поток сегментируется, и каждый сегмент имеет свой собственный журнал и соответствующий индекс. Таким образом, поток можно рассматривать как упорядоченный по времени список сегментов. В этом примере, если размер индекса в памяти превышает установленный порог (), самый поздний сегмент , его индекс сливается на диск, и создается новый сегмент с индексом, присутствующим в памяти. В этой инфраструктуре, операции записи в поток переходят к самому позднему сегменту, и все остальные сегменты потока являются объектами только для считывания. Индекс для самого позднего сегмента потока может располагаться в памяти и дублироваться файлом, например, хранящимся удаленно.
ts
[0069] Конфигурация сегмента, который был изолирован, представлена на фиг. 6. Фиг. 6 аналогична фиг. 5, за исключением того, что для локального хранения был создан компактный индекс 602. Компактный индекс 602 включает в себя теги 506, и для каждого тега, метку времени () для первого и последнего идентификатора в соответствующем списке идентификаторов элементов, а также положение этого списка в индексе. В этом примере, индекс 504 также может храниться на диске, при этом компактный индекс хранится локально. В некоторых реализациях, индекс также может храниться удаленно, но выбираться локально для локальных запросов.
K
con
[0070] Теперь опишем выгрузку данных потока согласно примеру. В описанном примере, каждый принципал (например, пара <HomeID, AppID>) может быть связан с парой секретного-открытого ключа, и каждый поток может шифроваться секретным ключом, . Секретный ключ может генерироваться владельцем. Когда поток синхронизируется или закрывается, инфраструктура может сливать индекс на диск, фрагментировать журнал сегментов, сжимать и шифровать фрагменты, и генерировать список фрагментов, в данном случае, ChunkList. ChunkList представляет собой, для каждого сегмента, упорядоченный список всех фрагментов в сегменте и их соответствующих хэшей (показанных как хэш(фрагмент #1), хэш(фрагмент #2), и т.д. на фиг. 6. Эти функции, предпочтительно, осуществляются на всех новых сегментах, которые могут быть модифицированы благодаря присоединениям данных.
MD
n
MD
int
int
[0071] В примере, инфраструктура генерирует метаданные целостности потока () для выгрузки с данными потоками. Если обозначить  количество сегментов в потоке,  вычисляется согласно следующему уравнению (1):
(1)
MD
MD
f
f
int
int
[0072] Поставщик TTL гарантирует свежесть данных, и, таким образом, может гарантировать, что данные, выбираемые с сервера хранения, не старше, чем конфигурируемый период согласованности, указанный записывающей сущностью, и не старше любых ранее извлеченных данных. представляет собой знаковый хэш длительности, в течение которой владелец гарантирует свежесть данных (TTL), и хэши посегментного индекса и ChunkList. Фрагменты, обновленный ChunkList и модифицированный индекс могут выгружаться на сервер хранения. После этого может выгружаться . Затем метаданные потока могут выгружаться на сервер метаданных. Сервер метаданных может быть доверенным сервером ключей для предотвращения неавторизованных обновлений. Сервер метаданных/ключей может распространять ключи и метаданные потока. В других реализациях, информация для сохранения на сервере метаданных может дублироваться на 2+1 серверах, чтобы выдерживать до  злонамеренных серверов. Альтернативно, можно применять систему византийского кворума.
K
MD
K
con
int
con
[0073] При использовании, сервер метаданных/ключей может поддерживать отображения принципала в открытый ключ, а также симметричный ключ контента для шифрования и дешифрования данных (), принципалов, имеющих доступ к данным (в том числе, владельца), положение  и положение каждого сегмента и версию ключа.  может шифроваться для хранения, с одной записью для каждого принципала, который имеет доступ к потоку с использованием своего открытого ключа.
K
con
[0074] Для предоставления приложению доступа для считывания, в одной реализации, владелец обновляет метаданные потока посредством , зашифрованного открытым ключом считывающей сущности. Отказ в доступе для считывания также предусматривает обновление метаданных потока, с использованием вышеописанных API. В одной реализации, владелец удаляет надлежащий принципал из списка аксессора, удаляет ключи зашифрованного контента, и накатывает ключ контента и версию ключа для всех действительных принципалов. В этом примере, все фрагменты в сегменте шифруются с использованием одной и той же версии ключа контента.
MD
MD
MD
int
int
int
[0075] Для считывания данных потока из фрагмента, инфраструктура может открывать поток и выбирать метаданные потока. С использованием этой информации, затем можно выбирать метаданные  целостности потока, например, из недоверенного хранилища. Метаданные целостности можно проверять с использованием открытого ключа владельца, и свежесть можно проверять с использованием TTL в . Затем считывающая сущность выбирает индекс и ChunkList для каждого сегмента потока и проверяет его целостность с использованием .
[0076] Владелец может сохранять новые записи данных в потоке по завершении проверки целостности данных индекса. Для считывающих сущностей, после проверки целостности индекса и ChunkList для всех сегментов, индекс используется для идентификации фрагментов, которые следует выбирать. Как описано выше, в этом примере целостность на уровне фрагментов проверяется лениво, например, путем загрузки фрагментов и проверки их целостности с использованием ChunkList сегмента. Проверенный фрагмент можно дешифровать и/или снимать его сжатие в этом примере, и фрагменты могут храниться локально, например, в кэш-памяти, для последующих операций считывания. Как упомянуто выше, извлеченный(е) фрагмент(ы) могут иметь информацию, дополнительную к информации, фактически запрашиваемой посредством запроса. В частности, каждый фрагмент может иметь множество записей, некоторые из которых удовлетворяют запросу, и некоторые из которых может не удовлетворять запросу. Таким образом, когда фрагменты хранятся в кэш-памяти, впоследствии, разные запросы также могут удовлетворяться кэшированными фрагментами, приводя к более эффективному извлечению запрашиваемой информации.
[0077] Иллюстративная система, например, описанная выше, может быть реализована с использованием C# на инфраструктуре.NET v4.5. Иллюстративная реализация может интегрироваться в платформу HomeOS, хотя ее также можно использовать как независимую библиотеку. Библиотека клиента может использовать Protocol Buffers для преобразования данных в последовательную форму и имеет возможность использовать Windows Azure and Amazon S3 для удаленного хранения. Реализация может использовать соответствующие библиотеки для удаленного считывания и записи данных. На некоторых типах удаленного хранилища, каждый сегмент может отображаться в контейнер, индекс и журнал данных отображались в блоб, и отдельные фрагменты отображались в части блоба, содержащие журнал данных. На других типах удаленного хранилища, каждый сегмент отображался в область памяти, индекс отображался в объект, и фрагменты журнала отображались в отдельные объекты.
Примерные пункты
[0078] A: Способ, содержащий: прием, от множества устройств, поток данных временного ряда, содержащий множество записей и временную идентификацию, связанную с каждой из записей; связывание одного или более тегов с отдельными из записей; фрагментацию потока на множество смежных фрагментов, причем каждый из смежных фрагментов включает в себя множество записей; создание индекса, связывающий временную идентификацию и один или более тегов; передачу каждого из фрагментов в первое, удаленное место хранения; и сохранение индекса во втором, локальном месте хранения.
[0079] B: Способ по п. A, в котором множество устройств связано с первым физическим местом, связанным с первым пользователем, и дополнительно содержащий: прием запроса индекса; определение одной или более записей, удовлетворяющих запросу; и извлечение из первого, удаленного места хранения одного или более фрагментов, содержащих одну или более записей, удовлетворяющих запросу.
[0080] C: Способ по любому из пп. A или B, в котором запрос включает в себя, по меньшей мере, одно из временного требования или теговой идентификации.
[0081] D: Способ по любому из пп. A-C, в котором извлеченные фрагменты включают в себя записи, дополнительные к одной или более записям, удовлетворяющим запросу.
[0082] E: Способ по любому из пп. A-D, дополнительно содержащий предписание представления пользовательского интерфейса, через который пользователь может запрашивать индекс, причем прием запроса индекса основан на взаимодействии пользователя с пользовательским интерфейсом.
[0083] F: Способ по любому из пп. B-E, в котором первое физическое место представляет собой первое здание, множество устройств представляет собой устройства наблюдения в первом здании, и второе физическое место представляет собой второе здание.
[0084] G: Способ по любому из пп. A-F, в котором индекс не содержит записей.
[0085] H: Компьютерно-считываемый носитель, на котором хранятся компьютерно-исполняемые инструкции, причем компьютерно-исполняемые инструкции предписывают компьютеру осуществлять способ по любому из пп. A-G.
[0086] I: Устройство, содержащее: компьютерно-считываемые носители, на которых хранятся компьютерно-исполняемые инструкции, предписывающие компьютеру осуществлять способ по любому из пп. A-G, причем блок обработки выполнен с возможностью выполнения инструкций для осуществления способа по любому из пп. A-G.
[0087] J: Система, содержащая: одно или более вычислительных устройств, коммуникативно подключенных к одному или более устройствам контроля, причем каждое из устройств контроля имеет один или более датчиков, причем одно или более вычислительных устройств включают в себя: интерфейс связи для приема потоков записей данных от датчиков, модуль тегирования для связывания одного или более тегов с объектами в записях данных для создания тегированных записей данных, модуль индексирования для создания доступного для поиска индекса, содержащего связи между тегами и метками времени в тегированных записях данных, и модуль фрагментации для разделения тегированных записей данных на множество смежных фрагментов, причем каждый фрагмент содержит множество тегированных записей данных.
[0088] K: Система по п. J, дополнительно содержащая интерфейс запросов, коммуникативно подключенный к одному или более вычислительных устройств, через который запрашивается доступный для поиска индекс.
[0089] L: Система по п. J или п. K, дополнительно содержащая: первое хранилище, коммуникативно подключенное к одному или более вычислительным устройствам для хранения множества фрагментов; и второе хранилище, коммуникативно подключенное к одному или более вычислительным устройствам для хранения доступного для поиска индекса.
[0090] M: Устройство по любому из пп. J-L, в котором одно или более вычислительных устройств дополнительно включают в себя модуль шифрования для шифрования фрагментов.
[0091] N: Один или более компьютерно-считываемых носителей имеющий, на которых хранятся компьютерно-исполняемые инструкции, причем компьютерно-исполняемые инструкции, при исполнении, предписывают компьютеру осуществлять операции, содержащие: прием потока данных временного ряда от устройства наблюдения, наблюдающего первое место, связанное с первым пользователем, причем данные временного ряда включают в себя одну или более записей, воспринятых устройством наблюдения, и одну или более меток времени для отдельных одной или более записей; сохранение, на запоминающем устройстве, локальном по отношению к первому месту, индекса, который связывает отдельные одну или более меток времени с одним или более тегами, причем каждый из тегов идентифицирует один или более признаков одного или более объектов, предписание сохранения, по меньшей мере, части потока данных временного ряда на удаленном запоминающем устройстве; прием запроса индекса от второго пользователя, связанного со вторым местом, отличным от первого места; идентифицирующее, в ответ на запрос, один или более сегментов данных временного ряда, которые удовлетворяют запросу; и извлечение одного или более сегментов данных временного ряда, которые удовлетворяют запросу, из удаленного запоминающего устройства.
[0092] O: Носители по п. N, в которых устройство наблюдения содержит камеру, и записи содержат изображения, захваченные камерой.
[0093] P: Носители по п. N или O, в которых теги являются текстуальными идентификаторами объектов в изображениях, захваченных камерой.
[0094] Q: Носители по п. N, в которых устройство наблюдения содержит, по меньшей мере, один из термометра, детектора близости или счетчика учета потребления.
[0095] R: Носители по любому из пп. N-Q, в которых тег принимается с потоком данных временного ряда.
[0096] S: Носители по любому из пп. N-R, в которых предписание сохранения, по меньшей мере, части потока включает в себя фрагментацию потока и передачу фрагментов на запоминающее устройство.
[0097] T: Носители по п. S, дополнительно содержащие сжатие фрагментов.
[0098] U: Носители по п. S или п. T, дополнительно содержащие шифрование фрагментов.
[0099] V: Носители по любому из пп. S-U, в которых индекс содержит индекс фрагментов.
Заключение
[00100] Хотя подходы были описаны в отношении структурных признаков и/или этапов способа, следует понимать, что нижеследующая формула изобретения не обязательно ограничивается описанными признаками или этапами. Напротив, признаки и этапы описаны как иллюстративные реализации таких подходов.
[00101] Операции иллюстративных процессов проиллюстрированы в виде отдельных блоков и кратко описаны со ссылкой на эти блоки. Процессы проиллюстрированы как логические последовательности блоков, каждый блок которых может представлять одну или более операций, которые можно реализовать в оборудовании, программном обеспечении или их комбинации. В отношении программного обеспечения, операции представляют компьютерно-исполняемые инструкции, хранящиеся на одном или более компьютерно-считываемых носителей, которые, при выполнении одним или более процессорами, позволяют одному или более процессорам осуществлять упомянутые операции. В общем случае, компьютерно-исполняемые инструкции включают в себя процедуры, программы, объекты, модули, компоненты, структуры данных и пр., которые осуществляют конкретные функции или реализуют определенные абстрактные типы данных. Порядок, в котором описаны операции, не следует рассматривать как ограничение, и любое количество описанных операций может выполняться в любом порядке, объединяться в любом порядке, подразделяться на множественные подоперации и/или выполняться параллельно для реализации описанных процессов. Описанные процессы могут осуществляться посредством ресурсов, связанных с один или более устройствами 102 и/или 108, например, одним или более внутренними или внешними CPU или GPU, и/или одним или более фрагментами аппаратной логики, например, FPGA, DSP или другими типами ускорителей.
[00102] Все вышеописанные способы и процессы можно реализовать в, и полностью автоматизировать посредством, программных модулей, выполняемых одним или более компьютеров или процессоров общего назначения. Кодовые модули могут храниться в любом типе компьютерно-считываемого носителя данных или другого компьютерного запоминающего устройства. Некоторые или все способы альтернативно можно реализовать в специализированном компьютерном оборудовании.
[00103] Условные выражения, например, в том числе, "может", "могут", "мог" или "могли", если прямо не указано обратное, следует понимать в контексте для представления, что определенные примеры включают в себя, хотя другие примеры не включают в себя, определенные признаки, элементы и/или этапы. Таким образом, такие условные выражения, в общем случае, не подразумевают, что определенные признаки, элементы и/или этапы необходимы для одного или более примеров, или что один или более примеров обязательно включают в себя логику для принятия решения, с пользовательским вводом или приглашением или без него, включены ли или подлежат ли осуществлению определенные признаки, элементы и/или этапы в любом конкретном примере. Связующие слова, например, выражение “по меньшей мере, один из X, Y или Z”, если конкретно не указано обратное, следует понимать как представляющие, что элемент, термин и т.д. может быть любым из X, Y или Z, или их комбинацией или подкомбинацией.
[00104] Любые описания процедуры, элементы или блоки в блок-схемах операций, описанный здесь и/или изображенных в присоединенных фигурах следует понимать как потенциально представляющие модули, сегменты или участки кода, которые включают в себя одну или более исполнимых инструкций для реализации конкретных логических функций или элементов в процедуре. Альтернативные реализации включены в объем описанных здесь примеров, в которых элементы или функции могут быть удалены, или выполняться в порядке, отличном от показанного или рассмотренного, в том числе, по существу, одновременно или в обратном порядке, в зависимости от предусмотренных функциональных возможностей, что понятно специалистам в данной области техники. Следует подчеркнуть, что можно предложить многие вариации и модификации вышеописанных примеров, элементы которых следует рассматривать как включенные в другие приемлемые примеры. Все подобные модификации и вариации подлежат включению в данном случае в объем этого изобретения и защищены нижеследующей формулой изобретения.