Что подразумевается под разреженными данными / хранилищем данных / базой данных? - PullRequest
16 голосов
/ 05 июля 2011

В последнее время читал об Hadoop и HBase, и наткнулся на этот термин-

HBase - это дистрибутив с открытым исходным кодом, разреженный , ориентированный на столбцы хранилище ...

Что они имеют в виду под редкостью? Это как-то связано с разреженной матрицей ? Я предполагаю, что это свойство типа данных, которые оно может эффективно хранить, и, следовательно, хотел бы узнать о нем больше.

Ответы [ 5 ]

17 голосов
/ 06 июля 2011

В обычной базе данных строки редки, а столбцы - нет. Когда строка создается, память выделяется для каждого столбца, независимо от того, существует ли значение для этого поля (поле, являющееся хранилищем, выделенным для пересечения строки и столбца).

Это позволяет фиксированной длины строк значительно улучшить время чтения и записи. Типы данных переменной длины обрабатываются с помощью аналоговых указателей.

Разреженные столбцы повлекут за собой снижение производительности и вряд ли позволят вам сэкономить много места на диске, поскольку пространство, необходимое для указания значения NULL, меньше 64-разрядного указателя, необходимого для стиля связанного списка архитектуры цепочечного указателя, обычно используемой для реализации очень большое несмежное хранилище.

Хранение дешево. Производительность нет.

4 голосов
/ 06 июля 2011

На уровне хранения все данные хранятся в виде пары ключ-значение.Каждый файл хранилища содержит индекс, так что он знает, где начинается каждое значение ключа и как долго он находится.

Вследствие этого, если у вас очень длинные ключи (например, полный URL-адрес), и многостолбцов, связанных с этим ключом, вы могли бы тратить некоторое пространство.Это несколько улучшается включением сжатия.

См. http://www.larsgeorge.com/2009/10/hbase-architecture-101-storage.html

для получения дополнительной информации о хранилище HBase

2 голосов
/ 06 июля 2011

Разреженный по отношению к HBase действительно используется в том же контексте, что и разреженная матрица.По сути, это означает, что поля, которые являются пустыми, могут свободно храниться (с точки зрения пространства).

Я нашел пару постов в блоге, которые затрагивают эту тему более подробно:

http://blog.rapleaf.com/dev/2008/03/11/matching-impedance-when-to-use-hbase/

http://jimbojw.com/wiki/index.php?title=Understanding_Hbase_and_BigTable

1 голос
/ 18 декабря 2013

Лучшая статья, которую я видел, которая также объясняет многие термины баз данных.

> http://jimbojw.com/#understanding%20hbase

0 голосов
/ 17 октября 2015

Существует два способа хранения данных в таблицах: это разреженные данные и плотные данные. пример для разреженных данных.

Предположим, что мы должны выполнить операцию с таблицей, содержащей данные о продажах, для транзакции сотрудника в период с января 2015 года по ноябрь 2015 года, а затем, после запуска запроса, мы получим данные, которые удовлетворяют условию временной отметки. если сотрудник не совершил ни одной транзакции, вся строка будет возвращена пустой

например. EMPNo Название Продукт Дата Количество

 1234  Mike    Hbase    2014/12/01     1
 5678                                        
 3454  Jole    Flume    2015/09/12   3

строка с empno5678 не имеет данных, а остальные строки содержат данные, если мы рассмотрим всю таблицу со строкой пробелов и заполненной строкой, то мы можем назвать ее разреженными данными.

Если мы берем только заполненные данные, то они называются плотными данными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...