Ячейки памяти, которые служат для кратковременного хранения и преобразования данных и команд
Обновлено: 21.11.2024
Флэш-память – это технология хранения данных, основанная на высокоскоростной электрически программируемой памяти. Скорость флэш-памяти получила свое название: она записывает данные и выполняет произвольные операции ввода-вывода во флэш-памяти.
Флэш-память использует тип энергонезависимой памяти, называемой флэш-памятью. Энергонезависимая память не требует питания для поддержания целостности хранимых данных, поэтому даже при отключении питания вы не потеряете свои данные. Другими словами, энергонезависимая память не «забудет» сохраненные данные при выключении диска.
Флэш-память использует ячейки памяти для хранения данных. Ячейки с ранее записанными данными должны быть стерты перед записью новых данных. Флэш-хранилище также может быть нескольких видов: от простых USB-накопителей до корпоративных массивов на основе флэш-памяти.
Твердотельный накопитель и жесткий диск
Поскольку в флэш-накопителе используется технология интегральных схем, это твердотельная технология, то есть в нем нет движущихся частей. Когда флэш-технология используется для хранения корпоративных данных, термин "флеш-накопитель" или "флеш-массив" часто используется как синоним твердотельного накопителя (SSD).
Технология SSD отличается от технологии жестких дисков (HDD) — другого основного типа компьютерных хранилищ, который используется с 1950-х годов. В отличие от твердотельных накопителей, для хранения данных на жестких дисках используются вращающиеся диски, двигатели и головки чтения/записи, использующие магнетизм для хранения данных на вращающемся диске.
Flash Storage в центре обработки данных
Флэш-хранилище предлагает уникальные преимущества для предприятий, которые борются с быстрорастущими объемами данных и медленным и непредсказуемым доступом к данным. По мере того, как решения для хранения данных на флэш-дисках становятся все более доступными по сравнению с вращающимися дисками, предприятия теперь могут реализовать преимущества флэш-памяти в любом масштабе, в том числе:
- Ускоренная работа приложений. Часто это первое преимущество, о котором думают люди, когда думают о вспышке. Обладая в 20 раз большей производительностью по сравнению с технологией жестких дисков, флэш-память может ускорить стандартные корпоративные приложения, такие как Oracle Database, MS-SQL, SAP и VDI, а также аналитику больших данных, например базы данных Hadoop и NoSQL. Скорость флэш-памяти позволяет клиентам получать доступ к информации быстрее и эффективнее. Это позволяет ИТ-персоналу больше сосредоточиться на стратегических бизнес-целях, а не на незапланированных противопожарных учениях. И это позволяет бизнесу извлекать выгоду из новых возможностей, результатов и рынков с повышенной производительностью и более быстрым выходом на рынок.
- Улучшение экономичности центра обработки данных. С развитием технологий флэш-памяти высокой плотности современные решения для хранения данных на основе флэш-памяти обеспечивают более высокую производительность и большую емкость, занимая небольшую часть площади центра обработки данных. Поскольку их объемы данных продолжают расти, предприятия со временем могут значительно сократить расходы за счет упрощения управления и сокращения затрат на пространство, электроэнергию и охлаждение.
- Перспективная инфраструктура. Модернизация вашего центра обработки данных с помощью флэш-памяти — важный этап цифровой трансформации, но важно выбрать флэш-систему, которая поддерживает меняющиеся потребности бизнеса. Не все флеш-решения одинаковы. Системы All-Flash, обеспечивающие горизонтальное масштабирование без прерывания работы, позволяют начать с малого и постепенно расширяться. Флэш-хранилище с поддержкой NVMe также может помочь защитить вашу инфраструктуру от новых технологий в будущем и исключить дорогостоящие и разрушительные обновления вилочного погрузчика. Если ваша ИТ-стратегия требует потенциального облачного элемента в будущем, флэш-система, поддерживающая интеграцию с облаком, обеспечит вам максимальную гибкость в будущем.
Благодаря самой интегрированной в облачную среду системе хранения данных на флэш-дисках и наибольшей гибкости для поддержки новых технологий флэш-памяти NetApp позволяет вам легко использовать преимущества инноваций в области флэш-памяти, не нарушая работу вашего бизнеса.
Будущее флэш-накопителей
Исторически твердотельные накопители разрабатывались с учетом того же интерфейса ввода-вывода, что и жесткий диск (HDD), например интерфейсов SATA и SAS, для подключения к главному компьютеру. Хотя большинство твердотельных накопителей сегодня используют флэш-память на основе 3D TLC NAND, быстрое развитие технологий энергонезависимой памяти Express (NVMe), NVMe over Fabrics (NVMe-oF) и памяти класса хранения (SCM) открывает огромный потенциал в центрах обработки данных. .
NVMe – это интерфейсный протокол для доступа к флэш-накопителям через шину PCI Express (PCIe). В отличие от традиционных архитектур all-flash, которые ограничены одной последовательной очередью команд, NVMe поддерживает десятки тысяч параллельных очередей, каждая из которых способна поддерживать десятки тысяч одновременных команд.
NVMe-oF — это интерфейс на стороне хоста для систем хранения, который расширяет многие из соответствующих возможностей NVMe за счет удаленного прямого доступа к памяти (RDMA) или структуры Fibre Channel. С помощью NVMe-oF можно масштабировать до большого количества устройств NVMe даже на расстоянии.
SCM, также известная как энергонезависимая память (PMEM), представляет собой новый тип мультимедийной технологии, которая стирает грань между памятью и хранилищем, поскольку может использоваться в обоих случаях. Примеры SCM включают 3D XPoint от Intel и носитель Z-NAND от Samsung.
При широком развертывании NVMe и NVMe-oF, особенно в сочетании с SCM, могут значительно ускорить работу приложений нового поколения, обеспечив в 10 раз более низкую задержку и максимальное количество операций ввода-вывода в секунду.
NetApp первой выпустила на рынок твердотельные накопители емкостью 15 ТБ на основе технологии 3D NAND. В настоящее время компания возглавляет будущее флэш-памяти благодаря эффективному видению интеграции новых систем хранения данных на основе флэш-памяти на основе NVMe, NVMe-oF и SCM в существующую инфраструктуру без прерывания работы.
Флэш-память – это технология хранения данных, основанная на высокоскоростной электрически программируемой памяти. Скорость флэш-памяти получила свое название: она записывает данные и выполняет произвольные операции ввода-вывода во флэш-памяти.
Флэш-память использует тип энергонезависимой памяти, называемой флэш-памятью. Энергонезависимая память не требует питания для поддержания целостности хранимых данных, поэтому даже при отключении питания вы не потеряете свои данные. Другими словами, энергонезависимая память не «забудет» сохраненные данные при выключении диска.
Флэш-память использует ячейки памяти для хранения данных. Ячейки с ранее записанными данными должны быть стерты перед записью новых данных. Флэш-хранилище также может быть нескольких видов: от простых USB-накопителей до корпоративных массивов на основе флэш-памяти.
Твердотельный накопитель и жесткий диск
Поскольку в флэш-накопителе используется технология интегральных схем, это твердотельная технология, то есть в нем нет движущихся частей. Когда флэш-технология используется для хранения корпоративных данных, термин "флеш-накопитель" или "флеш-массив" часто используется как синоним твердотельного накопителя (SSD).
Технология SSD отличается от технологии жестких дисков (HDD) — другого основного типа компьютерных хранилищ, который используется с 1950-х годов. В отличие от твердотельных накопителей, для хранения данных на жестких дисках используются вращающиеся диски, двигатели и головки чтения/записи, использующие магнетизм для хранения данных на вращающемся диске.
Flash Storage в центре обработки данных
Флэш-хранилище предлагает уникальные преимущества для предприятий, которые борются с быстрорастущими объемами данных и медленным и непредсказуемым доступом к данным. По мере того, как решения для хранения данных на флэш-дисках становятся все более доступными по сравнению с вращающимися дисками, предприятия теперь могут реализовать преимущества флэш-памяти в любом масштабе, в том числе:
- Ускоренная работа приложений. Часто это первое преимущество, о котором думают люди, когда думают о вспышке. Обладая в 20 раз большей производительностью по сравнению с технологией жестких дисков, флэш-память может ускорить стандартные корпоративные приложения, такие как Oracle Database, MS-SQL, SAP и VDI, а также аналитику больших данных, например базы данных Hadoop и NoSQL. Скорость флэш-памяти позволяет клиентам получать доступ к информации быстрее и эффективнее. Это позволяет ИТ-персоналу больше сосредоточиться на стратегических бизнес-целях, а не на незапланированных противопожарных учениях. И это позволяет бизнесу извлекать выгоду из новых возможностей, результатов и рынков с повышенной производительностью и более быстрым выходом на рынок.
- Улучшение экономичности центра обработки данных. С развитием технологий флэш-памяти высокой плотности современные решения для хранения данных на основе флэш-памяти обеспечивают более высокую производительность и большую емкость, занимая небольшую часть площади центра обработки данных. Поскольку их объемы данных продолжают расти, предприятия со временем могут значительно сократить расходы за счет упрощения управления и сокращения затрат на пространство, электроэнергию и охлаждение.
- Перспективная инфраструктура. Модернизация вашего центра обработки данных с помощью флэш-памяти — важный этап цифровой трансформации, но важно выбрать флэш-систему, которая поддерживает меняющиеся потребности бизнеса. Не все флеш-решения одинаковы. Системы All-Flash, обеспечивающие горизонтальное масштабирование без прерывания работы, позволяют начать с малого и постепенно расширяться. Флэш-хранилище с поддержкой NVMe также может помочь защитить вашу инфраструктуру от новых технологий в будущем и исключить дорогостоящие и разрушительные обновления вилочного погрузчика. Если ваша ИТ-стратегия требует потенциального облачного элемента в будущем, флэш-система, поддерживающая интеграцию с облаком, обеспечит вам максимальную гибкость в будущем.
Благодаря самой интегрированной в облачную среду системе хранения данных на флэш-дисках и наибольшей гибкости для поддержки новых технологий флэш-памяти NetApp позволяет вам легко использовать преимущества инноваций в области флэш-памяти, не нарушая работу вашего бизнеса.
Будущее флэш-накопителей
Исторически твердотельные накопители разрабатывались с учетом того же интерфейса ввода-вывода, что и жесткий диск (HDD), например интерфейсов SATA и SAS, для подключения к главному компьютеру. Хотя большинство твердотельных накопителей сегодня используют флэш-память на основе 3D TLC NAND, быстрое развитие технологий энергонезависимой памяти Express (NVMe), NVMe over Fabrics (NVMe-oF) и памяти класса хранения (SCM) открывает огромный потенциал в центрах обработки данных. .
NVMe – это интерфейсный протокол для доступа к флэш-накопителям через шину PCI Express (PCIe).В отличие от традиционных архитектур all-flash, которые ограничены одной последовательной очередью команд, NVMe поддерживает десятки тысяч параллельных очередей, каждая из которых способна поддерживать десятки тысяч одновременных команд.
NVMe-oF — это интерфейс на стороне хоста для систем хранения, который расширяет многие из соответствующих возможностей NVMe за счет удаленного прямого доступа к памяти (RDMA) или структуры Fibre Channel. С помощью NVMe-oF можно масштабировать до большого количества устройств NVMe даже на расстоянии.
SCM, также известная как энергонезависимая память (PMEM), представляет собой новый тип мультимедийной технологии, которая стирает грань между памятью и хранилищем, поскольку может использоваться в обоих случаях. Примеры SCM включают 3D XPoint от Intel и носитель Z-NAND от Samsung.
При широком развертывании NVMe и NVMe-oF, особенно в сочетании с SCM, могут значительно ускорить работу приложений нового поколения, обеспечив в 10 раз более низкую задержку и максимальное количество операций ввода-вывода в секунду.
NetApp первой выпустила на рынок твердотельные накопители емкостью 15 ТБ на основе технологии 3D NAND. В настоящее время компания возглавляет будущее флэш-памяти благодаря эффективному видению интеграции новых систем хранения данных на основе флэш-памяти на основе NVMe, NVMe-oF и SCM в существующую инфраструктуру без прерывания работы.
Эта глава поможет вам создать хранилище данных и управлять им, а также обсуждает:
Обзор загрузки и преобразования в хранилищах данных
Преобразование данных часто является самой сложной и, с точки зрения времени обработки, самой дорогостоящей частью процесса извлечения, преобразования и загрузки (ETL). Они могут варьироваться от простых преобразований данных до чрезвычайно сложных методов очистки данных. Многие, если не все, преобразования данных могут выполняться в базе данных Oracle, хотя преобразования часто выполняются и вне базы данных (например, в неструктурированных файлах).
В этой главе представлены методы реализации масштабируемых и эффективных преобразований данных в базе данных Oracle. Примеры в этой главе относительно просты. Преобразование данных в реальном мире часто бывает значительно сложнее. Однако методы преобразования, представленные в этой главе, соответствуют большинству реальных требований к преобразованию данных, часто с большей масштабируемостью и меньшим количеством программирования, чем альтернативные подходы.
В этой главе не ставится цель проиллюстрировать все типичные преобразования, которые могут возникнуть в хранилище данных, а продемонстрировать типы фундаментальных технологий, которые можно применять для реализации этих преобразований, и дать рекомендации по выбору наилучшего приемы.
Поскольку ETL может усложняться и страдать от низкой производительности, Oracle Database предоставляет пользовательский интерфейс, который позволяет отслеживать операции с базой данных, которые являются частью плана ETL, и составлять отчеты. Операция базы данных — это набор связанных задач базы данных, определенных конечными пользователями или кодом приложения. Мониторинг работы базы данных чрезвычайно полезен для устранения неполадок в неоптимально выполняющемся задании и помогает определить, где и сколько ресурсов потребляется на любом этапе. Таким образом, операции с базой данных позволяют отслеживать связанную информацию, выявлять узкие места в производительности, а также сокращать время на настройку проблем с производительностью базы данных.
Хранилища данных: процесс трансформации
С точки зрения архитектуры вы можете преобразовывать данные следующими способами:
Многоэтапное преобразование данных в хранилищах данных
Логика преобразования данных для большинства хранилищ данных состоит из нескольких шагов. Например, при преобразовании новых записей для вставки в таблицу продаж могут быть отдельные шаги логического преобразования для проверки каждого ключа измерения.
Рисунок 17-1 предлагает графическое представление логики преобразования.
Рис. 17-1 Многоэтапное преобразование данных
При использовании Oracle Database в качестве механизма преобразования распространенной стратегией является реализация каждого преобразования как отдельной операции SQL и создание отдельной временной промежуточной таблицы (например, таблиц new_sales_step1 и new_sales_step2 на рис. 17-1) для хранения дополнительные результаты для каждого шага. Эта стратегия загрузки и преобразования также обеспечивает естественную схему контрольных точек для всего процесса преобразования, что позволяет легче отслеживать и перезапускать процесс. Однако недостатком многостадийности является увеличение требований к пространству и времени.
Можно также объединить множество простых логических преобразований в одну инструкцию SQL или одну процедуру PL/SQL. Это может обеспечить более высокую производительность, чем выполнение каждого шага по отдельности, но также может вызвать трудности при изменении, добавлении или удалении отдельных преобразований, а также при восстановлении после неудачных преобразований.
Конвейерное преобразование данных в хранилищах данных
Процесс ETL можно кардинально изменить, и база данных станет неотъемлемой частью решения ETL.
Новая функциональность делает некоторые из ранее необходимых шагов процесса устаревшими, а некоторые другие можно реконструировать, чтобы улучшить поток данных и преобразование данных, чтобы сделать их более масштабируемыми и бесперебойными. Задача переходит от процесса последовательного преобразования, а затем загрузки (большинство задач выполняется вне базы данных) или процесса загрузки, а затем преобразования к расширенному преобразованию во время загрузки.
Oracle предлагает широкий спектр новых возможностей для решения всех проблем и задач, связанных со сценарием ETL. Важно понимать, что база данных предлагает функциональные возможности инструментария, а не пытается найти универсальное решение. Базовая база данных должна обеспечивать наиболее подходящий поток процессов ETL для конкретной потребности клиента, а не диктовать или ограничивать его с технической точки зрения. На рис. 17-2 показаны новые функции, которые обсуждаются в последующих разделах.
Рис. 17-2 Конвейерное преобразование данных
Промежуточная область в хранилищах данных
Общая скорость загрузки определяется тем, насколько быстро необработанные данные могут быть прочитаны из промежуточной области и записаны в целевую таблицу в базе данных. Настоятельно рекомендуется размещать необработанные данные на как можно большем количестве физических дисков, чтобы чтение необработанных данных не было узким местом во время загрузки.
Отличным местом для размещения данных является файловая система базы данных Oracle (DBFS). DBFS создает монтируемую файловую систему, которую можно использовать для доступа к файлам, хранящимся в базе данных в виде больших объектов SecureFiles. DBFS похожа на NFS тем, что предоставляет общую сетевую файловую систему, которая выглядит как локальная файловая система. Oracle рекомендует создавать DBFS в базе данных, отдельной от хранилища данных, и монтировать файловую систему с использованием параметра DIRECT_IO, чтобы избежать состязаний в кэше системных страниц при перемещении файлов необработанных данных в файловую систему и из нее. Дополнительную информацию о настройке DBFS можно найти в Oracle Database SecureFiles and Large Objects Developer's Guide .
Механизмы загрузки для хранилищ данных
Вы можете использовать следующие механизмы для загрузки хранилища данных:
Загрузка хранилища данных с помощью SQL*Loader
Прежде чем какие-либо преобразования данных могут происходить в базе данных, необработанные данные должны стать доступными для базы данных. Один из подходов — загрузить его в базу данных. Транспортировка в хранилищах данных, обсуждает несколько методов транспортировки данных в хранилище данных Oracle. Возможно, самый распространенный метод переноса данных — это плоские файлы.
SQL*Loader используется для перемещения данных из плоских файлов в хранилище данных Oracle. Во время этой загрузки данных SQL*Loader также можно использовать для реализации базовых преобразований данных. При использовании SQL*Loader с прямым путем основные операции с данными, такие как преобразование типов данных и простая обработка NULL, могут быть автоматически разрешены во время загрузки данных. Большинство хранилищ данных используют прямую загрузку из соображений производительности.
Загрузчик с обычным путем предоставляет более широкие возможности для преобразования данных, чем загрузчик с прямым путем: функции SQL можно применять к любому столбцу по мере загрузки этих значений. Это обеспечивает широкие возможности для преобразований во время загрузки данных. Однако загрузчик обычного пути работает медленнее, чем загрузчик прямого пути. По этим причинам загрузчик с обычным путем следует рассматривать в первую очередь для загрузки и преобразования небольших объемов данных.
Ниже приведен простой пример управляющего файла SQL*Loader для загрузки данных в таблицу продаж образца схемы sh из внешнего файла sh_sales.dat . Внешний плоский файл sh_sales.dat состоит из данных о транзакциях продаж, агрегированных на ежедневном уровне. Не все столбцы этого внешнего файла загружаются в продажи. Этот внешний файл также используется в качестве источника для загрузки второй таблицы фактов схемы образца sh, которая выполняется с использованием внешней таблицы:
Ниже показан управляющий файл ( sh_sales.ctl ), загружающий таблицу продаж:
Его можно загрузить с помощью следующей команды:
В режиме SQL*Loader Express управляющий файл не используется. Вместо этого он использует определения столбцов таблицы для определения типов входных данных.
Загрузка хранилища данных с внешними таблицами
Еще один подход к работе с внешними источниками данных — использование внешних таблиц. Функция внешних таблиц Oracle позволяет использовать внешние данные в качестве виртуальной таблицы, к которой можно запрашивать и объединять напрямую и параллельно, не требуя предварительной загрузки внешних данных в базу данных. Затем вы можете использовать SQL, PL/SQL и Java для доступа к внешним данным.
Внешние таблицы позволяют объединить фазу загрузки с фазой преобразования. Процесс преобразования может быть объединен с процессом загрузки без прерывания потоковой передачи данных.Больше нет необходимости размещать данные внутри базы данных для дальнейшей обработки внутри базы данных, такой как сравнение или преобразование. Например, функции преобразования обычной загрузки можно использовать для оператора INSERT AS SELECT прямого пути в сочетании с SELECT из внешней таблицы. Начиная с Oracle Database 12c, база данных автоматически собирает статистику таблиц в рамках операции массовой загрузки (CTAS и IAS), подобно тому, как статистика собирается при создании индекса. Собирая статистику во время загрузки данных, вы избегаете дополнительных операций сканирования и предоставляете необходимую статистику, как только данные становятся доступными для пользователей. Обратите внимание, что в случае оператора IAS статистика собирается только в том случае, если таблица, в которую вставляются данные, пуста.
Основное различие между внешними и обычными таблицами заключается в том, что внешне организованные таблицы доступны только для чтения. Никакие операции DML ( UPDATE / INSERT / DELETE ) невозможны, и для них нельзя создавать индексы.
Внешние таблицы в основном совместимы с существующими функциями SQL*Loader и в большинстве случаев обеспечивают превосходную функциональность. Внешние таблицы особенно полезны для сред, где полный внешний источник должен быть объединен с существующими объектами базы данных или когда данные необходимо преобразовать сложным образом. Например, в отличие от SQL*Loader, вы можете применить любое произвольное преобразование SQL и использовать метод прямой вставки. Кроме того, вы можете указать исполняемую программу (например, zcat ), которая обрабатывает файлы (например, сжатые файлы данных) и позволяет Oracle Database использовать выходные данные (например, несжатые файлы данных), что означает, что вы можете загружать большие объемы данных. сжатые данные без предварительной распаковки на диске.
Вы можете создать внешнюю таблицу с именем sales_transactions_ext , представляющую структуру полных данных о транзакциях продаж, представленных во внешнем файле sh_sales.gz . Отдел продукта особенно заинтересован в анализе затрат на продукт и время. Таким образом, вы создаете таблицу фактов с именем cost в схеме sh. Операционные исходные данные такие же, как и для таблицы фактов продаж. Однако, поскольку вы не исследуете каждую предоставленную информацию об измерениях, данные в таблице фактов о затратах имеют более грубую детализацию, чем в таблице фактов о продажах, например, все различные каналы распространения агрегируются.
Вы не можете загрузить данные в таблицу фактов о затратах без применения ранее упомянутой агрегации подробной информации из-за подавления некоторых параметров.
Структура внешних таблиц предлагает решение этой проблемы. В отличие от SQL*Loader, в котором вам нужно было бы загрузить данные перед применением агрегации, вы можете объединить загрузку и преобразование в одном операторе SQL DML, как показано ниже. Вам не нужно временно размещать данные перед вставкой в целевую таблицу.
Каталоги объектов должны уже существовать и указывать на директорию, содержащую файл sh_sales.gz, а также на директорию, содержащую плохие файлы и файлы журнала.
Внешнюю таблицу теперь можно использовать из базы данных, получая доступ только к некоторым столбцам внешних данных, группируя данные и вставляя их в таблицу фактов о затратах:
Справочник по языку Oracle Database SQL для полного описания синтаксиса внешней таблицы
Cloud Bigtable – это малозаполненная таблица, которая может содержать миллиарды строк и тысячи столбцов, что позволяет хранить терабайты и даже петабайты данных. Индексируется одно значение в каждой строке; это значение известно как ключ строки. Bigtable идеально подходит для хранения очень больших объемов данных с одним ключом с очень низкой задержкой. Он поддерживает высокую скорость чтения и записи с малой задержкой и является идеальным источником данных для операций MapReduce.
Bigtable предоставляется приложениям через несколько клиентских библиотек, включая поддерживаемое расширение библиотеки Apache HBase для Java. В результате он интегрируется с существующей экосистемой программного обеспечения больших данных Apache с открытым исходным кодом.
Мощные внутренние серверы Bigtable предлагают несколько ключевых преимуществ по сравнению с самоуправляемой установкой HBase:
- Невероятная масштабируемость. Bigtable масштабируется прямо пропорционально количеству машин в вашем кластере. У самоуправляемой установки HBase есть узкое место в дизайне, которое ограничивает производительность после достижения определенного порога. Bigtable не имеет этого узкого места, поэтому вы можете масштабировать свой кластер, чтобы обрабатывать больше операций чтения и записи.
- Простое администрирование. Bigtable прозрачно обрабатывает обновления и перезапуски и автоматически поддерживает высокую устойчивость данных. Чтобы реплицировать ваши данные, просто добавьте второй кластер к вашему экземпляру, и репликация начнется автоматически. Больше не нужно управлять репликами или регионами; просто создайте схемы таблиц, а Bigtable сделает все остальное за вас.
- Изменение размера кластера без простоев. Вы можете увеличить размер кластера Bigtable на несколько часов, чтобы справиться с большой нагрузкой, а затем снова уменьшить размер кластера — и все это без простоев. После изменения размера кластера Bigtable обычно требуется всего несколько минут под нагрузкой, чтобы сбалансировать производительность на всех узлах кластера.
Для чего это нужно
Bigtable идеально подходит для приложений, которым требуется очень высокая пропускная способность и масштабируемость для данных типа "ключ-значение", где размер каждого значения обычно не превышает 10 МБ. Bigtable также отлично подходит в качестве механизма хранения для пакетных операций MapReduce, потоковой обработки/аналитики и приложений машинного обучения.
Вы можете использовать Bigtable для хранения и запроса всех следующих типов данных:
- Данные временного ряда, такие как использование ЦП и памяти с течением времени для нескольких серверов.
- Маркетинговые данные, такие как история покупок и предпочтения клиентов.
- Финансовые данные, такие как история транзакций, курсы акций и обменные курсы валют.
- Данные Интернета вещей, например отчеты об использовании счетчиков энергии и бытовой техники.
- Графические данные, например информация о том, как пользователи связаны друг с другом.
Модель хранения Bigtable
Bigtable хранит данные в масштабируемых таблицах, каждая из которых представляет собой отсортированную карту "ключ-значение". Таблица состоит из строк, каждая из которых обычно описывает один объект, и столбцов, содержащих отдельные значения для каждой строки. Каждая строка индексируется одним ключом строки, а связанные друг с другом столбцы обычно группируются в семейство столбцов. Каждый столбец идентифицируется комбинацией семейства столбцов и квалификатора столбца, который является уникальным именем в семействе столбцов.
Каждое пересечение строки/столбца может содержать несколько ячеек. Каждая ячейка содержит уникальную версию данных с отметкой времени для этой строки и столбца. Хранение нескольких ячеек в столбце обеспечивает запись того, как сохраненные данные для этой строки и столбца изменились с течением времени. Столов Bigtable мало; если столбец не используется в определенной строке, он не занимает места.
На этой иллюстрации следует обратить внимание на несколько моментов:
- Столбцы в строке могут не использоваться.
- Каждая ячейка в данной строке и столбце имеет уникальную временную метку (t).
Архитектура больших таблиц
Как показано на диаграмме, все клиентские запросы перед отправкой на узел Bigtable проходят через интерфейсный сервер. (В оригинальном документе Bigtable эти узлы называются «планшетными серверами».) Узлы организованы в кластер Bigtable, который принадлежит экземпляру Bigtable, контейнеру для кластера.
Каждый узел в кластере обрабатывает подмножество запросов к кластеру. Добавляя узлы в кластер, вы можете увеличить количество одновременных запросов, которые может обрабатывать кластер, а также максимальную пропускную способность для всего кластера. Если вы включите репликацию, добавив второй кластер, вы также сможете направлять разные типы трафика на разные кластеры и сможете переключиться на один кластер, если другой кластер станет недоступен.
Таблица Bigtable разделена на блоки смежных строк, называемые таблицами, чтобы помочь сбалансировать рабочую нагрузку запросов. (Планшеты аналогичны регионам HBase.) Таблетки хранятся в Colossus, файловой системе Google, в формате SSTable. SSTable обеспечивает постоянную упорядоченную неизменную карту ключей к значениям, где и ключи, и значения являются произвольными байтовыми строками. Каждый планшет связан с определенным узлом Bigtable. В дополнение к файлам SSTable все записи сохраняются в общем журнале Colossus, как только они подтверждаются Bigtable, что обеспечивает повышенную надежность.
Важно отметить, что данные никогда не хранятся в самих узлах Bigtable; каждый узел имеет указатели на набор планшетов, хранящихся на Colossus. В результате:
- Перебалансировка планшетов с одного узла на другой выполняется очень быстро, поскольку фактические данные не копируются. Bigtable просто обновляет указатели для каждого узла.
- Восстановление после сбоя узла Bigtable происходит очень быстро, поскольку на новый узел необходимо перенести только метаданные.
- При сбое узла Bigtable данные не теряются.
Дополнительную информацию о том, как работать с этими основными строительными блоками, см. в разделе Экземпляры, кластеры и узлы.
Балансировка нагрузки
Каждая зона Bigtable управляется основным процессом, который уравновешивает рабочую нагрузку и объем данных в кластерах. Этот процесс делит более загруженные/большие планшеты пополам и объединяет менее доступные/меньшие планшеты вместе, перераспределяя их между узлами по мере необходимости. Если определенный планшет получает всплеск трафика, Bigtable разделяет планшет на две части, а затем перемещает один из новых планшетов на другой узел.Bigtable автоматически управляет всем разделением, слиянием и перебалансировкой, избавляя пользователей от необходимости вручную администрировать свои планшеты. В разделе "Понимание производительности Bigtable" содержится более подробная информация об этом процессе.
Чтобы получить от Bigtable максимальную производительность при записи, важно как можно более равномерно распределять операции записи по узлам. Одним из способов достижения этой цели является использование ключей строк, которые не следуют предсказуемому порядку. Например, имена пользователей, как правило, более или менее равномерно распределяются по всему алфавиту, поэтому включение имени пользователя в начале ключа строки приведет к более равномерному распределению записей.
Подробнее о выборе подходящего ключа строки для ваших данных см. в разделе Выбор ключа строки.
Поддерживаемые типы данных
Использование памяти и диска
В следующих разделах описано, как некоторые компоненты Bigtable влияют на использование памяти и диска для вашего экземпляра.
Неиспользуемые столбцы
Столбцы, которые не используются в строке Bigtable, не занимают места в этой строке. Каждая строка, по сути, представляет собой набор записей типа "ключ-значение", где ключ представляет собой комбинацию семейства столбцов, квалификатора столбца и метки времени. Если строка не содержит значения для определенного столбца, запись типа "ключ-значение" просто отсутствует.
Определители столбцов
Квалификаторы столбцов занимают место в строке, поскольку каждый квалификатор столбца, используемый в строке, хранится в этой строке. В результате часто эффективно использовать квалификаторы столбцов в качестве данных.
Сжатия
Bigtable периодически переписывает ваши таблицы, чтобы удалить удаленные записи и реорганизовать ваши данные, чтобы операции чтения и записи были более эффективными. Этот процесс известен как сжатие. Настройки конфигурации для сжатия отсутствуют — Bigtable автоматически сжимает ваши данные.
Мутации и удаления
Мутации или изменения в строке занимают дополнительное место для хранения, поскольку Bigtable хранит мутации последовательно и только периодически сжимает их. Когда Bigtable сжимает таблицу, она удаляет значения, которые больше не нужны. Если вы обновите значение в ячейке, исходное значение и новое значение будут храниться на диске в течение некоторого времени, пока данные не будут сжаты.
Удаления также занимают дополнительное место для хранения, по крайней мере, в краткосрочной перспективе, потому что удаления на самом деле являются особым типом мутации. Пока таблица не сжата, при удалении используется дополнительное хранилище, а не освобождается место.
Сжатие данных
Bigtable автоматически сжимает ваши данные с помощью интеллектуального алгоритма. Вы не можете настроить параметры сжатия для своей таблицы. Однако полезно знать, как хранить данные, чтобы их можно было эффективно сжимать:
- Случайные данные не могут быть сжаты так же эффективно, как данные по шаблону. Шаблонные данные включают текст, например страницу, которую вы сейчас читаете.
- Сжатие работает лучше всего, если одинаковые значения находятся рядом друг с другом либо в одной строке, либо в соседних строках. Если вы расположите ключи строк так, чтобы строки с идентичными фрагментами данных находились рядом друг с другом, данные могут быть эффективно сжаты.
- Сжимайте значения размером более 1 МиБ перед их сохранением в Bigtable. Это экономит циклы ЦП, память сервера и пропускную способность сети. Bigtable автоматически отключает сжатие для значений больше 1 МиБ.
Долговечность данных
Когда вы используете Bigtable, ваши данные хранятся в Colossus, внутренней высоконадежной файловой системе Google, с использованием устройств хранения в центрах обработки данных Google. Вам не нужно запускать кластер HDFS или любую другую файловую систему, чтобы использовать Bigtable. Если ваш экземпляр использует репликацию, Bigtable поддерживает одну копию ваших данных в Colossus для каждого кластера в экземпляре. Каждая копия находится в отдельной зоне или регионе, что еще больше повышает надежность.
За кулисами Google использует запатентованные методы хранения, чтобы обеспечить надежность данных, превосходящую стандартную трехстороннюю репликацию HDFS. Кроме того, мы создаем копии ваших данных для защиты от катастрофических событий и обеспечения аварийного восстановления.
Модель согласованности
Экземпляры Bigtable с одним кластером обеспечивают высокую согласованность. По умолчанию экземпляры, имеющие более одного кластера, обеспечивают конечную согласованность, но в некоторых случаях их можно настроить для обеспечения согласованности «чтение-в-записи» или строгой согласованности, в зависимости от рабочей нагрузки и настроек профиля приложения.
Безопасность
Доступ к вашим таблицам Bigtable контролируется вашим проектом Google Cloud и ролями управления идентификацией и доступом (IAM), которые вы назначаете пользователям. Например, вы можете назначить роли IAM, которые запрещают отдельным пользователям чтение из таблиц, запись в таблицы или создание новых экземпляров. Если у кого-то нет доступа к вашему проекту или у него нет роли IAM с соответствующими разрешениями для Bigtable, он не сможет получить доступ ни к одной из ваших таблиц.
Вы можете управлять безопасностью на уровне проекта, экземпляра и таблицы.Bigtable не поддерживает ограничения безопасности на уровне строк, столбцов или ячеек.
Шифрование
По умолчанию все данные, хранящиеся в Google Cloud, включая данные в таблицах Bigtable, шифруются в состоянии покоя с использованием тех же надежных систем управления ключами, которые мы используем для наших собственных зашифрованных данных.
Если вам нужен больший контроль над ключами, используемыми для шифрования хранимых данных Bigtable, вы можете использовать ключи шифрования, управляемые клиентом (CMEK).
Резервные копии
Резервные копии больших таблиц позволяют сохранить копию схемы и данных таблицы, а затем восстановить данные из резервной копии в новую таблицу позднее. Резервные копии могут помочь вам восстановиться после повреждения данных на уровне приложения или после ошибок оператора, таких как случайное удаление таблицы.
Другие варианты хранения и базы данных
Bigtable не является реляционной базой данных. Он не поддерживает SQL-запросы, объединения или многострочные транзакции.
- Если вам нужна полная поддержка SQL для системы онлайн-обработки транзакций (OLTP), обратите внимание на Cloud Spanner или Cloud SQL.
- Если вам нужны интерактивные запросы в системе интерактивной аналитической обработки (OLAP), рассмотрите возможность использования BigQuery.
- Если вам нужно хранить высокоструктурированные объекты в базе данных документов с поддержкой транзакций ACID и SQL-подобных запросов, рассмотрите Firestore.
- Для хранения данных в памяти с малой задержкой рассмотрите вариант Memorystore.
- Чтобы синхронизировать данные между пользователями в режиме реального времени, воспользуйтесь базой данных Firebase Realtime.
Дополнительную информацию о других параметрах базы данных см. в обзоре служб баз данных. Google Cloud также предлагает различные варианты хранения.
Что дальше
- Попробуйте краткое руководство по работе с Bigtable с помощью cbt , инструмента командной строки для Bigtable. Если вы знакомы с HBase, попробуйте краткое руководство по оболочке HBase.
- Используйте кодовую лабораторию Bigtable.
- Подробнее об экземплярах, кластерах и узлах Bigtable.
- Узнайте, как создать экземпляр Bigtable.
- Подробнее о клиентских библиотеках для Bigtable.
- Прочитайте исходную статью OSDI о Bigtable.
Если не указано иное, содержимое этой страницы предоставляется по лицензии Creative Commons Attribution 4.0, а образцы кода — по лицензии Apache 2.0. Подробнее см. в Правилах сайта Google Developers. Java является зарегистрированным товарным знаком Oracle и/или ее дочерних компаний.
Читайте также: