Что подразумевается под разреженными данными/хранилищем данных/базой данных?

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

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

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

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

Ответ 3

Разреженный по отношению к 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

Ответ 5

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

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

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

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

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

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