R:Base

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 23:36, 16 декабря 2017.
R:Base
RBase logo.png
Разработчики: MicroRim, Inc.
Выпущена: 1981 (1981)
Платформа: Windows,OS/2
Веб-сайт www.rbase.com/index.php

RBASE (или R:BASE) была первой реляционной базой данных для ПК и была разработана в 1981 году благодаря Уэйну Эриксону.

В июне 1998 году RBASE приобрела компания R:BASE Technologies и с этого года данный продукт стал доступен для Windows.

Общие

Пакет R:BASE[Источник 1] фирмы Microrim был одной из первых СУБД для ПК и первым принявшим строго реляционную модель. В R:BASE 4.5 Plus эта традиция продолжена, и в то же время появились такие усовершенствования, как полная поддержка ANSI SQL[1], лучшая оптимизация команд SQL, усовершенствованные формы и возможности просмотра таблиц, усиленные средства обеспечения целостности данных.

В комплект поставки пакета R:BASE входят две DOS[2]-версии: 16-разрядная, рассчитанная на системы с процессором 286, и 32-разрядная для систем с процессором 386 или более мощным.  Фирма Microrim также продает версию для текстового режима OS/2.

Основные функции

  • Стабильность

R:BASE - это настоящая реляционная база данных с ссылочной целостностью, многопользовательский режим и безопасность, встроенные на уровне двигателя. Он быстрый, стабильный и поддерживает обширную объектно-ориентированную среду программирования, которая быстрее развивается, чем другие альтернативы в своем классе. Благодаря обновлению системы, обновлениям сети и отключению, R: BASE будет продолжать надежно функционировать без повреждения данных или времени простоя.

  • Raw Power

Это мощный механизм базы данных BASE позволяет запрашивать большие объемы данных, которые другие приложения не могут. И вы никогда не ограничиваетесь списками меню в R: BASE, потому что вы можете запускать специальные запросы с помощью команды R prompt. Он поддерживает вложенные отчеты и выводит выходные данные в форматах, таких как XML, HTML и Adobe PDF с 128-битным шифрованием, что ставит его перед альтернативами.

  • Безопасность

R:BASE также обладает некоторыми из наиболее полных возможностей обеспечения безопасности базы данных. Команды SQL GRANT / REVOKE позволяют назначать права доступа для любой таблицы базы данных.

  • Совместимость

R:BASE является совместимым с ODBC 3, что опережает конкурентов. Соответствие ODBC 3 означает, что R: BASE - превосходный задний конец для приложений на передней панели. R: BASE также имеет беспрецедентную функциональность импорта / экспорта. R: данные BASE могут быть экспортированы в 18 различных форматов, включая dBase (dbf), Paradox, csv, MS Excel, slk, diff, Lotus 1-2-3, SQL Script, XML, rtf, LDAP и другие. R: BASE может импортировать данные из 9 различных форматов, включая dbf, xls, текст (фиксированное поле и запятую), Excel, HTML, XML и Access.

  • Масштабируемость

R: простые инструменты разработки баз данных BASE позволяют не программистам создавать простые базы данных, формы и отчеты с минимальным обучением. Мастер приложений даже позволит не-программистам обернуть формы и отчеты в приложение, управляемое меню, для использования одним или несколькими сотрудниками. Этот нетехнический интерфейс делает R: BASE превосходным инструментом для небольших индивидуальных или более крупных ведомственных отслеживаний данных и отчетности. В то же время R: BASE обеспечивает профессиональное программирование, безопасность, веб-интерфейс и инструменты графического интерфейса, которые позволяют программистам создавать надежные и безопасные корпоративные приложения, доступные большому числу пользователей.

  • Простота использования

R:BASE не требуется настройка файла сетевого сервера. Используйте свою базу данных по сети, не опасаясь повреждения данных или потери данных. Благодаря таким функциям, как автоматическое управление параллелизмом и автоматическая блокировка на уровне строк, R: BASE защищает данные в сетевой среде, даже когда несколько пользователей редактируют одну и ту же строку или запись. Доступ к R: BASE в сети так же просто, как выбор из меню.

Архитектура

Каждая база данных в R:BASE[Источник 2] хранится в трех файлах.

Первый содержит словарь данных, в котором записана информация о структуре базы данных. Второй - сами данные. Третий - индексы.

