WebMoney: WMZ Z294115950220 WMR R409981405661 WME E134003968233 |
Visa 4274 3200 2453 6495 |
Эта глава предоставляет информацию о главных программных модулях,
составляющих ядро Как описано в другом месте, ядро Таблица 4.1. Ядерные блоки NDB и
потоки ядра NDB NDB 8.0.22 и позже предусматривает следующие комбинации: Можно получить больше информации об этих потоках из документации для
параметра конфигурации Этот блок ответственен за обработку резервных копий онлайн и контрольных
точек. Это находится в
Этот блок ответственен за управление конфигурацией взаимодействия между
ядерными блоками и виртуальной машиной Во время запуска этот блок ассигнует большую часть памяти, необходимой для
буферов, используемых ядром Также называемый Блок Когда новый кортеж вставляется, блок
Как блок См. также раздел
4.10. Этот блок, блок словаря данных, находится в
Этот блок осуществляется в следующих файлах: Этот блок предоставляет услуги управления распределением данных для
получения информации о распределении в каждой таблице, разделении таблицы
и точной копии фрагмента каждого разделения. Это также ответственно за
обработку местных и глобальных контрольных точек.
Этот блок часто использует блоки
Этот блок осуществляется как класс Блок Узел API общается с этим блоком, чтобы получить данные
Этот блок осуществляется в файле
Это местный блок запроса низкого уровня, который управляет данными и
транзакциями, местными к узлам данных группы, и действует как координатор
двухфазных фиксаций. Это ответственно (когда вызвано операционным
координатором) за выполнение операций на кортежах, выполняя эту задачу с
помощью блока
Start/Restart Module.
Этот модуль обращается со следующими фазами: Start phase 1.
Загружает ссылку на блок и ID процессора. Start phase 2. Начинает все отчеты в блоке, соединяет
Start phase 4. Соединяет каждого
Fragment addition and deletion module.
Используется словарем данных, чтобы создать новые фрагменты и
удалить старые фрагменты. Execution module. Этот модуль обращается с получением
сообщения Log module. Модуль регистрации обращается с чтением и
написанием регистрации. Это также ответственно за перезапуски системы
обработки и управляет системным перезапуском в
Transaction module. Этот модуль обращается с
фазами передачи и завершения. TC failure module.
Обрабатывает сбои в операционном координаторе. Scan module. Этот модуль содержит код,
который обращается с просмотром конкретного фрагмента. Это работает под
контролем операционного координатора и Node recovery module. Это используется, когда узел потерпел
неудачу, копируя произведенный фрагмент к новой точной копии фрагмента.
Это также закрывает все связи с неудачным узлом. LCP module. Этот модуль обращается с выполнением и контролем
местных контрольных точек в
Global checkpoint module. Помогает
File handling module. Это включает много подмодулей: Прием сигнала. Нормальное функционирование. Изменение файла. Начальный перезапуск. Системный перезапуск, фаза 1. Системный перезапуск, фаза 2. Системный перезапуск, фаза 3. Системный перезапуск, фаза 4. Ошибки. В этом каталоге также есть файлы в подкаталоге
Этот блок также обрабатывает журналов отката и помогает наблюдать блоки
Этот блок осуществляет многократные курсоры в ядре NDB, обеспечивая
обращения для соединений, сниженных от узлов SQL. Это содержит следующие
файлы, которые могут быть найдены в
Это операционный координатор, который обращается с распределенными
транзакциями и другими операциями по данным на глобальном уровне (в
противоположность
Trigger and index data (TcDefinedTriggerData).
Отчет, формирующий список активных триггеров для каждой таблицы.
Этими отчетами управляет пул триггеров, в котором запись сохранена
каждый раз, когда триггер активирован. Fired trigger data (TcFiredTriggerData).
Отчет, формирующий список запущенных триггеров для данной транзакции. Index data (TcIndexData). Этот отчет формирует списки активных
индексов для каждой таблицы. Такими отчетами управляет бассейн индекса, в
котором сохранен каждый отчет индекса каждый раз,
когда индекс создан. API connection record (ApiConnectRecord).
Запись API соединения содержит отчет связи, с которой соединяется приложение.
Оно может послать одну операцию за один раз. Это может немедленно послать
новую операцию после отправки предыдущей операции.
Это означает, что несколько операций могут быть активными в единственной
транзакции в операционном координаторе, который достигается при помощи записи
API соединения. Каждая активная операция обработана записью соединения TC,
как только она посылает запрос обработчику локального запроса, это готово
получить новые операции. Запись соединения
Transaction coordinator connection record (TcConnectRecord).
Cache record (CacheRecord).
Этот отчет используется между приемом
Host record (HostRecord).
Этот отчет содержит статус alive
каждого узла в системе и выровнен по 128 байт. Table record (TableRecord).
Этот отчет содержит текущие версии схемы всех таблиц в системе. Scan record (ScanRecord). Каждый просмотр ассигнует
Data buffer (DatabufRecord).
Это буфер, используемый для общего хранения данных. Attribute information record (AttrbufRecord).
Этот отчет может содержать один сигнал Global checkpoint information record (GcpRecord).
Этот отчет используется, чтобы сохранить число глобальных контрольных
точек, а также счетчик во время фазы завершения транзакции.
TC failure record (TC_FAIL_RECORD).
Это используется, обращаясь с поглощением обязанностей TC от
неудачного операционного координатора. Любой узел данных может действовать как операционный координатор. Блок Операционный координатор это ядерный интерфейс, к которому приложение
отправляют свои запросы. Это устанавливает связи с различными блоками в
системе, чтобы выполнить транзакцию и решает, какой узел будет обращаться с
каждой транзакцией, посылая сигнал подтверждения на результате приложению
так, чтобы приложение могло проверить, что результат, полученный от
блока TUP, правилен. Этот блок также обращается с уникальными индексами, которые должны быть
скоординированы через все узлы данных одновременно. Это менеджер кортежей, который справляется с физическим хранением данных о
группе. Это состоит из следующих файлов в каталоге
Этот блок также наблюдает изменения в кортежах. Этот ядерный блок предоставляет сервисы местному управлению упорядоченными
индексами. Это состоит из следующих файлов в каталоге
Этот блок предоставляет внутренние интерфейсы транзакции и операциям по
данным, выполняя существенные операции на сигналах, переданных между узлами.
Этот блок осуществляет транзакционные услуги, которые могут использоваться
другими блоками. Это также используется в создании индексов онлайн и
находится в каталоге Среди обязанностей, выполненных этим блоком, обслуживание
последовательностей для резервных ID и
других распределенных идентификаторов. Этот блок, менеджер группы регистрации, ответственен за обработку
регистраций для дисковых таблиц данных. Это осуществляется в этих файлах в
каталоге Это блок управления группой, который обращается с инициализацией блока и
конфигурацией. Во время процесса запуска узла данных это запускается из блока
Этот блок обеспечивает Этот блок обеспечивает страницу и услуги по организации буферизации данных
для дисковых таблиц данных. Включает эти файлы: Это блок управления логическим кластером, обращается с членством
узла в группе, используя механизм синхронизации.
Этот блок также помогает в ранних фазах запуска узла данных. Блок Этот блок осуществляется в файлах
Менеджер подписки группы, который обращается с регистрацией событий и
сообщающими функциями. Это также заметно фигурирует в NDB Cluster
Replication. Это блок управления потоком, выполняется в каждом потоке ядра NDB.
Этот блок также используется для оценки использования CPU и для записи
разной информации в таблицы
Блок Это блок управления транспортировкой сигнала ядра
Это менеджер табличномго пространства для данных дисковых таблиц,
осуществленный в следующих файлах в
Этот ядерный блок ответственен за обработку внутренних триггеров
и уникальных индексов.
Глава 4. Ядерные блоки NDB
NDB
. Файлы, содержащие
внедрения этих блоков, могут быть найдены в нескольких каталогах в
storage/ndb/src/kernel/blocks/
дерева
исходных текстов NDB Cluster.NDB
использует много различных потоков, чтобы выполнить различные задачи.
Ядерные блоки связаны с этими потоками как показано в следующей таблице:
Поток (
ThreadConfig
)Ядерные блоки
Main (
main
)
CMVMI
(первичный),
DBINFO
,
DBDICT
,
DBDIH
,
NDBCNTR
,
QMGR
,
DBUTIL
LDM (
ldm
)
DBTUP
,
DBACC
,
DBLQH
(primary),
DBTUX
,
BACKUP
,
TSMAN
,
LGMAN
,
PGMAN
,
RESTORE
TC (
tc
)
DBTC
(первичный),
TRIX
Replication (
rep
)
SUMA
(первичный),
DBSPJ
Receiver (
recv
)
CMVMI
Sender (
send
)
CMVMI
I/O (
io
)
NDBFS
Query (
query
)
DBQTUP
,
DBQACC
,
DBQLQH
,
DBQTUX
,
QBACKUP
QRESTORE
Recovery (
recover
)
DBQTUP
,
DBQACC
,
DBQLQH
,
DBQTUX
,
QBACKUP
QRESTORE
main
и
rep
как потоки типа
main_rep
.main
, rep
и
recv
как потоки типа
main_rep_recv
.query
и
recover
были добавлены в NDB 8.0.23.ThreadConfig
узла данных.
4.1. Блок BACKUP
storage/ndb/src/kernel/blocks/backup/
и содержит следующие файлы:Backup.cpp
:
Определяет методы для обработки сигнала узла, также предоставляет методы
вывода резервных сообщений о состоянии пользователю.BackupFormat.hpp
:
Определяет форматы, используемые для данных резервного копирования,
.CTL
и файлы журнала.Backup.hpp
: Определяет класс
Backup
.BackupInit.cpp
:
Фактический конструктор класса Backup
.Backup.txt
:
Содержит резервную схему связи (текстовый формат). Все еще потенциально
полезный для понимания последовательности событий, которая происходит во
время резервных копий.FsBuffer.hpp
: Определяет класс
FsBuffer
, который осуществляет круглый буфер
данных, который используется (вместе с файловой системой NDB) для чтения и
написания данных резервного копирования и регистраций.read.cpp
:
Содержит некоторые сервисные функции для чтения файлов журнала и файлов
контрольной точки в STDOUT
.QBACKUP
это подтип этого блока, используемый
для запроса и потока восстановления, добавленных в NDB 8.0.23.
4.2. Блок CMVMI
NDB
, а
также работы группы que и транспортеров группы. Это расположено в
storage/ndb/src/kernel/blocks/cmvmi
и содержит эти файлы:Cmvmi.cpp
:
Коммуникация и методы создания отчетов для класса
Cmvmi
.Cmvmi.hpp
: Определяет класс
Cmvmi
.NDB
,
таких как определенные IndexMemory
,
DataMemory
и
DiskPageBufferMemory
. В это время
CMVMI
также получает стартовый порядок узлов и выполняет много
функций, посредством чего программные модули могут
затронуть среду выполнения.
4.3. Блок DBACC
ACC
, это модуль управления
блокировкой и доступом. Это также ответственно за хранение первичного ключа
и индексы хэша уникального ключа. Этот блок расположен в
storage/ndb/src/kernel/blocks/dbacc
,
который содержит следующие файлы:Dbacc.hpp
: Определяет класс
Dbacc
, наряду со структурами для операций,
просмотра, таблицы и других отчетов.DbaccInit.cpp
: Конструктор и деструктор
класса Dbacc
, методы для
инициализации данных и отчетов.DbaccMain.cpp
: Реализует методы класса
Dbacc
.ACC
обрабатывает структуры индекса базы
данных, которые сохранены на 8K страницах. Блокировки базы данных также
обработаны в блоке ACC
.
TUP
хранит кортеж в подходящем пространстве и возвращает индекс
(ссылку на адрес кортежа в памяти). ACC
хранит
первичный ключ и этот индекс кортежа в хэш-таблице.TUP
, блок
ACC
реализует часть протокола контрольной точки.
Это также используется для регистрации отмен. Это осуществляется классом
Dbacc
, определенным в
storage/ndb/src/kernel/blocks/dbacc/DbaccMain.hpp
.DBQACC
это подтип этого блока, используемый
для запросов и восстановления, добавленных в NDB 8.0.23.4.4. Блок DBDICT
storage/ndb/src/kernel/blocks/dbdict
.
Информация о словаре данных копируется всем блокам
DICT
кластера. Это единственный блок кроме
DBTC
, к которому приложения могут отправить прямые запросы.DBDICT
ответственнен за руководящие
метаданные (использующие узел основных данных) включая определения для
таблиц, колонок, индексов, табличных пространств, файлов журнала, групп файла
журнала и других объектов данных.CreateIndex.txt
:
Содержит примечания о процессах для создания, изменения и
удаления индексов и триггеров.Dbdict.cpp
: Структура для отчетов
метаданных событий (для NDB$EVENTS_0
),
а также методы для системного начала и перезапуска, таблиц,
обработки файла схемы и упаковки данных о таблице в страницы.
Функциональность для определения статуса узла и обработки неудач узла также
здесь. Кроме того, этот файл осуществляет другие процессы инициализации
Dbdict
.DictLock.txt
:
Описывает блокировку главного узла
DICT
для операций по схеме.printSchemaFile.cpp
:
Содержит исходный текст для
ndb_print_schema_file
.Slave_AddTable.sfl
:
Трассировка сигнала регистрации операции по созданию таблицы
для DBDICT
на неосновном узле.CreateTable.txt
:
Примечания, обрисовывающие в общих чертах процесс создания таблицы.CreateTable.new.txt
:
Примечания, обрисовывающие в общих чертах процесс создания таблицы
(обновленный вариант CreateTable.txt
).Dbdict.hpp
: Определяет класс
Dbdict
, также создает таблицу
NDB$EVENTS_0
.
Также определяет много структур, таких как таблица и записи индекса, а
также записи таблицы.DropTable.txt
:
Замечания о процессе удаления таблицы.Dbdict.txt
: Замечания о создании и
удалении событий и объектов
NdbEventOperation
.Event.txt
: Копия
Dbdict.txt
.Master_AddTable.sfl
:
Трассировка сигнала регистрации операции по созданию таблицы для
DBDICT
на главном узле.SchemaFile.hpp
:
Определяет структуру файла схемы.4.5. Блок DBDIH
DBDIH
также реализует системные перезапуски и
управление узлом. Этот блок осуществляется в следующих файлах, все они в
каталоге storage/ndb/src/kernel/blocks/dbdih
:Dbdih.hpp
:
Этот файл содержит определение класса Dbdih
,
а также тип FileRecordPtr
, который используется,
чтобы хранить информацию о системах хранения фрагмента и его точных копиях.
Если у фрагмента есть больше, чем одна резервная точная копия, то список
дополнительных присоединен к этому отчету. Этот отчет также хранит статус
фрагмента и составляет выровненные 64 байта.DbdihMain.cpp
:
Содержит определения методов класса Dbdih
.printSysfile/printSysfile.cpp
:
Старая версия printSysfile.cpp
из каталога
dbdih
.DbdihInit.cpp
:
Инициализирует данные и отчеты Dbdih
,
также содержит деструктор класса.LCP.txt
:
Содержит примечания разработчика об обмене сообщениями между
DIH
и
LQH
, который происходит во время
местной контрольной точки.printSysfile.cpp
:
Этот файл содержит исходный текст программы
ndb_print_sys_file
.Sysfile.hpp
:
Содержит определение структуры Sysfile
,
другими словами, формат системного файла NDB
.
См. главу 1 для получения дополнительной информации.
BACKUP
на узлах данных, чтобы выполнить
распределенные задачи, такие как глобальные контрольные
точки и системные перезапуски.Dbdih
,
определение которого может быть найдено в файле
storage/ndb/src/kernel/blocks/dbdih/Dbdih.hpp
.4.6. Блок DBINFO
DBINFO
оказывает поддержку для
информационной базы данных
ndbinfo
, применяемой для
получения информации о внутренностях узла данных.ndbinfo
, используя сигналы
DBINFO_SCANREQ
и
DBINFO_SCANCONF
. Узел API общается с
DBINFO
на узле основных данных, который общается
с DBINFO
на остающихся узлах данных. Блок
DBINFO
на каждом узле данных приносит информацию
от других ядерных блоков на узле, включая
DBACC
,
DBTUP
,
BACKUP
,
DBTC
,
SUMA
,
DBUTIL
,
TRIX
,
DBTUX
,
DBDICT
,
CMVMI
,
DBLQH
,
LGMAN
,
PGMAN
,
DBSPJ
,
THRMAN
,
TRPMAN
и
QMGR
.
Локальный DBINFO
передает информацию обратно в
DBINFO
на главном узле, который в свою очередь
транслирует ее назад к узлу API.storage/ndb/src/kernel/blocks/dbinfo/Dbinfo.hpp
как класс Dbinfo
. Файл
Dbinfo.cpp
в том же самом каталоге
определяет методы этого класса (главным образом, сигналы обработчикам).
Также в каталоге dbinfo есть текстовый файл
DbinfoScan.txt
,
который предоставляет информацию о передаче сообщений
DBINFO
.
4.7. Блок DBLQH
DBACC
(который управляет структурами
индекса) и
DBTUP
(который управляет кортежами).
Это составлено из следующих файлов в
storage/ndb/src/kernel/blocks/dblqh
:Dblqh.hpp
:
Содержит определение класса Dblqh
.
Сам код включает следующие модули:LQH
с
ACC
и
TUP
.LQH
с любым
LQH
в системе базы данных. Для запуска создайте
файлы журнала фрагмента. Для системного перезапуска или перезапуска узла
откройте файлы журнала фрагмента и найдите конец файлов журнала.
LQHKEYREQ
и ведет всю обработку
операций от имени этого запроса. Это также включает прием различных типов
сообщений ATTRINFO
и
KEYINFO
, а также связь с
ACC
и TUP
.TUP
и ACC
.ACC
,
выполнить просмотр всех кортежей во фрагменте.
TUP
выполняет необходимые условия поиска, чтобы
гарантировать, что только действительные кортежи возвращены.TUP
и
ACC
. Это также взаимодействует с
DIH
, чтобы определить, какие глобальные
контрольные точки восстанавливаемые.DIH
в обнаружении, когда GCP восстанавливаемые
и обрабатывает сообщение GCP_SAVEREQ
,
запрашивающее у
LQH
сохранить данный GCP на диск и
предоставить уведомление о том, когда это будет сделано.DblqhInit.cpp
:
Инициализирует записи и данные Dblqh
.
Также включает деструктор класса Dblqh
,
используемый для его освобождения.DblqhMain.cpp
:
Реализует функциональность (методы класса)
Dblqh
.redoLogReader
, содержащие исходные тексты
ndb_redo_log_reader
:records.cpp
records.hpp
redoLogFileReader.cpp
DBACC
,
DBTUP
,
LGMAN
,
TSMAN
,
PGMAN
и
BACKUP
. Это осуществляется как класс
Dblqh
, определенный в файле
storage/ndb/src/kernel/blocks/dblqh/Dblqh.hpp
.DBQLQH
это подтип этого блока, используемого
для запросов и восстановления, добавленных в NDB 8.0.23.
4.8. Блок DBSPJ
storage/ndb/src/kernel/blocks/dbspj
:Dbspj.hpp
: Определяет класс
Dbspj
.DbspjInit.cpp
: Инициализирует
Dbspj
.DbspjMain.cpp
:
Обрабатывает запросы от API и сигнала, проходящего между
DBSPJ
и блоками ядра
DBLQH
и
DBTC
.DbspjProxy.hpp
DbspjProxy.cpp
4.9. Блок DBTC
DBLQH
, который занимается такими проблемами
на отдельных узлах данных). В исходном коде это расположено в каталоге
storage/ndb/src/kernel/blocks/dbtc
,
который содержит эти файлы:Dbtc.hpp
: Определяет класс
Dbtc
и связанные с ним
конструкции, включая следующее:LQH
заботится об ожидании завершения
операции, когда операция в записи LQH
,
новая операция может быть начата на текущей записи соединения
LQH
.
ApiConnectRecord
всегда
выровнен по 256 байт.TcConnectRecord
сохраняет всю информацию,
требуемую для выполнения транзакции, операционный диспетчер устанавливает
связи с различными блоками для ее выполнения. Могут быть многочисленные
отчеты для каждой активной транзакции. Отчет связи TC сотрудничает с отчетом
связи API для связи с узлом API и с отчетом связи
LQH
для связи с любыми обработчиками
локального запроса, вовлеченными в транзакцию.
TcConnectRecord
постоянно связан с отчетом в
DBDICT
и другим в
DIH
и содержит список активных
записей соединения
LQH
и список начатых (но в настоящее время
неактивных) записей соединения LQH
.
Это также содержит список всех операций, которые выполняются с текущим
отчетом связи TC. TcConnectRecord
всегда
выровнен по 128 байт.TCKEYREQ
и отправкой
LQHKEYREQ
(см.
раздел 3.3). Это отдельный отчет, чтобы улучшить коэффициент удачного
обращения к кэшу, а также минимизировать требования к памяти.ScanRecord
, чтобы хранить
информацию о текущем просмотре.ATTRINFO
,
который содержит 32 атрибута информационных слов.GcpRecord
выровнен по 32 байта.DbtcInit.cpp
:
Обрабатывает распределение и освобождение индексов и данных
Dbtc
(включает деструктор класса).DbtcMain.cpp
: Реализует методы
Dbtc
.DBTC
осуществляется как класс
Dbtc
.4.10. Блок DBTUP
storage/ndb/src/kernel/blocks/dbtup
:AttributeOffset.hpp
:
Определяет класс AttributeOffset
,
который моделирует структуру признака, разрешая до 4096 признаков, все из
которых могут быть null.DbtupDiskAlloc.cpp
:
Обработка дескрипторов и освобождение экстентов для диска.DbtupIndex.cpp
:
Реализует методы для чтения и написания кортежей,
используя упорядоченные индексы.DbtupScan.cpp
:
Реализует методы для просмотров кортежа.tuppage.cpp
:
Обработчики, ассигнующие страницы для написания кортежей.tuppage.hpp
:
Определяет структуры для страниц данных фиксированного и переменного
размеров для кортежей.DbtupAbort.cpp
:
Содержит код для завершения неудавшихся операций по кортежу.DbtupExecQuery.cpp
:
Реализует обработку запросов для кортежей и чтение из них.DbtupMeta.cpp
:
Операции по таблице описателей для класса
Dbtup
.DbtupStoredProcDef.cpp
:
Модуль для добавления и удаления процедур.DbtupBuffer.cpp
:
Обработка буферов чтения и записи для операций по кортежу.DbtupFixAlloc.cpp
:
Ассигнует и освобождает кортежи фиксированного размера от набора страниц,
приложенных к фрагменту. Фиксированный размер установлен на фрагмент,
может быть только одно такое значение на фрагмент.DbtupPageMap.cpp
:
Код, используемый Dbtup
, чтобы отобразить ID
логической страницы к ID физической страницы.
Для отображения нужны ID фрагмента и ID логической страницы, чтобы обеспечить
физический ID. Эта часть Dbtup
это
исключительный пользователь определенного набора переменных в записи
фрагмента, это также исключительный пользователь структуры для диапазонов
страницы (структура PageRange
определена в
Dbtup.hpp
).DbtupTabDesMan.cpp
:
Этот файл содержит код дескрипторного диспетчера памяти таблицы.
У каждой таблицы есть описатель, который является смежным множеством слов
данных и ассигнуется из глобального множества, используя алгоритм
buddy с пустыми списками, существующими
для каждых 2N слов.Notes.txt
: Содержит примечания внедрения
некоторых разработчиков по кортежам, операциям по кортежу и
управлению версиями кортежа.Undo_buffer.hpp
:
Определяет класс Undo_buffer
, используемый для
хранения операций, которые, возможно, должны быть отменены.Undo_buffer.cpp
:
Реализует некоторые необходимые методы
Undo_buffer
.DbtupCommit.cpp
:
Содержит код, используемый, чтобы передать операции
на кортежах к диску.DbtupGen.cpp
: Этот файл содержит
код инициализации Dbtup
.DbtupPagMan.cpp
:
Этот файл осуществляет алгоритм buddy
менеджера страничной памяти. PagMan
вызван, когда фрагменты испытывают недостаток в достаточном внутреннем месте
страницы, чтобы приспособить все данные, которые требуется сохранить.
Это также вызвано, когда фрагменты освобождают пространство страницы назад в
зону свободной памяти.DbtupTrigger.cpp
:
Код, содержавшийся в этом файле, выполняет обработку внутренних триггеров
NDB
.DbtupDebug.cpp
:
Используемый только для целей отладки.Dbtup.hpp
: Содержит определение класса
Dbtup
. Также определяет много существенных
структур, таких как просмотры кортежа, дисковые единицы распределения, записи
фрагмента и так далее.DbtupRoutines.cpp
:
Реализует код Dbtup
для чтения признаков.test_varpage.cpp
:
Простая тестовая программа для подтверждения операций по
странице переменного размера.DBQTUP
это подтип этого блока, используемого
для запросов и потоков восстановления, добавленных в NDB 8.0.23.
4.11. Блок DBTUX
storage/ndb/src/kernel/blocks/dbtux
:DbtuxCmp.cpp
:
Код, чтобы искать по ключу префикс узла или запись. Сравнение начинается в
данном положении признака, которое обновляется количеством равных начальных
найденных признаков. Данные о записи могут быть частичными, в этом случае
может быть возвращено CmpUnknown
.
Признаки нормализованы и имеют переменный размер, данный в словах.DbtuxGen.cpp
:
Код инициализации используется в запусках узла и перезапусках.DbtuxMaint.cpp
:
Код, используемый, чтобы поддержать индексы.DbtuxNode.cpp
:
Код для создания узла, распределения и операций по удалению.
Также назначает списки просмотров узлам.DbtuxSearch.cpp
:
Код для обработки сообщений запроса просмотра узла.DbtuxTree.cpp
:
Код для выполнения операций по дереву узла.Times.txt
:
Содержит некоторые (старые) исполнительные пояснения
от тестовых прогонов на операциях, используя упорядоченные индексы.
Представляет только исторический интерес.DbtuxDebug.cpp
:
Код отладки для дампинга статусов узла.Dbtux.hpp
: Содержит определение класса
Dbtux
.DbtuxMeta.cpp
:
Код для создания, урегулирования и удаления индексов.
Также обеспечивает средства прерывания этих
операций в случае неудачи.DbtuxScan.cpp
:
Код для выполнения просмотров индекса.DbtuxStat.cpp
:
Методы для получения статистики узла.tuxstatus.html
:
Отчет 2004-01-30 о состоянии внедрения упорядоченного индекса.
Представляет только исторический интерес.DBQTUX
это подтип этого блока, используемого
для запросов и потоков восстановления, добавленных в NDB 8.0.23.4.12. Блок DBUTIL
storage/ndb/src/kernel/blocks/dbutil
, который включает эти файлы:DbUtil.cpp
: Реализует методы класса
Dbutil
.DbUtil.hpp
:
Определяет класс Dbutil
,
используемый, чтобы предоставить транзакционные услуги.DbUtil.txt
:
Описывает протокоы, реализованные DBUTIL
.4.13. Блок LGMAN
storage/ndb/src/kernel/blocks
:lgman.cpp
:
Реализует Lgman
для добавления, удаления
и работы с файлами журнала и группами файлов.lgman.hpp
:
Содержит определение для класса Lgman
,
используемого, чтобы обращаться к файлам журнала.
Обрабатывает распределение пространства буфера регистрации.4.14. Блок NDBCNTR
QMGR
и продолжает процесс.
Это также помогает с запланированными закрытиями узлов данных.
Этот блок осуществляется в
storage/ndb/src/kernel/blocks/ndbcntr
,
который содержит эти файлы:Ndbcntr.hpp
:
Определяет класс Ndbcntr
, используемый
для осуществления функций управления группой.NdbcntrInit.cpp
:
Инициализаторы для данных и записей
Ndbcntr
.NdbcntrMain.cpp
:
Методы используются для запусков, перезапусков и
чтения данных конфигурации.NdbcntrSysTable.cpp
:
NDBCNTR
создает и инициализирует системные
таблицы на начальном системном запуске.
Таблицы определяются в статических структурах в этом файле.4.15. Блок NDBFS
NDB
уровень абстракции файловой системы и расположен в каталоге
storage/ndb/src/kernel/blocks/ndbfs
,
который содержит следующие файлы:AsyncFile.hpp
:
Определяет класс AsyncFile
,
который представляет асинхронный файл. Все действия выполняются одновременно
с другими действиями, выполненными процессом. Поскольку все действия
выполняются в отдельном потоке, результат действия передают обратно через
канал памяти. Для асинхронного уведомления о законченном запросе, каждый
вызов включает запрос в качестве параметра. Этот класс используется для
написания или чтения данных на диск и с диска
одновременно с другими действиями.AsyncFile.cpp
:
Определяет действия, возможные для асинхронного
файла, и осуществляет их.Filename.hpp
:
Определяет класс Filename
.
Берет 128-битовое значение (в качестве множества из четырех long) и делает
имя файла из него. Это имя файла кодирует информацию о файле, такую как
является ли это файлом или каталогом, и если первое, то тип файла.
Возможные типы включают файл данных, регистрацию фрагмента, список
фрагментов, список таблиц, регистрацию схемы и системный файл.Filename.cpp
:
Реализует методы set()
для класса
Filename
.MemoryChannelTest/MemoryChannelTest.cpp
:
Основная программа для тестирования чтения из и записи в канал памяти (то
есть, кольцевого буфера).OpenFiles.hpp
:
Реализует класс OpenFiles
,
который обеспечивает некоторые удобные методы для определения, открыт
ли данный файл.VoidFs.cpp
: Используется для бездисковой
операции. Производит фиктивный ответ
на операции записи.CircularIndex.hpp
:
Класс CircularIndex
, определенный в этом файле,
служит стандартным блоком для осуществления кольцевых буферов.
Это увеличивается как нормальный индекс, пока не достигает максимального
размера, затем сбрасывается к нолю.CircularIndex.cpp
: Содержит только один
#define
, на самом деле
не используемый в это время.MemoryChannel.hpp
:
Определяет классы MemoryChannel
и
MemoryChannelMultipleWriter
,
которые обеспечивают основанный на указателе канал для связи между двумя
потоками. Это не копирует данных в или из канала, таким образом, пункт,
который вставляется, не может использоваться, пока другой поток не отдаст
его. Нет никакой поддержки обнаружения возвращения пункта.MemoryChannel.cpp
:
Фиктивный файл, сейчас не применяется.Ndbfs.hpp
: Поскольку запрос сигнала
NDB
может привести к многократным запросам
AsyncFile
, один класс (определенный в этом
файле) ответственен за отслеживание всех запросов, и когда все закончены,
должен передать результат к блоку отправки.Ndbfs.cpp
:
Инициализация и методы обработки сигнала для класса
Ndbfs
.Pool.hpp
:
Создает и управляет пулом объектов для использования
Ndbfs
и другими классами в этом блоке.AsyncFileTest/AsyncFileTest.cpp
:
Тестовая программа, используемая, чтобы проверить и определить эффективность
функциональности AsyncFile
.4.16. Блок PGMAN
diskpage.hpp
:
Определяет структуры File_formats
,
Datafile
и
Undofile
.diskpage.cpp
:
Инициализирует пустые заголовки страницы; включает некоторый вывод
для сообщения и отладки.pgman.hpp
:
Определяет класс Pgman
, осуществляющий
многие буферные и страничные услуги, включая записи страницы и запроса,
замену страницы, списки страниц, очистку страницы и
другую обработку страниц.pgman.cpp
:
Реализует методы Pgman
для инициализации и различных задач управления страницей.4.17. Блок QMGR
QMGR
ответственно за опрос узлов данных,
когда неудача узла данных происходит и решая, что узел на самом деле потерпел
неудачу и должен быть исключен из группы. Этот блок содержит следующие файлы
из каталога
storage/ndb/src/kernel/blocks/qmgr
:Qmgr.hpp
: Определяет класс Qmgr
и связанные структуры, включая используемые в обнаружении неудачи
узла и разделения группы.QmgrInit.cpp
: Реализует методы и записи
инициализации Qmgr
, также
включает его деструктор.QmgrMain.cpp
: Содержит код для контроля
синхронизации, обнаружения и обработки проблем
split-brain и управления
некоторыми фазами запуска.timer.hpp
:
Определяет класс Timer
, используемый
NDB
, чтобы сохранять строгое хронометрирование
независимо от системных часов.QMGR
осуществляется классом
Qmgr
, определение которого находится в файле
storage/ndb/src/kernel/blocks/qmgr/Qmgr.hpp
.
4.18. Блок RESTORE
restore.hpp
,
restore.cpp
,
RestoreProxy.hpp
и
RestoreProxy.cpp
в каталоге
storage/ndb/src/kernel/blocks
.
Это обращается с восстановлением группы из резервных копий онлайн.
Это также используется, чтобы восстановить местные контрольные точки как
часть процесса старта узла данных.QRESTORE
это подтип этого блока,
используемого для запроса и потоков
восстановления, добавленных в NDB 8.0.23.4.19. Блок SUMA
SUMA
состоит из следующих файлов в
каталоге storage/ndb/src/kernel/blocks/suma/
:Suma.hpp
:
Определяет класс Suma
и интерфейсы для
подписок и выполнения необходимых связей с другим блоками.SumaInit.cpp
: Выполняет инициализацию
DICT
,
DIH
и других интерфейсов.Suma.cpp
:
Реализует режимы обработки подписки.Suma.txt
:
Содержит основанное на тексте иллюстрирование диаграммы протокола
SUMA
.4.20. Блок THRMAN
threadblocks
и
threadstat
информационной базы
данных ndbinfo
.THRMAN
осуществляется как класс
Thrman
в файле
storage/ndb/src/kernel/blocks/thrman.hpp
.
thrman.cpp
в том же каталоге определяет метод
measure_cpu_usage()
этого класса для измерения использования CPU данным потоком.
Это также определяет метод execDBINFO_SCANREQ()
,
который пишет это и другую информацию, такую как идентификационный номер
потока и номер блока в таблицы threadblocks
и
threadstat
.4.21. Блок TRPMAN
NDB
, осуществленное в
storage/ndb/src/kernel/blocks/trpman.hpp
как
класс Trpman
, методы которого определяются в
trpman.cpp
, тоже в каталоге
blocks
.TRPMAN
также ответственнен за написание
строк в таблицу ndbinfo.transporters
.4.22. Блок TSMAN
storage/ndb/src/kernel/blocks
:tsman.hpp
:
Определяет класс Tsman
, а также структуры,
представляющие файлы данных и табличные пространства.tsman.cpp
: Реализует методы
Tsman
.4.23. Блок TRIX
TRIX
, подобно
DBUTIL
, является сервисным блоком,
содержащим много вспомогательных функций для создания индексов и обработки
сигналов между узлами. Это осуществляется в следующих файлах в
storage/ndb/src/kernel/blocks/trix
:Trix.hpp
:
Определяет класс Trix
, наряду со структурами,
представляющими подписные данные и отчеты (для связи с
SUMA
) и данные об узле (необходимые, общаясь
с удаленными блоками TRIX
).Trix.cpp
: Реализует методы класса
Trix
, включая необходимые для того, чтобы
принять соответствующие меры в случае неудачи узла.
Найди своих коллег! |
Вы можете направить письмо администратору этой странички, Алексею Паутову.