Showing revision 1

pgnpp

Выбор Национальной СУБД (НСУБД) как важнейшей составляющей НПП должен основываться на анализе требований потенциальных потребителей, а также возможностей по разработке собственной СУБД, или использования уже имеющейся СУБД с открытым кодом, обладающей требуемой функциональностью. Разработка собственной СУБД с нуля, или даже создание собственной ветки разработки существующей СУБД, в современных условиях недостатка квалифицированных разработчиков, не представляется возможным, особенно, учитывая время (несколько лет), выделенное на разработку НПП. Таким образом, единственным кандидатом на НСУБД остается существующая СУБД, обладающая базовой функциональностью, предъявляемую к современным СУБД для промышленного, государственного и бизнес-применения – поддерживать транзакции, целостность, изоляцию, конкурентность, репликация данных и восстановление после сбоев, а также доступная по свободной лицензии. Кроме того, немаловажно, чтобы эта СУБД имела большое сообщество, долгую историю, квалифицированных разработчиков и не зависела от какой-либо компании. Наличие в команде разработчиков отечественных специалистов является дополнительным аргументов в пользу такой СУБД, так как позволяет проводить политические решения и влиять на приоритеты разработки. Среди множества разновидностей СУБД (http://en.wikipedia.org/wiki/Database) можно выделить реляционные СУБД (РСУБД) как наиболее востребованный тип СУБД для использования в государственных организациях, имеющий долгую историю развития и хорошую теоретическую базу. Если взглянуть на список РСУБД (http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems), то среди больше 50 РСУБД очевидно выделяется PostgreSQL (http://www.postgresql.org), как наиболее продвинутая РСУБД, доступная по свободной лицензии BSD, имеющая большое сообщество пользователей и разработчиков, долгую историю развития, независимую от какой-либо компании, широко используемая в России, которая удовлетворяет всем описанным требованиям. Полный список возможностей PostgreSQL можно посмотреть на сайте проекта (http://www.postgresql.org/about/featurematrix). В составе команды разработчиков присутствуют двое российских разработчиков, входящих в ядро команды и реализовавшие много из списка базовых возможностей 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 содержит расширение sepgql (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 осуществлен с помощью стандартных средств с использованием .po файлов. Все сообщения сервера баз данных, клиента переведены на русский язык и доступны для модификации.