Хранящиеся данные представляются пользователю в виде таблицы. Формы, отчеты и виды (views) также обрабатываются как данные и запоминаются в файле базы данных с данными пользователя. Файлы баз данных автоматически шифруются, и доступ к ним можно получить только из R:BASE или из утилиты, которая работает со структурой файла данных R:BASE. В пакет также входят две внешние утилиты, которые проверяют файлы базы данных на наличие повреждений и исправляют их. Программа R:BASE позволяет импортировать и экспортировать данные в ряде форматов, включая DBF, WKS и ASCII. В ней также имеется возможность прямого доступа к DBF-файлам dBASE, которые после этого можно использовать как собственные таблицы R:BASE. Пакет содержит средства для внесения изменения в DBF-файлы, их использование как справочных таблиц или объединения с собственными таблицами R:BASE[Источник 3] в запросах, формах и отчетах.

Архитектура R:BASE

Естественный SQL

Собственным командным языком SQL с расширениями фирмы Microrim. В версии предусмотрено применение начального стандарта (Entry Level) SQL ANSI-92, в том числе первичных и посторонних ключей с ограничениями на удаление, не позволяющими пользователю удалять запись с первичным ключом, если от него зависят посторонние ключи. Таблицы создаются с помощью пункта меню Create, который действует как триггер (присоединенная процедура), проверяющий данные, прежде чем зафиксировать изменения или вставку. Программа R:BASE была одной из первых СУБД для ПК, которая соблюдала правила, позволяющие разработчикам прикладных программ вводить дополнительные проверки целостности данных и следить за попаданием данных в указанный диапазон. Пользователь может обойти правила, выключив систему слежения, но контроль за целостностью данных, выполняемый с помощью первичных и посторонних ключей, действует всегда, и его нельзя обойти.

Скорость выполнения запросов пакетов R:BASE возросла с появлением Smarter Query Optimizer (Интеллектуальный оптимизатор запросов). Этот новый SQL-оптимизатор использует статистическую и историческую информацию развитых индексов базы данных для определения самого быстрого метода выполнения запроса. Быстродействие было также улучшено за счет применения настраиваемых пользователем кэш-буферов и возможности в многопользовательском режиме переводить схему базы данных в состояние “только для чтения”. В дополнение к блокировке на уровне таблицы и записи программа R:BASE теперь способна осуществлять блокировку страниц, которая обеспечивает средний уровень производительности. На протяжении ряда лет пакет R:BASE постоянно улучшал свои показатели в наших контрольных испытаниях и теперь смотрится вполне респектабельно, оказавшись в середине списка в большинстве тестов.

Другая новая возможность - полная текстовая индексация.

Можно указывать число символов текста или отмечать поле, подлежащее индексации. Допускается также создание индексов по нескольким колонкам. Безопасность базы данных обеспечивается с помощью стандартных команд SQL GRANT и REVOKE.

Интерфейс пользователя и средства разработки прикладных программ

Язык программирования в R:BASE и интерфейс пользователя тесно взаимосвязаны. Расширения в собственном SQL пакета используются для создания меню, вывода данных на экран и выполнения других задач. Процесс разработки прикладных программ облегчается подсистемой Application Express - встроенным генератором прикладных программ, который руководит вами в течение всего процесса конструирования базы данных: создания форм, запросов, отчетов и меню, а также формирования окончательного текста вашей программы. Текст прикладной программы можно хранить в виде обычного ASCII-файла и в скомпилированном виде для ускорения выполнения и защиты от модификации. Текст компилируется как в исходном виде, так и после предварительной обработки его входящим в комплект поставки или внешним текстовым редактором. В пакете R:BASE имеется отладчик исходного текста, позволяющий проводить пошаговое его исполнение, наблюдать за значениями переменных и устанавливать контрольные точки.

Основной интерфейс пользователя - меню командной строки со спускающимся подменю, к которым пользователь обращается с помощью клавиатуры или мыши. По умолчанию программа R:BASE выводит данные на экран в виде просмотровой таблицы. Запросы можно задавать на языке SQL R:BASE в командном окне или с помощью интерфейса QBE (Query by example - Запрос по образцу).  Полностью поддерживаются многотабличные связи. Запросы могут храниться на диске или в виде клавиатурных макрокоманд для применения в будущем. Пакет также обеспечивает обширные возможности по работе с многотабличными формами, которые используются для ввода и выборки данных. Формы и отчеты создаются при помощи соответствующих Express-модулей, обращаться к которым можно из главного меню или из подсистемы Application Express.

