RU2586010C2 - Способ и устройство для сохранения данных с использованием хэширования - Google Patents
Способ и устройство для сохранения данных с использованием хэширования Download PDFInfo
- Publication number
- RU2586010C2 RU2586010C2 RU2013114990/08A RU2013114990A RU2586010C2 RU 2586010 C2 RU2586010 C2 RU 2586010C2 RU 2013114990/08 A RU2013114990/08 A RU 2013114990/08A RU 2013114990 A RU2013114990 A RU 2013114990A RU 2586010 C2 RU2586010 C2 RU 2586010C2
- Authority
- RU
- Russia
- Prior art keywords
- data
- key value
- stored
- module
- hash table
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9014—Indexing; Data structures therefor; Storage structures hash tables
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
Изобретение относится к вычислительной технике. Технический результат заключается в улучшении эффективности сохранения данных. Способ сохранения данных с использованием хэширования включает предварительное конфигурирование базовых модулей хранения в количестве L и задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, причем L представляет собой натуральное число больше 1; вычисление ключевого значения данных, сохраняемых с использованием хэширования; осуществление операции модуля по L над полученным ключевым значением и, используя задающее соотношение между идентификаторами базовых модулей хранения и операцией модуля по L, вывод ключевого значения в операции модуля по L и соответствующих данных в базовый модуль хранения с соответствующим идентификатором базового модуля хранения; определение того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, и сохранение подлежащих сохранению данных и соответствующего ключевого значения. 2 н. и 9 з.п. ф-лы, 7 ил.
Description
По настоящей заявке испрашивается приоритет по китайской патентной заявке №201010281747.0, поданной 13 сентября 2010 г. и озаглавленной «Способ и устройство для сохранения данных с использованием хэширования», все содержание которой включено в настоящий документ посредством ссылки.
Область техники, к которой относится изобретение
Настоящее изобретение в основном относится к области сохранения данных, и, более конкретно, к способу и устройству для сохранения данных с использованием хэширования.
Уровень техники
Инструменты мгновенных сообщений (IM, Instant Messaging) имеют низкий технический порог для пользователей, и пользователи могут мгновенно выражать свои чувства несколькими высказываниями и делиться информацией с другими пользователями и друзьями. Соответственно, эффективность передачи информации с помощью IM относительно высока, и такие приложения становятся все более широко распространены.
Теоретически, список контактов или друзей существующего пользователя IM не имеет предела. Используя разнообразное программное обеспечение на клиентской стороне, пользователь может получать публикуемые или рассылаемые сообщения от членов контактного листа в режиме реального времени. Следовательно, количество данных, соответствующих принятым сообщения, весьма велико. То, каким образом эффективно сохранять принимаемые данные сообщений и быстро обращаться к сохраненным данным, находится среди технических проблем, которые нужно решить в ходе развития технологии IM.
В существующих технологиях IM-клиент часто использует алгоритмы хэширования и использует таблицы хэширования (хэш-таблицы) для достижения быстрого сохранения данных. В целом, алгоритмы хэширования включают в себя следующие: Redundancy Check 32 (CRC32), Message-Digest Algorithm 5 (MD5) и Secure Hash Algorithm (SHA). Алгоритмы хэширования могут быть использованы для конвертации строки данных в число для формирования ключевого значения (ключа), а ключевое значение может быть использовано в операции модуля (modulo) по большому простому числу M так, что данные могут быть равномерно распределены по таблице хэширования с размером M.
На фиг.1 показан существующий способ сохранения данных с использованием хэширования. Как показано на фиг.1, алгоритм хэширования, например MD5, используется для превращения данных в числовую форму и для формирования ключевого значения в качестве первых 8 байт превращенных в числовую форму данных, и затем ключевое значение используется для осуществления операции модуля по предварительно заданному большому простому числу M. Далее, данные и их соответствующее ключевое значение сохраняются в таблице хэширования, отображенные в соответствии с остатком операции модуля. Простое число M может быть определено в соответствии с фактическими потребностями и ключевыми значениями, получаемыми путем хэширования данных.
Когда хэширование разных данных формирует одинаковые ключевые значения, происходит конфликт (коллизия) ключей, и все данные с одинаковыми ключевыми значениями организуются в качестве связанного списка в таблице хэширования. Как показано на фиг.1, для данные 100 ~ данные 102 ключевые значения по модулю M имеют одинаковое значение 10; для данные 110 ~ данные 113 ключевые значения по модулю M имеют одинаковое значение 11, и эти элементы данных сохраняются в соответствующем связанном списке.
Когда пользователю необходимо обратиться к сохраненным данным, данные, к которым нужно обратиться, сначала обрабатываются алгоритмом хэширования с целью формирования ключевого значения, и затем может быть определено положение сохраненных данных в таблице хэширования с использованием операции модуля по простому числу M. После этого ищется связанный список в этом положении. Если данные, сохраненные в связанном списке, совпадают с данными, к которым нужно обратиться, данные получают в качестве соответствующих ключевому значению, и соответствующая информация возвращается пользователю.
Следовательно, поскольку все данные сохраняются в одной таблице хэширования, требуемый объем памяти для хранения велик, и велики требования к оборудованию для хранения. В то же время для данных, имеющих конфликтующие ключевые значения при сохранении, таблица хэширования сохраняет эти данные в форме связанных списков, причем каждый элемент данных имеет одно и то же ключевое значение, что вызывает трудности для последующих операций запроса и считывания. С другой стороны, для данных, для которых ключевые значения не конфликтуют, по-прежнему необходимо резервировать в таблице хэширования объемы памяти для обработки конфликтующих ключей, и таблица хэширования на основе простого числа M требует просмотра для обеспечения того, что до сохранения данных отсутствовали идентичные данные, что снижает эффективность сохранения. Кроме того, для неконфликтующих данных, сохраненных в таблице хэширования, сложность запроса (эффективность) связана с простым числом M, используемым в таблице хэширования, тогда как для конфликтующих данных сложность запроса равна O(n), где n - количество элементов данных, сохраненных в связанном списке. Например, для обращения к данным «данные 111» на фиг.1 сначала получают ключевое значение для «данные 111», затем вычисляют Ключ % M для получения положения остатка, т.е. положения индекса, как показано в положении 11 на фиг.1. Далее просматривают связанный список в положении индекса до тех пор, пока данные, к которым нужно обратиться, не совпадут с данными 111, расположенными в таблице хэширования. Сохраненные данные 111 затем возвращаются пользователю. Таким образом, скорость такого доступа к данным мала, сложность доступа к данным высока, и эффективность запроса низка.
Раскрытие изобретения
Следовательно, основные задачи настоящего изобретения включают в себя предоставление способа сохранения данных с использованием хэширования для снижения требований к устройствам хранения и для улучшения эффективности сохранения.
Другие задачи настоящего изобретения включают в себя предоставление устройства сохранения данных с использованием хэширования для снижения требований к устройствам хранения и для улучшения эффективности сохранения.
Для достижения вышеуказанных задач настоящее изобретение представляет способ с использованием хэширования.
Способ включает в себя:
предварительное конфигурирование базовых модулей хранения в количестве L и задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, причем L представляет собой натуральное число больше 1;
вычисление ключевого значения данных, сохраняемых с использованием хэширования;
осуществление операции модуля по L над полученным ключевым значением и, используя задающее соотношение между идентификаторами базовых модулей хранения и операцией модуля по L, вывод ключевого значения в операции модуля по L и соответствующих данных в базовый модуль хранения с соответствующим идентификатором базового модуля хранения;
определение того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, и сохранение подлежащих сохранению данных и соответствующего ключевого значения.
При этом определение того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, и сохранение подлежащих сохранению данных и соответствующего ключевого значения дополнительно включает:
последовательное определение того, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным; в случае, когда такое ключевое значение отсутствует, сохранение ключевого значения и соответствующих данных в таблице хэширования; а в случае, когда такое ключевое значение имеется, сравнение данных, сохраненных в таблице хэширования, с данными, соответствующими ключевому значению;
определение того, что данные, сохраненные в таблице хэширования, не совпадают с данными, соответствующими ключевому значению; установка флага конфликта для данных, сохраненных в таблице хэширования; и добавление предварительно заданного шагового значения к ключевому значению; и
определение того, что количество добавлений шагового значения не превышает предварительно заданное пороговое значение; и повтор шага последовательного определения того, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным.
При этом после умножения предварительно заданного шагового значения на количество добавлений и осуществления операции модуля над результатом умножения на количество базовых модулей хранения остаток операции модуля равен 0.
В способе количество базовых модулей хранения изменяется каждый раз путем удвоения.
Способ дополнительно может включать:
получение ключевого значения, соответствующего запросу обращения, на основе запроса обращения;
осуществление операции модуля над полученным ключевым значением по количеству базовых модулей хранения, и, на основе задающего соотношения между идентификаторами базовых модулей хранения и операции модуля по L, получение базового модуля хранения, соответствующего ключевому значению; и
осуществление поиска в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться.
В способе получения ключевого значения, соответствующего запросу обращения, может дополнительно включать:
получение запроса обращения;
определение того, содержит ли запрос обращения данные или идентифицированное ключевое значение;
когда запрос обращения содержит данные, вычисление ключевого значения, соответствующего данным обращения; и использование ключевого значения в качестве ключевого значения, соответствующего запросу обращения; а
когда запрос обращения содержит идентифицируемое ключевое значение, использование идентифицированного ключевого значения в качестве ключа, соответствующего запросу обращения.
Когда запрос обращения содержит данные, поиск в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться, дополнительно может включать:
осуществление поиска в таблице хэширования с целью определения того, что таблица хэширования содержит ключевое значение, соответствующее данным обращения;
определение, имеют ли сохраненные данные, соответствующие ключевому значению, установленный флаг конфликта; когда сохраненные данные не имеют флаг конфликта, возврат сообщения об успешном обращении, содержащего сохраненные данные, соответствующие ключевому значению; а когда сохраненные данные имеют установленный флаг конфликта, добавление предварительно заданного шагового значения к ключевому значению, соответствующему данным обращения;
определение того, что количество добавлений предварительно заданного шагового значения не превышает предварительно заданное пороговое значение; и повтор шага поиска в таблице хэширования с целью определения того, что таблица хэширования содержит ключевое значение, соответствующее данным обращения.
При этом, когда запрос обращения содержит данные, поиск в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться, дополнительно может включать:
осуществление поиска для определения того, содержит ли таблица хэширования идентифицированное ключевое значение; и
когда таблица хэширования содержит идентифицированное ключевое значение, возврат сообщения об успешном обращении, содержащего сохраненные данные, соответствующие идентифицированному ключевому значению.
Предложенное устройство для сохранения данных с использованием хэширования содержит
множество базовых модулей хранения; модуль хранения задающего соотношения, модуль вычисления ключевого значения и блок операции модуля, причем:
модуль хранения задающего соотношения выполнен с возможностью сохранения задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, где L представляет собой количество базовых модулей хранения;
модуль вычисления ключевого значения выполнен с возможностью вычисления ключевого значения подлежащих сохранению данных с использованием алгоритма хэширования и вывода ключевого значения в блок операции модуля;
блок операции модуля выполнен с возможностью осуществления операции модуля над полученным ключевым значением по количеству базовых модулей хранения, с возможностью получения из модуля хранения задающего соотношения и на основе остатка операции модуля идентификатора базового модуля хранения, заданного остатком операции модуля, и с возможностью вывода ключевого значения в операции модуля и соответствующих данных в базовый модуль хранения с соответствующим идентификатором; и
базовый модуль хранения выполнен с возможностью определения того, что предварительно сконфигурированная таблица хэширования не содержит подлежащих сохранению данных и последующего сохранения подлежащих сохранению данных и соответствующего ключевого значения.
При этом базовый модуль хранения может содержать оперативное запоминающее устройство, флеш-память, стираемое и перезаписываемое запоминающее устройство или жесткие диски.
Базовый модуль хранения содержит блок поиска ключевого значения, блок хранения таблицы хэширования, блок сравнения данных и блок обработки конфликтов ключей, причем
блок поиска ключевого значения выполнен с возможностью последовательного определения того, хранит ли таблица хэширования ключевое значение, соответствующее подлежащим сохранению данным; с возможностью вывода ключевого значения и соответствующих данных в блок хранения таблицы хэширования для сохранения, когда таблица хэширования не хранит ключевое значение, соответствующее подлежащим сохранению данным; и с возможностью вывода ключевого значения и соответствующих данных в блок сравнения данных, когда таблица хэширования хранит ключевое значение, соответствующее подлежащим сохранению данным;
блок сравнения данных выполнен с возможностью сравнения полученных данных с данными, сохраненными в таблице хэширования; с возможностью отказа от дальнейшей обработки, когда полученные данные совпадают с данными, сохраненными в таблице хэширования; и с возможностью установки флага конфликта для сохраненных данных и вывода ключевого значения в блок обработки конфликтов ключей, когда полученные данные не совпадают с данными, сохраненными в таблице хэширования; и
блок обработки конфликтов ключей выполнен с возможностью добавления предварительно заданного шагового значения к полученному ключевому значению и определения того, превышает ли количество добавлений предварительно заданного шагового значения к ключевому значению предварительно заданное пороговое значение; с возможностью отказа от дальнейшей обработки, когда количество добавлений превышает предварительно заданное пороговое значение; и с возможностью вывода ключевого значения с добавленным шаговым значением в блок поиска ключевого значения, когда количество добавлений не превышает предварительно заданное пороговое значение.
Как можно понять из вышеприведенного технического решения, настоящее изобретение обеспечивает способ и устройство для сохранения данных с использованием хэширования путем предварительного конфигурирования базовых модулей хранения в количестве L и задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L; вычисления ключевого значения данных, сохраняемых с использованием хэширования, осуществления операции модуля по L над полученным ключевым значением и, используя задающее соотношение между идентификаторами базовых модулей хранения и операции модуля по L, вывода ключевого значения в операции модуля по L и соответствующих данных в базовый модуль хранения с соответствующим идентификатором базового модуля хранения; определения того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных и сохранение подлежащих сохранению данных и соответствующего ключевого значения. Таким образом, путем использования распределенных средств хранения и конфигурирования множества базовых модулей хранения требования к устройствам хранения могут быть снижены, время доступа может быть существенно снижено, и эффективность сохранения может быть улучшена.
Краткое описание чертежей
На фиг.1 показана схематичная диаграмма существующего способа сохранения данных с использованием хэширования.
На фиг.2 показана диаграмма способа сохранения данных с использованием хэширования согласно вариантам осуществления настоящего изобретения.
На фиг.3 показана схематичная диаграмма для выбора базового модуля хранения для сохранения данных на основе ключевого значения данных и количества базовых модулей хранения в соответствии с вариантами осуществления настоящего изобретения.
На фиг.4 показана схематичная диаграмма таблицы хэширования в соответствии с вариантами осуществления настоящего изобретения.
На фиг.5 показана диаграмма процесса определения того, что предварительно сконфигурированная таблица хэширования базового модуля хранения не содержит подлежащие сохранению данные, и сохранения подлежащих сохранению данных и соответствующего ключевого значения в соответствии с вариантами осуществления настоящего изобретения.
На фиг.6 показана диаграмма процесса обращения к данным в соответствии с вариантами осуществления настоящего изобретения.
На фиг.7 показана схема устройства для сохранения данных с использованием хэширования согласно вариантам осуществления настоящего изобретения.
Осуществление изобретения
С целью более ясного иллюстрирования задач, технических решений и преимуществ настоящего изобретения далее будет дано детальное описание примеров вариантов осуществления изобретения, которые проиллюстрированы сопровождающими чертежами.
В примерах вариантов осуществления настоящего изобретения для классифицирования подлежащих сохранению данных и для сохранения классифицированных данных в соответствующих распределенных устройствах хранения с тем, чтобы снизить требования к объему устройства хранения, используется способ распределенного сохранения.
На фиг.2 показана диаграмма примера способа сохранения данных с использованием хэширования в соответствии с вариантами осуществления настоящего изобретения. Как показано на фиг.2, способ или процесс включает в себя:
Шаг 201, предварительное конфигурирование базовых модулей хранения в количестве L и идентификаторов базовых модулей хранения с помощью задающего соотношения с использованием операции модуля по L.
На этом шаге базовые модули хранения могут быть внутренними модулями хранения на клиентской стороне, такими как оперативное запоминающее устройство (RAM), флеш-память, стираемое и перезаписываемое запоминающее устройство, жесткие диски, т.п., или внешними модулями хранения в независимых серверах.
Количество базовых модулей хранения предпочтительно равно простому числу (L). Например, если L является простым числом 3, то предварительно конфигурируются 3 базовых модуля хранения, и идентификаторы базовых модулей хранения с помощью задающего соотношения с использованием операции модуля по L могут быть установлены как 0, 1 и 2. Более конкретно, задающее соотношение между идентификаторами базовых модулей хранения и операцией модуля по L может быть следующим: если остаток операции модуля данных по L равен 0, данные соответственно сохраняются в базовом модуле хранения с идентификатором базового модуля хранения, равным 0; если остаток операции модуля данных по L равен 1, данные соответственно сохраняются в базовом модуле хранения с идентификатором базового модуля хранения, равным 1 и т.д.
Шаг 202, вычисление ключевого значения данных, сохраняемых с использованием хэширования.
На этом шаге алгоритм хэширования может представлять собой CRC32, MD5 или SHA. В примерных вариантах осуществления настоящего изобретения для вычислений используется алгоритм MD5.
Шаг 203, осуществление операции модуля по L над полученным ключевым значением и, используя задающее соотношение, вывод ключевого значения в операции модуля по L и соответствующих данных в базовый модуль хранения с соответствующим идентификатором базового модуля хранения.
На этом шаге операция модуля применяется к полученному ключевому значению (KEY) из шага 202 с использованием количества базовых модулей хранения (L) в качестве основания. То есть, для полученного ключевого значения KEY получают остаток с использованием количества базовых модулей хранения в качестве основания операции модуля. С помощью KEY MOD L может быть получен идентификатор базового модуля хранения посредством задающего соотношения с использованием операции модуля по L для выбора соответствующего базового модуля хранения.
На фиг.3 показан выбор базового модуля хранения для сохранения данных в соответствии с ключевым значением данных и количеством базовых модулей хранения в соответствии с вариантом осуществления настоящего изобретения. Как показано на фиг.3, используя в качестве примера L=3, ключевое значение KEY mod 3==0, и соответствующие данные выводятся в базовый модуль хранения с номером 0 (соответствующий идентификатор базового модуля хранения равен 0); ключевое значение KEY mod 3==1, и соответствующие данные выводятся в базовый модуль хранения с номером 1; и ключевое значение KEY mod 3==2, и соответствующие данные выводятся в базовый модуль хранения с номером 2.
На шаге 204 определяют, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, затем сохраняют подлежащие сохранению данные и соответствующее ключевое значение.
На этом шаге сначала определяют, что таблица хэширования не содержит данных, соответствующих ключевому значению и совпадающих с подлежащими сохранению данными. Затем ключевое значение и соответствующие данные сохраняют. Количество предварительно сконфигурированных таблиц хэширования базовых модулей хранения может быть задано в качестве простого числа, которое может быть большим простым числом. Таблица хэширования может использовать множество параллельных хэш-групп (hash bucket) на основе предварительно заданного простого числа.
На фиг.4 показана реализация таблицы хэширования в соответствии с вариантами осуществления настоящего изобретения. Как показано на фиг.4, таблица хэширования предпочтительно параллельно использует 3 хэш-группы, то есть количество хэш-групп равно 3. Например, когда количество предварительно сконфигурированных базовых модулей хранения равно 3 и когда ключевое значение KEY mod 3==0, и соответствующие данные выводятся в базовый модуль хранения с номером 0, идентификаторы хэш-групп равны 0, 3 и 6, соответствуя ключевым значениям 0, 3 и 6 соответственно. Глубина каждой хэш-группы равна 5.
На фиг.5 показан процесс определения того, что предварительно сконфигурированная таблица хэширования базового модуля хранения не содержит подлежащих сохранению данных, и сохранения подлежащих сохранению данных и соответствующего ключевого значения. Как показано на фиг.5, процесс включает в себя:
Шаг 501, последовательно определяют, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным. Если определено, что такое ключевое значение отсутствует, выполняется переход на шаг 502. В противном случае осуществляется переход на шаг 503.
На этом шаге последовательно осуществляется поиск в предварительно сконфигурированной таблице хэширования базового модуля хранения. То есть, в таблице хэширования, показанной на фиг.4, последовательно осуществляют поиск с первой строки.
Шаг 502, сохранение ключевого значения и соответствующих данных.
На этом шаге, если предварительно сконфигурированная таблица хэширования не содержит ключевое значение, это указывает на то, что данные, соответствующие ключевому значению, не сохранялись. Ключевое значение и соответствующие данные сохраняются в таблице хэширования в строке после последней строки, содержащей сохраненные данные.
Шаг 503, проверка совпадения данных, сохраненных в таблице хэширования, с данными, соответствующими ключевому значению. Если данные, сохраненные в таблице хэширования, совпадают с данными, соответствующими ключевому значению, процесс завершается. В противном случае устанавливается флаг конфликта для данных, сохраненных в таблице хэширования, и к ключевому значению добавляется шаговое значение (т.е. предварительно заданный числовой элемент).
На этом шаге, если таблица хэширования содержит ключевое значение, это указывает на то, что определенные данные, соответствующие ключевому значению, были уже сохранены в таблице хэширования. Необходимо дополнительно определять, совпадают ли данные, сохраненные в таблице хэширования и соответствующие ключевому значению, с подлежащими сохранению данными. Если данные, сохраненные в таблице хэширования, совпадают с подлежащими сохранению данными, это указывает на то, что данные, сохраненные в таблице хэширования, представляют собой подлежащие сохранению данные, и отсутствует необходимость в сохранении подлежащих сохранению данных. С другой стороны, если данные, сохраненные в таблице хэширования, не совпадают с подлежащими сохранению данными, это указывает на то, что ключевое значение, соответствующее сохраненным данным, вступает в конфликт с ключевым значением, соответствующим подлежащим сохранению данным. Ключевое значение, соответствующее подлежащим сохранению данным, должно быть переконфигурировано таким образом, чтобы уникально идентифицировать подлежащие сохранению данные. Таким образом, к текущему ключевому значению добавляется шаговое значение, и шаг проверки совпадения продолжается. В то же время для данных, сохраненных в таблице хэширования и конфликтующих с подлежащими сохранению данными, устанавливается флаг конфликта, указывающий на то, что с сохраненными данными произошел конфликт.
Шаг 504, определение того, превышает ли количество добавлений предварительно заданного шагового значения предварительно заданное пороговое значение. Если количество добавлений превышает предварительно заданное пороговое значение, то процесс завершается. Если количество добавлений не превышает предварительно заданное пороговое значение, то осуществляется переход на шаг 501.
На этом шаге к произведению предварительно заданного шагового значения и количества добавлений применяется операция модуля по количеству N базовых модулей хранения, и остаток операции модуля по N равен 0. То есть, предварительно заданное шаговое значение умножается на количество добавлений, затем результат произведения берется по модулю количества N базовых модулей хранения, и остаток операции модуля равен 0. Формула следующая:
Key mod N=(Key+m∗step)modN=0, или
(m∗step)modN=0
При этом: Key - ключевое значение, соответствующее сохраненным данным; N - количество базовых модулей хранения; m - предварительно заданное количество раз, которое может быть добавлено к шаговому значению (step); step - предварительно заданное шаговое значение.
После этого процесс в соответствии со способом сохранения данных с использованием хэширования завершается.
Как описано выше, в соответствии с вариантами осуществления настоящего изобретения способ сохранения данных с использованием хэширования использует подход распределенного хранения. При наличии множества предварительно сконфигурированных базовых модулей хранения подлежащие сохранению данные классифицируются на основе ключевого значения подлежащих сохранению данных и количества базовых модулей хранения, и классифицированные данные соответственно сохраняются в соответствующих базовых модулях хранения. Требования к объему памяти устройств хранения могут быть снижены. В то же время при сохранении данных с конфликтующими ключевыми значениями таблица хэширования использует пошаговый подход для сохранения данных и обеспечивает каждые подлежащие сохранению данные уникальным ключевым значением. Таким образом, в распределенной системе хранения конфликтующие данные могут быть расположены в одном и том же базовом модуле хранения для последующих операций обращения и считывания. Кроме того, глубина хэш-групп в таблице хэширования представляет собой число раз, которое может быть добавлено шаговое значение, что существенно снижает объем, необходимый для хранения таблицы хэширования.
В соответствии с вариантом осуществления настоящего изобретения, когда существующий объем хранения данных должен быть увеличен в параллели, например, при увеличении количества параллельных базовых модулей хранения, потребуется обеспечить только то, чтобы количество добавленных базовых модулей хранения было кратно количеству начальных базовых модулей хранения. Причем операция модуля, осуществляемая над ключевым значением, соответствующим подлежащим сохранению данным, использует обновленное количество базовых модулей хранения. Например, если количество L базовых модулей хранения возрастает каждый раз с помощью удвоения, может быть использовано следующее уравнение: (m∗step)mod(2n∗L)=0 (n=0, 1, 2, 3…). Шаговое значение «step» может быть определено тогда на основе этого уравнения. После определения шагового значения также может быть определено решение для увеличения места для данных в параллели, тем самым эффективно удовлетворяя потребности по параллельному наращиванию места для хранения данных.
Последующие описания иллюстрируют процесс обращения к данным.
На фиг.6 показана диаграмма процесса обращения к данным в соответствии с настоящим изобретением. Как показано на фиг.6, процесс включает в себя:
Шаг 600, получение запроса обращения и определение, содержит ли запрос обращения данные или идентифицированное ключевое значение. Если запрос обращения содержит данные, осуществляется переход на шаг 601. Если запрос обращения содержит идентифицированное ключевое значение, осуществляется переход на шаг 611.
На этом шаге определение того, содержит ли запрос обращения данные или идентифицированное ключевое значение, может быть выполнено с использованием определенных существующих технологий, детали которых здесь опускаются.
Шаг 601, вычисление ключевого значения, соответствующего данным обращения, с использованием алгоритма хэширования.
Шаг 602, получение базового модуля хранения, соответствующего ключевому значению.
На этом шаге после получения ключевого значения количество базовых модулей хранения используется для осуществления операции модуля над ключевым значением для получения остатка модуля ключевого значения по количеству базовых модулей хранения. Таким образом может быть получен идентификатор базового модуля хранения, и на основе задающего соотношения между идентификаторами базовых модулей хранения и операции модуля может быть получен идентификатор базового модуля для данных, соответствующих ключевому значению.
Шаг 603, последовательный поиск в таблице хэширования с целью определения того, содержит ли таблица хэширования ключевое значение, соответствующее данным обращения. Если таблица хэширования не содержит ключевое значение, осуществляется переход на шаг 604. В противном случае осуществляется переход на шаг 605.
Шаг 604, возврат сообщения ошибки обращения и завершение процесса.
На этом шаге, если ключ, соответствующий данным обращения, не может быть найден в таблице хэширования, это указывает на то, что данные обращения не сохранены в таблице хэширования.
Шаг 605, определение того, имеют ли сохраненные данные, соответствующие ключевому значению, установленный флаг конфликта. Если данные не имеют установленного флага конфликта, осуществляется переход на шаг 606. В обратном случае осуществляется переход на шаг 607.
Шаг 606, возврат сообщения об успешном обращении, включающего данные, соответствующие ключевому значению.
Шаг 607, добавление предварительно заданного шагового значения к ключевому значению, соответствующему данным обращения.
На этом шаге Key=Key+step. После добавления к ключевому значению, соответствующему данным обращения, предварительно заданного шагового значения, определяют, имеют ли сохраненные данные, соответствующие ключевому значению обновленному с использованием добавления шагового значения, установленный флаг конфликта.
Шаг 608, определение того, что количество добавлений предварительно заданного шагового значения превысило предварительно заданное пороговое значение. Если количество добавлений превысило предварительно заданное пороговое значение, осуществляется переход на шаг 609. В противном случае осуществляется возврат на шаг 603.
Шаг 609, возврат сообщения ошибки обращения и завершение процесса.
Шаг 611, осуществление операции модуля над идентифицированным ключевым значением с использованием количества базовых модулей хранения в качестве основания модуля и в соответствии с задающим соотношением между идентификаторами базовых модулей хранения и операцией модуля получение базового модуля хранения, соответствующего ключевому значению.
Шаг 612, осуществление поиска для определения того, содержит ли таблица хэширования идентифицированное ключевое значение. Если таблица хэширования не содержит идентифицированное ключевое значение, осуществляется переход на шаг 613. В обратном случае осуществляется переход на шаг 614.
Шаг 613, возврат сообщения ошибки обращения и завершение процесса.
Шаг 614, возврат сообщения об успешном обращении, включающего данные, соответствующие идентифицированному ключевому значению.
После этого процесс обращения к данным завершается.
Как описано выше, в соответствии с вариантами осуществления настоящего изобретения способ обращения к данным использует распределенный алгоритм хэширования. Во-первых, идентификатор базового модуля хранения выбирается на основе ключевого значения, соответствующего данным обращения; затем осуществляется поиск и обращение к таблице хэширования в соответствующем базовом модуле хранения. Таким образом, сложность запроса может быть существенно снижена, и скорость доступа к данным может быть повышена. Для запроса обращения к данным, когда имеется конфликт хэширования, сложность запроса равна O(m), где m - количество добавлений предварительно заданного шагового значения. Скорость ответа на обращение значительно возрастает. Кроме того, для запроса обращения с идентифицированным ключевым значением сложность запроса равна O(1).
На фиг.7 показана схематичная диаграмма устройства для сохранения данных с использованием хэширования. Как показано на фиг.7, устройство содержит множество базовых модулей хранения, модуль хранения задающего соотношения, модуль вычисления ключевого значения и блок операции модуля.
Модуль хранения задающего соотношения выполнен с возможностью сохранения задающего соотношения между идентификаторами базовых модулей хранения и операции модуля по L.
Модуль вычисления ключевого значения выполнен с возможностью вычисления ключевого значения подлежащих сохранению данных с использованием алгоритма хэширования и вывода ключевого значения в блок операции модуля.
Блок операции модуля выполнен с возможностью осуществления операции модуля над полученным ключевым значением на основе количества базовых модулей хранения, с возможностью получения из модуля хранения задающего соотношения и на основе остатка операции модуля идентификатора базового модуля хранения, заданного остатком операции модуля, и с возможностью вывода ключевого значения в операции модуля и соответствующих данных в базовый модуль хранения с соответствующим идентификатором.
Базовый модуль хранения выполнен с возможностью определения того, что предварительно сконфигурированная таблица хэширования не содержит подлежащих сохранению данных и с возможностью сохранения подлежащих сохранению данных и соответствующего ключевого значения.
В вариантах осуществления настоящего изобретения базовые модули хранения могут представлять собой оперативное запоминающее устройство, флеш-память, стираемое и перезаписываемое запоминающее устройство или жесткие диски.
Кроме того, базовый модуль хранения может содержать блок поиска ключевого значения, блок хранения таблицы хэширования, блок сравнения данных и блок обработки конфликтов ключей.
Блок поиска ключевого значения выполнен с возможностью последовательного определения того, хранит ли таблица хэширования в блоке хранения таблицы хэширования ключевое значение, соответствующее подлежащим сохранению данным. Если нет, блок поиска ключевого значения выводит ключевое значение и соответствующие данные в блок хранения таблицы хэширования для сохранения. В обратном случае блок поиска ключевого значения выводит ключевое значение и соответствующие данные в блок сравнения данных.
Блок сравнения данных выполнен с возможностью сравнения полученных данных с данными, сохраненными в таблице хэширования в блоке хранения таблицы хэширования. Если полученные данные совпадают с данными, сохраненными в таблице хэширования, то блок сравнения данных не осуществляет дальнейшей обработки. В обратном случае блок сравнения данных устанавливает флаг конфликта для сохраненных данных и выводит ключевое значение в блок обработки конфликтов ключей.
Блок обработки конфликтов ключей выполнен с возможностью добавления предварительно заданного шагового значения к полученному ключевому значению и определения того, превышает ли количество добавлений предварительно заданного шагового значения к ключевому значению предварительно заданное пороговое значение. Если количество добавлений превышает предварительно заданное пороговое значение, то блок обработки конфликтов ключей не осуществляет дальнейшей обработки. В обратном случае блок обработки конфликтов ключей выводит ключевое значение с добавленным шаговым значением в блок запроса ключевого значения.
Вышеприведенное описание представляет собой предпочтительные варианты осуществления настоящего изобретения и не предназначено для ограничения настоящего изобретения. Без отступления от сущности и принципов настоящего изобретения любые модификации, эквивалентные замены, усовершенствования и т.п. должны включаться в объем защиты настоящего изобретения.
Claims (11)
1. Способ сохранения данных с использованием хэширования, характеризующийся тем, что включает:
предварительное конфигурирование базовых модулей хранения в количестве L и задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, причем L представляет собой натуральное число больше 1;
вычисление ключевого значения данных, сохраняемых с использованием хэширования;
осуществление операции модуля по L над полученным ключевым значением и, используя задающее соотношение между идентификаторами базовых модулей хранения и операцией модуля по L, вывод ключевого значения в операции модуля по L и соответствующих данных в базовый модуль хранения с соответствующим идентификатором базового модуля хранения;
определение того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, и сохранение подлежащих сохранению данных и соответствующего ключевого значения.
предварительное конфигурирование базовых модулей хранения в количестве L и задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, причем L представляет собой натуральное число больше 1;
вычисление ключевого значения данных, сохраняемых с использованием хэширования;
осуществление операции модуля по L над полученным ключевым значением и, используя задающее соотношение между идентификаторами базовых модулей хранения и операцией модуля по L, вывод ключевого значения в операции модуля по L и соответствующих данных в базовый модуль хранения с соответствующим идентификатором базового модуля хранения;
определение того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, и сохранение подлежащих сохранению данных и соответствующего ключевого значения.
2. Способ по п. 1, отличающийся тем, что определение того, что предварительно сконфигурированная таблица хэширования в базовом модуле хранения не содержит подлежащих сохранению данных, и сохранение подлежащих сохранению данных и соответствующего ключевого значения дополнительно включает:
последовательное определение того, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным; в случае, когда такое ключевое значение отсутствует, сохранение ключевого значения и соответствующих данных в таблице хэширования; а в случае, когда такое ключевое значение имеется, сравнение данных, сохраненных в таблице хэширования, с данными, соответствующими ключевому значению;
определение того, что данные, сохраненные в таблице хэширования, не совпадают с данными, соответствующими ключевому значению; установка флага конфликта для данных, сохраненных в таблице хэширования; и добавление предварительно заданного шагового значения к ключевому значению; и
определение того, что количество добавлений шагового значения не превышает предварительно заданное пороговое значение; и повтор шага последовательного определения того, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным.
последовательное определение того, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным; в случае, когда такое ключевое значение отсутствует, сохранение ключевого значения и соответствующих данных в таблице хэширования; а в случае, когда такое ключевое значение имеется, сравнение данных, сохраненных в таблице хэширования, с данными, соответствующими ключевому значению;
определение того, что данные, сохраненные в таблице хэширования, не совпадают с данными, соответствующими ключевому значению; установка флага конфликта для данных, сохраненных в таблице хэширования; и добавление предварительно заданного шагового значения к ключевому значению; и
определение того, что количество добавлений шагового значения не превышает предварительно заданное пороговое значение; и повтор шага последовательного определения того, хранит ли предварительно сконфигурированная таблица хэширования базового модуля хранения ключевое значение, соответствующее подлежащим сохранению данным.
3. Способ по п. 2, отличающийся тем, что после умножения предварительно заданного шагового значения на количество добавлений и осуществления операции модуля над результатом умножения на количество базовых модулей хранения остаток операции модуля равен 0.
4. Способ по любому из пп. 1-3, отличающийся тем, что количество базовых модулей хранения изменяют каждый раз путем удвоения.
5. Способ по любому из пп. 1-3, отличающийся тем, что дополнительно включает:
получение ключевого значения, соответствующего запросу обращения, на основе запроса обращения;
осуществление операции модуля над полученным ключевым значением по количеству базовых модулей хранения и на основе задающего соотношения между идентификаторами базовых модулей хранения и операции модуля по L получение базового модуля хранения, соответствующего ключевому значению; и
осуществление поиска в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться.
получение ключевого значения, соответствующего запросу обращения, на основе запроса обращения;
осуществление операции модуля над полученным ключевым значением по количеству базовых модулей хранения и на основе задающего соотношения между идентификаторами базовых модулей хранения и операции модуля по L получение базового модуля хранения, соответствующего ключевому значению; и
осуществление поиска в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться.
6. Способ по п. 5, отличающийся тем, что получение ключевого значения, соответствующего запросу обращения, дополнительно включает:
получение запроса обращения;
определение того, содержит ли запрос обращения данные или идентифицированное ключевое значение;
когда запрос обращения содержит данные, вычисление ключевого значения, соответствующего данным обращения; и использование ключевого значения в качестве ключевого значения, соответствующего запросу обращения; а
когда запрос обращения содержит идентифицируемое ключевое значение, использование идентифицированного ключевого значения в качестве ключа, соответствующего запросу обращения.
получение запроса обращения;
определение того, содержит ли запрос обращения данные или идентифицированное ключевое значение;
когда запрос обращения содержит данные, вычисление ключевого значения, соответствующего данным обращения; и использование ключевого значения в качестве ключевого значения, соответствующего запросу обращения; а
когда запрос обращения содержит идентифицируемое ключевое значение, использование идентифицированного ключевого значения в качестве ключа, соответствующего запросу обращения.
7. Способ по п. 6, отличающийся тем, что когда запрос обращения содержит данные, поиск в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться, дополнительно включает:
осуществление поиска в таблице хэширования с целью определения того, что таблица хэширования содержит ключевое значение, соответствующее данным обращения;
определение, имеют ли сохраненные данные, соответствующие ключевому значению, установленный флаг конфликта; когда сохраненные данные не имеют флаг конфликта, возврат сообщения об успешном обращении, содержащего сохраненные данные, соответствующие ключевому значению; а когда сохраненные данные имеют установленный флаг конфликта, добавление предварительно заданного шагового значения к ключевому значению, соответствующему данным обращения;
определение того, что количество добавлений предварительно заданного шагового значения не превышает предварительно заданное пороговое значение; и повтор шага поиска в таблице хэширования с целью определения того, что таблица хэширования содержит ключевое значение, соответствующее данным обращения.
осуществление поиска в таблице хэширования с целью определения того, что таблица хэширования содержит ключевое значение, соответствующее данным обращения;
определение, имеют ли сохраненные данные, соответствующие ключевому значению, установленный флаг конфликта; когда сохраненные данные не имеют флаг конфликта, возврат сообщения об успешном обращении, содержащего сохраненные данные, соответствующие ключевому значению; а когда сохраненные данные имеют установленный флаг конфликта, добавление предварительно заданного шагового значения к ключевому значению, соответствующему данным обращения;
определение того, что количество добавлений предварительно заданного шагового значения не превышает предварительно заданное пороговое значение; и повтор шага поиска в таблице хэширования с целью определения того, что таблица хэширования содержит ключевое значение, соответствующее данным обращения.
8. Способ по п. 6, отличающийся тем, что, когда запрос обращения содержит данные, поиск в таблице хэширования базового модуля хранения с целью получения данных, к которым нужно обратиться, дополнительно включает:
осуществление поиска для определения того, содержит ли таблица хэширования идентифицированное ключевое значение; и
когда таблица хэширования содержит идентифицированное ключевое значение, возврат сообщения об успешном обращении, содержащего сохраненные данные, соответствующие идентифицированному ключевому значению.
осуществление поиска для определения того, содержит ли таблица хэширования идентифицированное ключевое значение; и
когда таблица хэширования содержит идентифицированное ключевое значение, возврат сообщения об успешном обращении, содержащего сохраненные данные, соответствующие идентифицированному ключевому значению.
9. Устройство для сохранения данных с использованием хэширования, характеризующееся тем, что содержит множество базовых модулей хранения; модуль хранения задающего соотношения, модуль вычисления ключевого значения и блок операции модуля, причем:
модуль хранения задающего соотношения выполнен с возможностью сохранения задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, где L представляет собой количество базовых модулей хранения;
модуль вычисления ключевого значения выполнен с возможностью вычисления ключевого значения подлежащих сохранению данных с использованием алгоритма хэширования и вывода ключевого значения в блок операции модуля;
блок операции модуля выполнен с возможностью осуществления операции модуля над полученным ключевым значением по количеству базовых модулей хранения, с возможностью получения, на основе указанного задающего соотношения из модуля хранения задающего соотношения и на основе остатка операции модуля, идентификатора базового модуля хранения, заданного остатком операции модуля, и с возможностью вывода ключевого значения в операции модуля и соответствующих данных в базовый модуль хранения с соответствующим идентификатором; и
базовый модуль хранения выполнен с возможностью определения того, что предварительно сконфигурированная таблица хэширования не содержит подлежащих сохранению данных и последующего сохранения подлежащих сохранению данных и соответствующего ключевого значения.
модуль хранения задающего соотношения выполнен с возможностью сохранения задающего соотношения между идентификаторами базовых модулей хранения и операцией модуля по L, где L представляет собой количество базовых модулей хранения;
модуль вычисления ключевого значения выполнен с возможностью вычисления ключевого значения подлежащих сохранению данных с использованием алгоритма хэширования и вывода ключевого значения в блок операции модуля;
блок операции модуля выполнен с возможностью осуществления операции модуля над полученным ключевым значением по количеству базовых модулей хранения, с возможностью получения, на основе указанного задающего соотношения из модуля хранения задающего соотношения и на основе остатка операции модуля, идентификатора базового модуля хранения, заданного остатком операции модуля, и с возможностью вывода ключевого значения в операции модуля и соответствующих данных в базовый модуль хранения с соответствующим идентификатором; и
базовый модуль хранения выполнен с возможностью определения того, что предварительно сконфигурированная таблица хэширования не содержит подлежащих сохранению данных и последующего сохранения подлежащих сохранению данных и соответствующего ключевого значения.
10. Устройство по п. 9, отличающееся тем, что базовый модуль хранения содержит оперативное запоминающее устройство, флеш-память, стираемое и перезаписываемое запоминающее устройство или жесткие диски.
11. Устройство по п. 9, отличающееся тем, что базовый модуль хранения содержит блок поиска ключевого значения, блок хранения таблицы хэширования, блок сравнения данных и блок обработки конфликтов ключей, причем
блок поиска ключевого значения выполнен с возможностью последовательного определения того, хранит ли таблица хэширования ключевое значение, соответствующее подлежащим сохранению данным; с возможностью вывода ключевого значения и соответствующих данных в блок хранения таблицы хэширования для сохранения, когда таблица хэширования не хранит ключевое значение, соответствующее подлежащим сохранению данным; и с возможностью вывода ключевого значения и соответствующих данных в блок сравнения данных, когда таблица хэширования хранит ключевое значение, соответствующее подлежащим сохранению данным;
блок сравнения данных выполнен с возможностью сравнения полученных данных с данными, сохраненными в таблице хэширования; с возможностью отказа от дальнейшей обработки, когда полученные данные совпадают с данными, сохраненными в таблице хэширования; и с возможностью установки флага конфликта для сохраненных данных и вывода ключевого значения в блок обработки конфликтов ключей, когда полученные данные не совпадают с данными, сохраненными в таблице хэширования; и
блок обработки конфликтов ключей выполнен с возможностью добавления предварительно заданного шагового значения к полученному ключевому значению и определения того, превышает ли количество добавлений предварительно заданного шагового значения к ключевому значению предварительно заданное пороговое значение; с возможностью отказа от дальнейшей обработки, когда количество добавлений превышает предварительно заданное пороговое значение; и с возможностью вывода ключевого значения с добавленным шаговым значением в блок поиска ключевого значения, когда количество добавлений не превышает предварительно заданное пороговое значение.
блок поиска ключевого значения выполнен с возможностью последовательного определения того, хранит ли таблица хэширования ключевое значение, соответствующее подлежащим сохранению данным; с возможностью вывода ключевого значения и соответствующих данных в блок хранения таблицы хэширования для сохранения, когда таблица хэширования не хранит ключевое значение, соответствующее подлежащим сохранению данным; и с возможностью вывода ключевого значения и соответствующих данных в блок сравнения данных, когда таблица хэширования хранит ключевое значение, соответствующее подлежащим сохранению данным;
блок сравнения данных выполнен с возможностью сравнения полученных данных с данными, сохраненными в таблице хэширования; с возможностью отказа от дальнейшей обработки, когда полученные данные совпадают с данными, сохраненными в таблице хэширования; и с возможностью установки флага конфликта для сохраненных данных и вывода ключевого значения в блок обработки конфликтов ключей, когда полученные данные не совпадают с данными, сохраненными в таблице хэширования; и
блок обработки конфликтов ключей выполнен с возможностью добавления предварительно заданного шагового значения к полученному ключевому значению и определения того, превышает ли количество добавлений предварительно заданного шагового значения к ключевому значению предварительно заданное пороговое значение; с возможностью отказа от дальнейшей обработки, когда количество добавлений превышает предварительно заданное пороговое значение; и с возможностью вывода ключевого значения с добавленным шаговым значением в блок поиска ключевого значения, когда количество добавлений не превышает предварительно заданное пороговое значение.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010281747.0 | 2010-09-13 | ||
CN201010281747.0A CN102402394B (zh) | 2010-09-13 | 2010-09-13 | 一种基于哈希算法的数据存储方法及装置 |
PCT/CN2011/078564 WO2012034470A1 (zh) | 2010-09-13 | 2011-08-18 | 一种基于哈希算法的数据存储方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
RU2013114990A RU2013114990A (ru) | 2014-10-20 |
RU2586010C2 true RU2586010C2 (ru) | 2016-06-10 |
Family
ID=45830998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2013114990/08A RU2586010C2 (ru) | 2010-09-13 | 2011-08-18 | Способ и устройство для сохранения данных с использованием хэширования |
Country Status (4)
Country | Link |
---|---|
US (1) | US9104676B2 (ru) |
CN (1) | CN102402394B (ru) |
RU (1) | RU2586010C2 (ru) |
WO (1) | WO2012034470A1 (ru) |
Families Citing this family (46)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102821138B (zh) * | 2012-07-09 | 2015-06-24 | 广州鼎鼎信息科技有限公司 | 一种适用于云存储***的元数据分布式存储方法 |
CN103905332B (zh) * | 2012-12-31 | 2017-06-09 | 华为技术有限公司 | 一种确定缓存策略的方法及设备 |
CN104298687B (zh) * | 2013-07-18 | 2018-04-03 | 阿里巴巴集团控股有限公司 | 一种哈希分区管理方法及装置 |
CN104376025B (zh) * | 2013-08-16 | 2017-10-10 | 华为技术有限公司 | 分布式数据库的数据存储方法和装置 |
CN103593477A (zh) * | 2013-11-29 | 2014-02-19 | 华为技术有限公司 | 一种哈希数据库的配置方法和装置 |
CN104077374B (zh) * | 2014-06-24 | 2018-09-11 | 华为技术有限公司 | 一种实现ip盘文件存储的方法及装置 |
CN105530162A (zh) * | 2014-10-21 | 2016-04-27 | 中兴通讯股份有限公司 | 离线消息处理方法及装置 |
US9846642B2 (en) * | 2014-10-21 | 2017-12-19 | Samsung Electronics Co., Ltd. | Efficient key collision handling |
CN104461817B (zh) * | 2014-11-26 | 2017-08-11 | 华为技术有限公司 | 一种检测键的方法和服务器 |
CN104361119B (zh) * | 2014-12-02 | 2018-03-06 | 中国农业银行股份有限公司 | 一种数据清理的方法及*** |
CN104461920B (zh) * | 2014-12-09 | 2019-04-12 | 杭州华为数字技术有限公司 | 一种存储数据的方法及装置 |
CN104539660B (zh) * | 2014-12-09 | 2018-09-11 | 珠海金山网络游戏科技有限公司 | 一种***扩容时零数据迁移的数据分布存储方法及*** |
CN104503708B (zh) * | 2014-12-29 | 2018-05-22 | 成都极驰科技有限公司 | 数据散列存储的方法及装置 |
CN105681414B (zh) * | 2016-01-14 | 2019-01-01 | 深圳市博瑞得科技有限公司 | 一种避免Hbase数据热点的方法及*** |
CN106991088B (zh) * | 2016-01-20 | 2021-02-09 | 创新先进技术有限公司 | 数据获取方法和装置 |
CN106777178A (zh) * | 2016-12-22 | 2017-05-31 | 上海大汉三通无线通信有限公司 | 一种手机号码的存储方法及查询方法 |
US10785193B2 (en) * | 2017-03-30 | 2020-09-22 | Seagate Technology Llc | Security key hopping |
CN107707346A (zh) * | 2017-04-10 | 2018-02-16 | 浙江九州量子信息技术股份有限公司 | 一种基于数据库的密钥存储、获取方法 |
US11416447B2 (en) | 2017-06-08 | 2022-08-16 | Hitachi Vantara Llc | Deduplicating distributed erasure coded objects |
US10540370B2 (en) | 2017-06-26 | 2020-01-21 | Huawei Technologies Co., Ltd. | Self-balancing binary search capable distributed database |
CN107562775B (zh) * | 2017-07-14 | 2020-04-24 | 创新先进技术有限公司 | 一种基于区块链的数据处理方法及设备 |
CN107579814A (zh) * | 2017-08-03 | 2018-01-12 | 北京比特大陆科技有限公司 | 工作量证明的计算方法的装置、计算芯片、挖矿机 |
JP7105870B2 (ja) | 2017-08-10 | 2022-07-25 | 華為技術有限公司 | データアクセス方法、装置およびシステム |
CN107798257B (zh) * | 2017-11-17 | 2020-04-03 | 郑州云海信息技术有限公司 | 一种md5值存储方法及存储*** |
CN110019275A (zh) * | 2017-12-31 | 2019-07-16 | ***通信集团安徽有限公司 | 主键生成方法、装置、设备及介质 |
CN108389044A (zh) * | 2018-02-28 | 2018-08-10 | 北京比特大陆科技有限公司 | 工作量证明的计算方法和***、电子设备、程序和介质 |
CN108376121B (zh) * | 2018-03-01 | 2021-10-22 | 曲阜师范大学 | 一种Flash存储器的数据存储方法 |
CN110399530A (zh) * | 2018-04-20 | 2019-11-01 | 杭州海康威视数字技术股份有限公司 | 数据匹配方法、装置及计算机设备 |
CN110750529B (zh) * | 2018-07-04 | 2022-09-23 | 百度在线网络技术(北京)有限公司 | 数据处理方法、装置、设备及存储介质 |
CN109558423A (zh) * | 2018-10-31 | 2019-04-02 | 深圳壹账通智能科技有限公司 | 一种基于键值对的数据查找方法、装置及设备 |
US10992563B2 (en) * | 2019-04-30 | 2021-04-27 | Google Llc | Systems and methods of monitoring network devices |
CN110489405B (zh) * | 2019-07-12 | 2024-01-12 | 平安科技(深圳)有限公司 | 数据处理的方法、装置和服务器 |
CN112639761B (zh) * | 2019-07-24 | 2024-04-26 | 华为云计算技术有限公司 | 一种为数据建立索引的方法以及装置 |
CN110457324A (zh) * | 2019-08-09 | 2019-11-15 | 泰康保险集团股份有限公司 | 数据存储方法和装置 |
CN110727702B (zh) * | 2019-09-16 | 2024-01-26 | 平安科技(深圳)有限公司 | 数据查询方法、装置、终端和计算机可读存储介质 |
CN110716965B (zh) * | 2019-09-25 | 2022-02-25 | 蚂蚁区块链科技(上海)有限公司 | 一种块链式账本中的查询方法、装置及设备 |
CN111078132A (zh) * | 2019-10-15 | 2020-04-28 | 中国平安财产保险股份有限公司 | 基于Redis集群的数据均匀缓存方法、装置、终端及存储介质 |
CN110968265B (zh) * | 2019-11-05 | 2023-08-08 | 北京字节跳动网络技术有限公司 | 分片扩容方法、装置及电子设备 |
CN111078672B (zh) * | 2019-12-20 | 2023-06-02 | 中国建设银行股份有限公司 | 数据库的数据对比方法及装置 |
WO2021108812A1 (en) * | 2020-02-11 | 2021-06-03 | Zeku, Inc. | Hardware-implemented tables and methods of using the same for classification and collision resolution of data packets |
CN111552695A (zh) * | 2020-06-04 | 2020-08-18 | 支付宝(杭州)信息技术有限公司 | 数据存储和查询的方法、装置以及机器可读存储介质 |
CN111881317B (zh) * | 2020-07-31 | 2021-08-20 | 北京达佳互联信息技术有限公司 | 基于键值***的数据存储方法、装置、电子设备及介质 |
US11375013B2 (en) | 2020-09-25 | 2022-06-28 | Microsoft Technology Licensing, Llc | Deterministic mapping and uniform routing of items to physical resources using hash values |
CN112235104B (zh) * | 2020-10-23 | 2022-12-23 | 苏州浪潮智能科技有限公司 | 一种数据加密传输方法、***、终端及存储介质 |
CN113609130B (zh) * | 2021-07-30 | 2023-06-13 | 中电金信软件有限公司 | 获取网关接入数据的方法、装置、电子设备及存储介质 |
CN113810477A (zh) * | 2021-08-30 | 2021-12-17 | 深圳壹账通智能科技有限公司 | 一种文件上传方法、装置、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5960434A (en) * | 1997-09-26 | 1999-09-28 | Silicon Graphics, Inc. | System method and computer program product for dynamically sizing hash tables |
RU2196389C2 (ru) * | 1997-03-21 | 2003-01-10 | КАНАЛЬ+ Сосьетэ Аноним | Система вещания и приема, а также система условного доступа для нее |
US7185041B1 (en) * | 2001-10-05 | 2007-02-27 | Unisys Corporation | Circuit and method for high-speed execution of modulo division |
Family Cites Families (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5914938A (en) * | 1996-11-19 | 1999-06-22 | Bay Networks, Inc. | MAC address table search unit |
US7606916B1 (en) * | 2003-11-10 | 2009-10-20 | Cisco Technology, Inc. | Method and apparatus for load balancing within a computer system |
US8219637B2 (en) * | 2004-05-14 | 2012-07-10 | Pixar | Storage management for renderfarm |
US7788240B2 (en) * | 2004-12-29 | 2010-08-31 | Sap Ag | Hash mapping with secondary table having linear probing |
US7370048B2 (en) * | 2005-05-27 | 2008-05-06 | International Business Machines Corporation | File storage method and apparatus |
US20070083531A1 (en) * | 2005-10-12 | 2007-04-12 | Daniar Hussain | Data storage method and apparatus utilizing evolution and hashing |
US7647630B2 (en) * | 2005-12-15 | 2010-01-12 | International Business Machines Corporation | Associating security information with information objects in a data processing system |
US7827146B1 (en) * | 2007-03-30 | 2010-11-02 | Symantec Operating Corporation | Storage system |
CN101140592A (zh) * | 2007-09-30 | 2008-03-12 | 华为技术有限公司 | 关键字存储、查找方法和设备 |
CN100561482C (zh) * | 2008-01-29 | 2009-11-18 | 北京北方烽火科技有限公司 | 一种嵌入式***数据库的实现方法 |
CN101247349A (zh) * | 2008-03-13 | 2008-08-20 | 华耀环宇科技(北京)有限公司 | 一种网络流量快速分配方法 |
-
2010
- 2010-09-13 CN CN201010281747.0A patent/CN102402394B/zh active Active
-
2011
- 2011-08-18 RU RU2013114990/08A patent/RU2586010C2/ru active
- 2011-08-18 WO PCT/CN2011/078564 patent/WO2012034470A1/zh active Application Filing
-
2012
- 2012-09-12 US US13/610,876 patent/US9104676B2/en active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
RU2196389C2 (ru) * | 1997-03-21 | 2003-01-10 | КАНАЛЬ+ Сосьетэ Аноним | Система вещания и приема, а также система условного доступа для нее |
US5960434A (en) * | 1997-09-26 | 1999-09-28 | Silicon Graphics, Inc. | System method and computer program product for dynamically sizing hash tables |
US7185041B1 (en) * | 2001-10-05 | 2007-02-27 | Unisys Corporation | Circuit and method for high-speed execution of modulo division |
Also Published As
Publication number | Publication date |
---|---|
RU2013114990A (ru) | 2014-10-20 |
CN102402394A (zh) | 2012-04-04 |
WO2012034470A1 (zh) | 2012-03-22 |
CN102402394B (zh) | 2014-10-22 |
US9104676B2 (en) | 2015-08-11 |
US20130007008A1 (en) | 2013-01-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2586010C2 (ru) | Способ и устройство для сохранения данных с использованием хэширования | |
WO2018099107A1 (zh) | 一种哈希表管理的方法和装置、计算机存储介质 | |
CN101692651B (zh) | 一种哈希查找表的方法和装置 | |
CN102479207B (zh) | 一种信息搜索的方法、***及信息搜索设备 | |
US10938961B1 (en) | Systems and methods for data deduplication by generating similarity metrics using sketch computation | |
CN106874348B (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
JP2019504412A (ja) | ショートリンクの処理方法、デバイス、及びサーバ | |
CN106599091B (zh) | 基于键值存储的rdf图结构存储和索引方法 | |
CN111625534A (zh) | 用于哈希运算的数据结构及基于该结构的哈希表存储、查询方法 | |
US10984059B2 (en) | Data retrieval method and system | |
CN103186652A (zh) | 分布式的重复数据删除***及其方法 | |
WO2014015808A1 (zh) | 推送信息的方法和装置 | |
WO2023179433A1 (zh) | 流表存储及报文转发方法、装置、计算设备及介质 | |
WO2020024446A1 (zh) | 数据的存储方法及装置、存储介质、计算机设备 | |
Zhang et al. | SUMMA: subgraph matching in massive graphs | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
WO2021127245A1 (en) | Systems and methods for sketch computation | |
CN102347969B (zh) | 云端资料储存*** | |
CN112231398B (zh) | 数据存储方法、装置、设备及存储介质 | |
US20140067751A1 (en) | Compressed set representation for sets as measures in olap cubes | |
US8533167B1 (en) | Compressed set representation for sets as measures in OLAP cubes | |
JP6233846B2 (ja) | 可変長ノンスの生成 | |
CN106709045B (zh) | 分布式文件***中节点选择方法及装置 | |
CN112650964B (zh) | 一种业务处理方法、设备及机器可读存储介质 | |
Li et al. | Deterministic and efficient hash table lookup using discriminated vectors |