InfinityDB
Этот перевод статьи с другого языка требует улучшения (см. Рекомендации по переводу). |
InfinityDB является встраиваемой системой управления базами данных, написанной на языке Java, которая размещается в портативных устройствах, серверах, рабочих станциях и в распределенных системах. Проект основан на запатентованной открытой параллельной архитектуре B-дерева, которая позволяет достичь высокой производительности без риска сбоев[1]. Данные хранятся в встроенном файле БД и возвращаются из него с помощью InfnityDB API, что позволяет получить прямой доступ к элементам переменной длины. Клиенты базы данных могут создать традиционные отношения, а также специализированные модели, которые непосредственно удовлетворяют потребности зависимого приложения. Нет никаких ограничений на количество элементов, размер базы данных или размер Java Virtual Machine, таким образом, InfinityDB может функционировать в маленькой среде, которая обеспечивает оперативную память, а также может масштабироваться к большим системам. Традиционные отношения и специализированные модели могут быть направлены к одному и тому же файлу базы данных. InfinityDB может быть оптимизирована для стандартных отношений, а также всех других типов данных, что позволяет клиентским приложениям работать со скоростью как минимум одного миллиона операций в секунду в виртуальной системе с 8 ядрами.
Реляционная и специализированная модель данных в InfinityDBПравить
Прямой доступ на уровне ядра через простые или составные ключи может сохранять и извлекать в одной операции записи переменной длины со значениями переменной длины. Значения могут быть примитивными типами данных Java: строки, небольшие символьные или байтовые массивы, байтовые строки. Высокоуровневые структуры, которые комбинируют простые или составные значения, включают в себя группы для неограниченных по размеру записей, большие символьные объекты (CLOB’s), большие двоичные объекты (BLOB), неограниченные разреженные массивы, неограниченные наборы значений, графов, деревьев или полнотекстовых индексов. Многопоточный доступ поддерживается на одном ядре с внутренними мерами защиты, и на многоядерном процессоре с полностью параллельной многопоточной обработкой на множестве ядер. Нет предела числу атрибутов в целом или числу атрибутов за запись. Документация базы данных содержит примеры кода, иллюстрирующие это. База данных может представлять реляционные а также специализированные структуры данных одновременно, не требуя явного обновления схемы при расширении и изменении структуры.
Entity-Attribute-Value модельПравить
Пространство элементов в InfinityDB имеет опцию для использования модели Entity-Attribute-Value («Сущность-атрибут-значение»), в которой эту тройку можно считать 'оператором' или 'элементом'. Тройки могут быть многозначным. Понятие реляционного индекса заменено 'инверсией' тройки Entity-Attribute-Value, в котором у сохраненного элемента есть объект, инвертированное значение и атрибут, замененный 'обратным' атрибутом. Этот подход позволяет приложениям предоставлять пользователям любое число интуитивных навигационных путей без запроса.
Предназначен для высокой производительности и минимальных административных потребностейПравить
Каждый экземпляр InfinityDB хранит данные в одном файле базы данных и не требует дополнительной регистрации или отката файлов какого-либо типа. Согласованность базы данных гарантируется функцией Commit, которая может вызываться так часто, как того требует приложение. В случае сбоя питания или другой неисправности оборудования, база данных гарантированно будет соответствовать статусу завершения последнего Commit’а. InfinityDB минимизирует размер своего файла базы данных с помощью четырёх типов сжатия данных (префиксный код, suffix, Zlib и UTF-8).
ПродуктыПравить
Особенности InfinityDB Version 1.0:
- 100K случайных или последовательных вставок, удалений или извлечений в секунду для операций в кэше в 3 ГГц
- Сжатие данных колеблется приблизительно от одного до десяти раз
- На практике были базы данных до 250 ГБ.
Особенности InfinityDB Version 2.0:
- ACID совместимые расширенные транзакции
- Использование оптимистичного управления параллелизмом (англ.) (рус., чтобы защитить длинные транзакции
- Восстановление непротиворечивости в InfinityDB без потребности в регистрации и откатах.
Особенности InfinityDB Version 3.0:
- Параллельная, многопоточная обработка на нескольких ядрах без блокировок, кроме редких, автоматически обнаруженных исключений
- Этот ожидающий патент многоядерный параллелизм увеличивает производительность на многоядерных платформах, таких как Intel i7 приблизительно в семь раз.
ИсторияПравить
Роджер Л. Дерэн спроектировал и разработал механизм InfinityDB в конце 1980-х и имеет патент США 5283894. Механизм InfinityDB был впервые реализован на Intel 8088 на языке ассемблере в спортивном редактор видео ROSCOR (RSVE), который был лицензирован для команды NFL в 1980 году. Lexicon купил RSVE в 1989 году, и значительно расширил размещение на все типы профессиональных и спортивных колледжей.[2]
Использование all-JAVA InfinityDB, выпускаемого фирмой Boiler Bay Inc. с 2002, включает в себя:
- объединение фармацевтических и медицинских данных
- коллекцию, описание, объединение и разделение орнитологических данных
- представление таксономии различных типов
- инструменты среды программирования, такие как навигация по хранилищу исходного кода
- текстовые индексаторы
- почтовые системы консолидации
- распределенные промышленные системы сбора данных.
СсылкиПравить
- ↑ Peters L, Lavers T. Swing Extreme Testing: The Extreme Approach to Complete Java Application Testing (англ.). — Packt Publishing (англ.) (рус., 2008. — P. 224. Архивная копия от 27 июня 2014 на Wayback Machine
- ↑ New York Times — Sports World Specials: Video Technology; Custom Replays