HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-03-10
1 <p>Продолжаем разбираться в типах СУБД NoSQL. В этот раз расскажем о колоночной базе данных.</p>
1 <p>Продолжаем разбираться в типах СУБД NoSQL. В этот раз расскажем о колоночной базе данных.</p>
2 <p>В колоночных БД данные хранятся в ячейках, которые сгруппированы не в строки, а в колонки. Эти колонки логически группируются в соответствующие колоночные семейства, которые могут состоять, по сути, из неограниченного числа колонок (колонки могут создаваться либо во время работы программы, либо во время определения схемы). Запись и чтение осуществляются с применением колонок, а не строк.</p>
2 <p>В колоночных БД данные хранятся в ячейках, которые сгруппированы не в строки, а в колонки. Эти колонки логически группируются в соответствующие колоночные семейства, которые могут состоять, по сути, из неограниченного числа колонок (колонки могут создаваться либо во время работы программы, либо во время определения схемы). Запись и чтение осуществляются с применением колонок, а не строк.</p>
3 <p>Если сравнивать эту базу с хранением данных в строках, как это принято в большинстве реляционных БД, то у хранения в колонках есть свои плюсы. Например, быстрый поиск/доступ и агрегация данных. SQL-базы хранят каждую строку в виде непрерывной записи на диске, то есть различные строки хранятся в различных местах на диске. В случае с колоночной структурой, БД хранят все ячейки, которые относятся к колонке, в виде непрерывной записи - это и делает выполнение операций по поиску и доступу быстрее.</p>
3 <p>Если сравнивать эту базу с хранением данных в строках, как это принято в большинстве реляционных БД, то у хранения в колонках есть свои плюсы. Например, быстрый поиск/доступ и агрегация данных. SQL-базы хранят каждую строку в виде непрерывной записи на диске, то есть различные строки хранятся в различных местах на диске. В случае с колоночной структурой, БД хранят все ячейки, которые относятся к колонке, в виде непрерывной записи - это и делает выполнение операций по поиску и доступу быстрее.</p>
4 <p><em>Простой пример</em>: если мы захотим получить список заголовков нескольких миллионов статей, то при использовании SQL-баз это станет весьма трудоёмкой задачей, ведь для извлечения заголовков понадобится проходить по каждой записи. В случае с NoSQL мы сможем получить все заголовки посредством всего одной операции доступа к диску.</p>
4 <p><em>Простой пример</em>: если мы захотим получить список заголовков нескольких миллионов статей, то при использовании SQL-баз это станет весьма трудоёмкой задачей, ведь для извлечения заголовков понадобится проходить по каждой записи. В случае с NoSQL мы сможем получить все заголовки посредством всего одной операции доступа к диску.</p>
5 <h3>Модель данных в колоночных БД:</h3>
5 <h3>Модель данных в колоночных БД:</h3>
6 <ol><li>Колоночное семейство представляет собой структуру, которая может без проблем группировать колонки и суперколонки.</li>
6 <ol><li>Колоночное семейство представляет собой структуру, которая может без проблем группировать колонки и суперколонки.</li>
7 <li>Ключ является постоянным именем записи. Ключи могут иметь различное число колонок, следовательно, БД способна расширяться неравномерно.</li>
7 <li>Ключ является постоянным именем записи. Ключи могут иметь различное число колонок, следовательно, БД способна расширяться неравномерно.</li>
8 <li>Есть термин пространства ключей. Это пространство определяет самый внешний уровень организации, обычно это имя приложения или имя БД.</li>
8 <li>Есть термин пространства ключей. Это пространство определяет самый внешний уровень организации, обычно это имя приложения или имя БД.</li>
9 <li>Колонка характеризуется упорядоченным списком элементов, которые представляют собой кортежи со значениями и именами.</li>
9 <li>Колонка характеризуется упорядоченным списком элементов, которые представляют собой кортежи со значениями и именами.</li>
10 </ol><h2>Примеры успешных решений</h2>
10 </ol><h2>Примеры успешных решений</h2>
11 <p>Наиболее известные примеры колоночных БД - Google BigTable и HBase с Cassandra.</p>
11 <p>Наиболее известные примеры колоночных БД - Google BigTable и HBase с Cassandra.</p>
12 <p>Если говорить о BigTable, то она представляет собой сжатое, проприетарное и высокопроизводительное хранилище данных от Google со следующими атрибутами: • разреженность (какие-нибудь ячейки могут иметь пустое значение); • распределённость (все данные разделяются между множеством узлов); • постоянство (данные хранятся на диске); • многомерность (более одного измерения); • сопоставление - ключ и значение; • отсортированность (как правило, сопоставления не сортируются, но данный случай является исключением).</p>
12 <p>Если говорить о BigTable, то она представляет собой сжатое, проприетарное и высокопроизводительное хранилище данных от Google со следующими атрибутами: • разреженность (какие-нибудь ячейки могут иметь пустое значение); • распределённость (все данные разделяются между множеством узлов); • постоянство (данные хранятся на диске); • многомерность (более одного измерения); • сопоставление - ключ и значение; • отсортированность (как правило, сопоставления не сортируются, но данный случай является исключением).</p>
13 <p>2-мерная таблица, которая состоит из колонок и строк, является частью реляционной системы БД.</p>
13 <p>2-мерная таблица, которая состоит из колонок и строк, является частью реляционной системы БД.</p>
14 <p>Данную таблицу мы можем представить в качестве BigTable-сопоставления следующим образом:</p>
14 <p>Данную таблицу мы можем представить в качестве BigTable-сопоставления следующим образом:</p>
15 <p>Внешние ключи "3PillarCluj", "3PillarTimisoara", "3PillarNoida" и "3PillarFairfax" - это аналоги строк. При этом: • "address" и "details" являются колоночными семействами; • в семействе "address" присутствуют колонки "city" и "pincode"; • в семействе "details" присутствуют колонки "projects" и "strength".</p>
15 <p>Внешние ключи "3PillarCluj", "3PillarTimisoara", "3PillarNoida" и "3PillarFairfax" - это аналоги строк. При этом: • "address" и "details" являются колоночными семействами; • в семействе "address" присутствуют колонки "city" и "pincode"; • в семействе "details" присутствуют колонки "projects" и "strength".</p>
16 <p>Ссылаться на колонки мы можем посредством колоночного семейства.</p>
16 <p>Ссылаться на колонки мы можем посредством колоночного семейства.</p>
17 <p><em>Источник - "<a>EXPLORING THE DIFFERENT TYPES OF NOSQL DATABASES</a>".</em></p>
17 <p><em>Источник - "<a>EXPLORING THE DIFFERENT TYPES OF NOSQL DATABASES</a>".</em></p>
18  
18