Классика баз данных - статьи

       

База данных переписи США включала


База данных переписи США включала много разных наборов данных различных размеров, но если немного упростить, оказывается, что 100 гигабайт достаточно для сохранения, по крайней мере, базовой демографической информации (данных о возрасте, поле, заработке, этнической принадлежности, языке, религии, жилищных условиях и месте проживания, упакованных в 128-битную запись) обо всех здравствующих жителях Земли. Для этого понадобилось бы создать таблицу с 6,75 миллиардами строк и, вероятно, с 10 столбцами. Следует ли по-прежнему считать это «большими данными»? Конечно, это зависит от того, что вы пытаетесь делать с этими данными. Несомненно, их можно сохранить в дисковой памяти стоимостью в 10 долларов. Но более важно то, что любой грамотный программист за несколько часов может написать простое, неоптимизированное приложение для персонального компьютера стоимостью в 500 долларов с минимальными ресурсами процессора и основной памяти, которое перерабатывает эти данные и с достаточно разумной производительностью возвращает ответы на простые агрегатные запросы типа «для каждой страны найти возрастную медиану1 ее жителей мужского и женского пола».

Чтобы это продемонстрировать, я попытался создать такое приложение, используя, конечно, фиктивные данные – файл из 6,75 миллиардов 16-байтовых записей, содержащий равномерно распределенные случайные данные (рис. 1). Поскольку в семибитном поле возраста может содержаться 128 разных значений, в однобитном поле пола – два значения (предполагается, что неопределенные значения отсутствуют), а в восьмибитном поле кода страны – 256 значений (в ООН состоит 192 государства), средний возраст можно вычислить с использованием стратегии пересчета: просто создать 65536 бакетов (по одному для каждой возможной комбинации возраста, пола и кода страны) и подсчитать, сколько записей попадает в каждый бакет. Для нахождения возрастной медианы для заданной комбинации пола и кода страны сначала подсчитывается общее число записей tot в соответствующих 128 бакетах, относящимся к возможным значениям возраста.

Содержание  Назад  Вперед