В пакете R:BASE имеется полная оперативная контекстно-зависимая подсказка. Программа позволяет использовать и специализированные экраны подсказок, которые могут быть созданы в модуле Application Express и введены в окончательный вариант прикладной программы. R:BASE также предусматривает старинные интерфейсы - приглашения по образцу и R>-приглашения, столь близкие и дорогие пользователям-ветеранам. В целом интерфейс пользователя облегчает работу начинающих и в то же время по-прежнему обеспечивает мощные возможности, необходимые разработчикам для создания сложных прикладных программ баз данных.

Работа в многопользовательской среде

Поддержка многопользовательского режима предусмотрена в основном пакете и может быть включена простой командой, помещенной в файл конфигурации. В текущей версии возможности параллельного использования базы данных улучшены за счет разрешения администратору БД помещать файл данных на физический накопитель, отделенный от словарей данных и индексов. Это открывает путь к большим базам данных, чем те, с которыми могли работать предшествующие версии пакета. Спецификация ODBC пока не предусмотрена, но фирма Microrim продает пакет R:BASE SQL Engine for DOS и Windows, в котором используется API на базе ODBC и который можно применять для создания самостоятельных прикладных программ на C или Microsoft Visual Basic. Фирма Microrim также поставляет версии R:BASE для Vanguard, которые совместимы на уровне исходных текстов с R:BASE 4.5 Plus и обеспечивают доступ к ряду баз данных типа клиент-сервер, включая RDB/VMS фирмы Digital, Microsoft SQL Server, Oracle и собственный Vanguard Server фирмы Microrim, основанный на VMS.

R:BASE 4.5 Plus по-прежнему остается программой, работающей в текстовом режиме, некоторые принципы организации которой могут показаться недостатками. Но ее строгая реляционная архитектура, встроенные средства обеспечения целостности данных, собственный вариант SQL и великолепный генератор прикладных программ производят впечатление. Нынешним пользователям пакета определенно захочется обновить его, а остальным следует оценить потенциал R:BASE для текстовых многопользовательских систем.

Основные продукты R:BASE

R:BASE 4000

Самая ранняя версия, выпущенная Microrim, называлась R: Base 4000 и была выпущена в 1983 году. Она работала с ранней версией Microsoft MS-DOS или IBM PC DOS (версия 2 или выше). Он поставляется с инструкцией типа связующего и программой на гибких дисках 360K. Система, основанная на DOS, интерфейс был полностью текстовым, за исключением символов линии DOS.

Несмотря на относительную простоту использования и возможность создания полезных форм и отчетов, первая R: Base не имела обычного языка программирования, но вместо этого полагалась на операторы SQL, чтобы принимать входные и выходные данные. Отсутствие полного языка программирования означало, что продукт не был хорошо принят некоторыми частями рынка. Возможно, это помогло ранним, едва реляционным, продуктам dBASE стать доминирующим. Продукт был быстро обновлен, чтобы включить Добавленные переменные и обычный язык программирования (IF, WHILE и т. Д.) На исходный язык на основе SQL. Обновление было выпущено как R: Base 4000 Version 1.1 в марте 1984 года. R: Base стал вторым популярная база данных DOS на рынке ПК (за dBASE).

