О Национальной СУБД
О выборе СУБД
Выбор Национальной СУБД (НСУБД) как важнейшей составляющей НПП должен основываться на анализе требований потенциальных потребителей, а также возможностей по разработке собственной СУБД, или использования уже имеющейся СУБД с открытым кодом, обладающей требуемой функциональностью. Разработка собственной СУБД с нуля, или даже создание собственной ветки разработки существующей СУБД, в современных условиях недостатка квалифицированных разработчиков, не представляется возможным, особенно, учитывая время (несколько лет), выделенное на разработку НПП. Таким образом, единственным кандидатом на НСУБД остается существующая СУБД, обладающая базовой функциональностью, предъявляемую к современным СУБД для промышленного, государственного и бизнес-применения – поддерживать транзакции, целостность, изоляцию, конкурентность, репликация данных и восстановление после сбоев, а также доступная по свободной лицензии. Кроме того, немаловажно, чтобы эта СУБД имела большое сообщество, долгую историю, квалифицированных разработчиков и не зависела от какой-либо компании. Наличие в команде разработчиков отечественных специалистов является дополнительным аргументов в пользу такой СУБД, так как позволяет проводить политические решения и влиять на приоритеты разработки. Среди множества разновидностей СУБД (http://en.wikipedia.org/wiki/Database) можно выделить реляционные СУБД (РСУБД) как наиболее востребованный тип СУБД для использования в государственных организациях, имеющий долгую историю развития и хорошую теоретическую базу. Если взглянуть на список РСУБД (http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems), то среди больше 50 РСУБД очевидно выделяется PostgreSQL (http://www.postgresql.org), как наиболее продвинутая РСУБД, доступная по свободной лицензии BSD, имеющая большое сообщество пользователей и разработчиков, долгую историю развития, независимую от какой-либо компании, широко используемая в России (http://wiki.postgresqlrussia.org/index.php/%D0%9A%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8_%D0%B8_%D0%BF%D1%80%D0%BE%D0%B5%D0%BA%D1%82%D1%8B%2C_%D0%B8%D1%81%D0%BF%D0%BE%D0%BB%D1%8C%D0%B7%D1%83%D1%8E%D1%89%D0%B8%D0%B5_PostgreSQL), которая удовлетворяет всем описанным требованиям. Полный список возможностей PostgreSQL можно посмотреть на сайте проекта (http://www.postgresql.org/about/featurematrix). В составе команды разработчиков (http://www.postgresql.org/community/contributors/) присутствуют двое российских разработчиков, входящих в ядро команды и реализовавшие много из списка базовых возможностей PostgreSQL.
Предложения по НСУБД
Прототип программного обеспечения управления базами данных будет основываться на свободно-распространяемой СУБД PostgreSQL версии 9.1 и его расширениях (входящих в состав дистрибутива и внешних модулей), и поддерживать функционал, определенный п. 3.2 Требований технического задания, в том числе:
- поддержка масштабируемых геоинформационных систем (ГИС), в частности:
- поиск ближайших соседей для различных типов данных - версия PostgreSQL 9.1 содержит реализацию поиска ближайших соседей в обобщенном поисковом дереве (GiST) для всех встроенных типов данных, основанную на модифицированном алгоритме обхода поискового дерева с использовании очередей с приоритетами (priority queue), что позволяет получать требуемое количество результатов в требуемом порядке без обхода всего дерева;
- поиск и хранение объектов со сферическими атрибутами - предполагается использование нескольких расширений, доступных для PostgreSQL 9.1, и реализующих эффективную работу с данными, имеющих сферические атрибуты:
- PostGIS (www.postgis.org) - де-факто стандартный GIS инструмент, поддерживающий все известные форматы и доступный по свободной лицензии GPL, реализовано с использованием обобщенного поискового дерева (GIST);
- Q3C (q3c.sourceforge.net) - свободно-распространяемое по лицензии GPL расширение PostgreSQL, которое предоставляет методы поиска по сверхбольшим астрономическим каталогам, реализовано с использованием стандартных btree-индексов;
- pgsphere (http://pgsphere.projects.postgresql.org/) - свободно-распространяемое по лицензии BSD расширение PostgreSQL, которое реализует сферические типы данных и различные операции для них. Индексная поддержка реализована с помощью обобщенного поискового дерева (GIST);
- гибкая система полнотекстового поиска со встроенной поддержкой русского языка с поддержкой поиска фраз - версия PostgreSQL 9.1 содержит реализацию полнотекстового поиска с поддержкой русского языка (встроенная конфигурация поиска для русского языка, списк стоп-слов и словарь-стеммер). Полнотекстовый поиск полностью настраиваем пользователем и обеспечивает Эффективность поиска обеспечивается индексной поддержкой для операций с полнотекстовыми типами данных (tsvector, tsquery) на основе обобщенных поисковых деревьев (GiST,GIN);
- поиск похожих строк (поиск с опечатками) - версия PostgreSQL 9.1 содержит расширение pg_trgm, которое реализует эффективный поиск похожих строк с использованием индексов, реализованных на основе обобщенных поисковых деревьев (GiST,GIN);
- поиск похожих объектов - версия PostgreSQL 9.1 содержит расширение intarray, который предоставляет поддержку операций (contains, contained, overlap и др.) для целочисленных массивов с индексным поиском на основе на основе обобщенных поисковых деревьев (GiST,GIN). Эти операции позволяют осуществлять поиск похожих объектов, чьи атрибуты могут быть эффективно спроектированы (например, с использованием хэш-функций) в пространство целых чисел, используя различные метрики.
- хранение и поиск слабо-структурированной информации - версия PostgreSQL 9.1 содержит расширение hstore, которое предоставляет собой (key,value) хранилище с индексной поддержкой на основе обобщенных поисковых деревьев (GiST,GIN). Расширение hstore предоставляет большое количество операций и функции для эффективной работы со cлабо-структурированной информацией;
- поддержка мандатной политики доступа применительно ко всем объектам СУБД (таблицам, колонкам, записям) и интеграция с системой безопасности операционной системы для обеспечения целостности системы безопасности независимо от системы авторизации СУБД - версия PostgreSQL 9.1 содержит расширение sepgsql (http://code.google.com/p/sepgsql/), которое предоставляет мандатную политику доступа к объектам СУБД, основанную на политике безопасности, реализованную в ОС SELinux;
- поддержка ролевой системы политики доступа к объектам СУБД - версия PostgreSQL 9.1 содержит поддержку контроля доступа к объектам СУБД на основе ролей;
- поддержка работы по защищенным (шифрованным) соединениям - версия PostgreSQL 9.1 содержит поддержку SSL соединения (используется OpenSSL на стороне сервера и клиента), кроме того, можно использовать SSH-туннели;
- поддержка гибкой системы аутентификации (на основе GSSAPI, SSPI, LDAP, РАМ, Kerberos, Ident) - версия PostgreSQL 9.1 содержит поддержку различных способов аутентификации клиентского приложения, которые могут быть сконфигурены для каждого ip-адреса клиента, специфицированной база данных и пользователя;
- поддержка шифрования объектов СУБД для защиты информации от несанкционированного использования - версия PostgreSQL 9.1 содержит расширение pgcrypto, которое предоставляет большое количество шифрующих функций, использующие широко-используемые алгоритмы и стандарты (MD5, SHA1, SHA224/256/384/512,Blowfish,AES,DES/3DES/CAST5,PGP Symmetric encryption,PGP Public-Key encryption и др.);
- поддержка разработки новых пользовательских типов данных и запросов с эффективными методами доступа и их использование без остановки сервера НСУБД - версия PostgreSQL 9.1 содержит инфраструктуру расширяемости для создания новых типов данных и новых запросов без остановки сервера. Обобщенные поисковые деревья (GiST, GIN) позволяют реализовывать новые типы данных с полной поддержкой конкурентности, восстанавливаемости после сбоев, операции над ними с индексной поддержкой для улучшения производительности, основываясь только на описанных програмных шаблонах
- локализация программного обеспечения - перевод сообщений на русский язык в версии PostgreSQL 9.1 осуществлен с помощью стандартных средств GNU (http://en.wikipedia.org/wiki/Internationalization_and_localization), в частности использованием библиотеки i18n. Все сообщения сервера баз данных, клиента переведены на русский язык и доступны для модификации.