Different sides of random bytes

понедельник, апреля 26, 2004

LDB

С момента начала разработки Samba 4 прошел уже почти год. Что удалось сделать за это время Andrew Tridgell? Отвечу сразу -- удалось многое, однако важным моментом является создание целого ряда средств, пригодных не только в рамках Samba 4. К ним относится и LDB -- легкая база данных с LDAP-подобным интерфейсом, позволяющая хранить любую информацию в структурированном виде. LDB на сегодня поддерживает два хранилища -- традиционную для Samba внутреннюю однофайловую базу данных TDB (Trivial database) и LDAP. Фактически, это очень облегченный вариант LDAP, не требующий предварительной настройки. Создал базу -- и сразу используй. Отличие от полноценного LDAP -- в том, что база данных не имеет предопределенной схемы и существуют ограничения на язык запросов.

LDB можно модифицировать как при помощи утилит командной строки, так и через API, что обеспечивает широкие возможности интеграции. В качестве входного формата для утилит командной строки используется хорошо знакомый LDIF из RFC 2849. Вот, например, test-config.ldif, описывающий прототип нового файла настроек Samba 4:

##############################
# global configuration options
dn: cn=Global,cn=Config,cn=Samba
objectclass: globalconfig
Workgroup: VNET3
UnixCharset: UTF8
Security: user
Interfaces: vmnet* eth*
NetbiosName: blu
GuestAccount: tridge

##############################
# [test] share
dn: cn=test,cn=Shares,cn=Config,cn=Samba
objectclass: fileshare
cn: test
Comment: a test share
Path: /home/tridge/samba4/prefix/test
ReadOnly: no

#####################################
# [msdn] a remote proxy share, stored
# on \\msdn\test
dn: cn=msdn,cn=Shares,cn=Config,cn=Samba
objectclass: fileshare
cn: msdn
NtvfsHandler: cifs
ReadOnly: no
_CifsServer: msdn
_CifsUser: administrator
_CifsPassword: penguin
_CifsDomain: winxp
_CifsShare: test


##############################
# [VisualC] share
dn: cn=visualc,cn=Shares,cn=Config,cn=Samba
objectclass: fileshare
cn: VisualC
Comment: VisualC development
Path: /home/tridge/VisualC
ReadOnly: no
NtvfsHandler: simple

Как можно видеть, это очень похоже на обычные записи в LDAP. Конечно, нарушения схемы не проверяются, да они и не важны здесь, поскольку главная задача была получить облегченный механизм хранения записей, не сильно расходящийся с LDAP.

Зачем же это надо? Во-первых, унификация на концептуальном уровне позволяет абстрагироваться от особенностей реализации хранилища и использовать единый интерфейс для хранения настроек и собственно данных внутри Samba 4, тем более, что упор на LDAP делается давно. Во-вторых, и это существенно для администраторов систем, развертывание полноценного LDAP для базовой конфигурации является слишком тяжелым решением. В-третьих, LDB может использоваться и другими проектами там, где нужно хранить структурированные записи или информацию, разделяемую между несколькими приложениями.