Особенностью программы была ее способность создавать приложения, в которых выполнялись сценарии, созданные внутренней системой сценариев. Сценарии хранятся в файлах с расширением .APP. Сначала система запросит тип желаемого меню (например, один вариант был вытащен, а затем попросил вас заполнить выпадающие заголовки. Затем вы перешли список действий для каждого выбора меню. В конце процедуры, которые были пройдены, были записаны в файле базы данных и могут быть вызваны из автоматически созданной системы меню. Чтобы пользователь не вмешивался в сгенерированный скрипт, была создана кодированная версия. Пользователь может защитить паролем кодированную версию для управления конфигурацией.

R:BASE 5000, R:BASE 2.0

R:Base 4000 сопровождался R:Base 5000, что существенно улучшило характеристики и получило более широкое признание. R:BASE 2.0 выложил новый формат файла и представил возможность использовать память выше 640K. Была поддержка процессора Intel 80286. Система имела значительно лучшую документацию. Эта версия продолжила эволюцию в сторону полного соответствия ANSI SQL. Формы, сценарии и отчеты были перенесены в файлы базы данных. Три файла с расширениями .RB1, .RB2 и .RB3 содержали все для одной базы данных.

R:BASE 3.X

R: Base 3.0 был совместим с ANSI SQL. И использовал диспетчер памяти DOS4GW. Этот менеджер памяти также был замечен во многих играх DOS той эпохи. R: Base 3.1 представила многопользовательскую сеть . Версия также была развернута для операционной системы операционных систем Convergent Technologies , это, по-видимому, стало продолжением операционной системы Burroughs Technologies (BTOS). Для правильной работы многопользовательская база данных должна быть на файловом сервере, при этом все пользователи обращаются к базе данных через сеть. Это был неверный клиент-сервер, потому что обработка произошла в клиентах. Файл конфигурации расширен для обеспечения поддержки языка и пользовательского повторного сопоставления символов.

R:BASE 4.X

R: Base 4.0 развернул поддержку Intel 80386 и новый менеджер памяти DOS4GW. Он включал более новый формат файла, заменив формат, используемый в версии 3.1. Для поддержки устаревших клиентов версия 4.0 включала копию версии 3.1 с большим количеством предупреждений о новом формате файлов и функциях 4, которые не поддерживались в 3.1. Хотя документация утверждала, что файлы данных объемом 2 ГБ поддерживаются, были проблемы с целостностью данных с некоторыми очень большими таблицами более 1 миллиона записей. Тем не менее, программное обеспечение было разработано для размещения до 750 таблиц и легко обрабатываемых таблиц с десятками тысяч записей. Это было быстрее, чем 3,1 и надежное и практичное приложение для многих пользователей.

Simple example

  require 'rubygems'
  require 'rbhive'
  require 'json'
  require File.join(File.dirname(__FILE__), *%w[.. lib rbase])

  client = Rbase::Client.new("hbase-master.hadoop.forward.co.uk")
  # client.create_table("lovehoney_keywords", "AccountInfo")
  # 
  # RBHive.connect('hive.hadoop.forward.co.uk') {|db| 
  #   results = db.fetch %[select account,campaign,ad_group,keyword_id,keyword,match_type,status,first_page_bid,quality_score,distribution,max_cpc,destination_url,ad_group_status,campaign_status,impressions,account_id,campaign_id,adgroup_id,dated,client from ask_all_keywords where dated = '2010-09-21' and client = 'lovehoney']
  #   results.each do |row|
  #     keyword = row.first
  #     client["lovehoney_keywords"].insert(keyword, "AccountInfo" => {"campaign" => campaign, "match_type" => match_type} )
  #   end
  # }

  client['andy_keywords'].multi_insert({
    'toni' => {
      'metadata' => {'language' => 'italian'}
    },
   'andy' => {
     'metadata' => {'language' => 'english'}
    },
  })
  client['andy_keywords'].insert('abs', {
    'metadata' => {'language' => 'british'}
  })

  puts client['andy_keywords']['toni'].inspect
  puts client['andy_keywords']['andy'].inspect
  puts client['andy_keywords']['abs'].inspect

  # client['andy_keywords'].each do |result|
  #   puts result.inspect
  # end

  # incrementing
  client.create_table("horaci_test", "metadata") if !client.table_exists?("horaci_test")

  client['horaci_test'].insert('horaci', {
    'metadata' => {'language' => 'spanish', 'age' => [33].pack("Q").reverse}
  })

  # Column initialized
  new_age = client['horaci_test'].increment('horaci', 'metadata', 'age', 1)

  # Column not initialized
  wrinkles = client['horaci_test'].increment('horaci', 'metadata', 'wrinkles', 8)

  puts "New age: #{new_age}"
  puts "Wrinkles: #{wrinkles}"
  puts "Row: " + client['horaci_test']['horaci'].inspect
  puts "unpacked wrinkles: " + client['horaci_test']['horaci']["metadata"]["wrinkles"].reverse.unpack("Q").first.to_s

Примечания

  1. Учебник SQL, ХабрХабр
  2. DOS OS, Wiki

Источники

  1. R:BASE // Википедия. [2017—2017]. Дата обновления: 10.02.2015. URL: https://en.wikipedia.org/wiki/R:Base (дата обращения: 15.11.2017).
  2. R:BASE // R:BASE Technologies. [2017—2017]. Дата обновления: 10.09.2017. URL: http://www.rbase.com/ (дата обращения: 15.11.2017).
  3. R:BASE // R:BASE. [2017—2017]. Дата обновления: 22.10.2015. URL: http://www.razzak.com/fte/ (дата обращения: 15.11.2017).