Развитие платформы SciRus Якшин М. М. БЕН РАН

advertisement
Развитие платформы SciRus
Якшин М. М.
БЕН РАН
Исторический экскурс: платформа
SciRus



Разрабатывается с 2004 г.
Инструмент для создания настраиваемых
учетных систем, хранящих сильно
структурированную информацию о наборе
сущностей и связях между ними.
Базовые функции:

многопользовательский доступ

редактирование, поиск, выдача информации
Системы на базе SciRus

«Наука России»

БД «Публикации сотрудников»

БД «Доклады на конференциях»

БД «Библиотеки ЦБС БЕН РАН»

БД «Редкие книги»



Технологическая подсистема ЭБ «Научное
наследие России»
Информационная система «Волоконная
оптика» НЦВО РАН
Информационная система «История
Технологическая подсистема ЭБ
«Научное наследие России»
Предпосылки создания новой
версии (1)

Отсутствие хранения истории изменений


доступны некоторые элементы (авторство,
временные метки, бэкапы), но не вся история
Тесная связь пользовательского интерфейса
и механизма работы с записями

нет единого API

для отдельных систем API реализовывалось
вручную

морально устаревшая структура URL
Предпосылки создания новой
версии (2)


UI редактирования:

можно редактировать несколько сущностей
сразу (стековая машина)

есть неочевидное состояние редактирования

недопонимание происходящего => порча данных
UI поиска:

отсутствие постраничной выдачи
Предпосылки создания новой
версии (3)


Система не была изначально
спроектирована для неограниченного
публичного доступа из глобальных сетей:

неоптимальная с т.з. поисковых машин
структура URL

поисковые запросы => сильная нагрузка
Сравнительно старая техническая
реализация:

привязка к одному типу СУБД

верстка на уровне HTML4 преимущественно без
JavaScript
Отображение SciRus <-> SQL:
как было



Метаданные:

несколько отдельных таблиц

по одной таблице на сущность

справочники в метаданных таблиц СУБД (enum,
set)
Хранение отдельных записей:

каждое поле SciRus = поле SQL

ручная настройка индексов
Нет хранения истории как отдельных
транзакций
Отображение SciRus <-> SQL:
как стало


Метаданные:

централизованное хранилище в памяти

единая большая запись с JSON/BSON в БД

справочники в этом же хранилище

независимость от конкретной СУБД
Хранение отдельных записей:

хранение записи в виде структированного
JSON/BSON в одном поле _data

только индексируемое поле SciRus = поле SQL

автоматическая отображение настройки
индексов SciRus -> SQL
Хранение истории изменений


Основная таблица = поисковый механизм
Таблица истории (суффикс _h),
фиксированная схема:

hid – первичный ключ

_id – ссылка на запись в основной таблице

_data – структурированное содержимое
транзакции в формате JSON/BSON-документа

ts – временная метка в формате UNIX timestamp

user_id – ссылка на пользователя,
инициировавшего эту транзакцию
Программные аспекты

Было:

Стало:

PHP 4

Ruby on Rails 4

MySQL 5 / MariaDB


HTML 4
MySQL / PostgreSQL
/ ...

табличная вёрстка

HTML 5

неадаптивная
вёрстка

Twitter Bootstrap

адаптивная вёрстка
минимальное
использование
JavaScript

unobtrusive
JavaScript

Download