Статьи

Управление вашим приложением как файловой системой

обзор

«База данных — это интеллектуальная файловая система» — Аноним

«Ваша база данных / приложение является файловой системой» — Chronicle Software.

Зачем монтировать ваше приложение как файловую систему?

Основные преимущества использования файловой системы:

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

Что такое хроника двигателя?

Chronicle Engine позволяет настраивать подписки и получать уведомления о том, когда что-то изменится, например, новые карты или записи, которые будут добавлены / удалены или изменены. Эти подписки также определяются через пространство имен.

Вы можете думать о пространстве имен как о пути к файлу, где файл находится внутри каталога. И каталог находится внутри другого каталога. Обычно вы получаете доступ к хронической карте через интерфейс программирования Java. В летописи вы могли бы сказать что-то вроде:

1
Map<String, String> map = tree1.acquireMap(“/root/data/mymap", String.class, String.class)

Эта команда создает Map<String , String> в виртуальном каталоге с именем /root/data/

Поскольку это виртуальный каталог, если вы посмотрите на свою файловую систему, вы не увидите этот каталог. Для определенного класса проблем достаточно просто получить доступ к карте через Java. Однако, если карта содержала, например, информацию о конфигурации вашей системы, иногда желательно (конечно, с соответствующими правами доступа) иметь возможность монтировать эту виртуальную файловую систему так, как если бы она была настоящей файловой системой. Таким образом, теперь мы обеспечили поддержку NFS для Chronicle Engine, поскольку это NFS, он позволяет перемещаться по виртуальной файловой системе, как если бы она была настоящей файловой системой. Вы можете редактировать и изменять записи вашей карты, как если бы они были файлами. Записи отображаются в виде файлов, а карта является каталогом этих файлов. Другие пользователи, например, те, кто используют Java, увидят измененную запись, как если бы вы изменили ее через интерфейс Java. Подписчики, которые регистрируются на изменения, все равно будут получать уведомления.

Как это выглядит?

У Chronicle Engine есть демоверсия с включенной NFS. Файл конфигурации находится в YAML. engine.yaml Раздел, в котором настроена NFS:

01
02
03
04
05
06
07
08
09
10
11
12
13
    #
# Allow access via NFS to this engine.
    #
    nfs: !NfsCfg {
      enabled: true,
      debug: false, # log every NFS request.
      exports: {
      # export everything.
        "/": "*(rw,noacl,anonuid=1000,anongid=1000)",
        "/data": "*(rw,noacl,anonuid=1000,anongid=1000)"
        "/stocks": "*(rw,noacl,anonuid=1000,anongid=1000)"
      }
    }

Файл конфигурации на самом деле является десериализацией сборщиков. Это означает, что любой компонент может быть заменен даже сам формат файла без изменения вызывающего кода. Если вы включите отладку, вы сможете увидеть все вызовы NFS, сделанные виртуальной файловой системой.

Как вы можете смонтировать приложение?

Chronicle Engine — это иерархический набор структур данных. Вы можете думать об этом как о каталогах хранилищ данных. К ним можно получить удаленный доступ через наш клиент Java или C #, но он также может быть доступен как файловая система NFS.

Двигатель Demo1

Демонстрационный движок настроен так, чтобы иметь каталог etc для конфигурации, каталог данных для общей информации и каталог акций для цен на акции от FTSE и NYSE.

Ключи хранилищ значений ключей отображаются в виде имен файлов, а значения превращаются в текст. В случае с акциями это на самом деле простой Java-объект, но он превращается в формат YAML, что может быть десериализовано читателем.

Эти структуры данных доступны только для чтения, но давайте рассмотрим некоторые изменяемые.

Двигатель Demo2

Все это кажется довольно простым, пока вы не подумаете, что изменяете хранилище значений ключей в процессе Java. Это изменения, на которые вы можете подписаться через клиента и получать обновления в режиме реального времени. В этом случае это просто оболочка ConcurrentHashMap, но это может быть ChronicleMap, служба LDAP или база данных, связанная с JDBC.

Вы можете выполнять такие операции через JMX, однако это не естественный способ управления вашими данными.

Код для Демо

Следующая версия Engine будет иметь эту функциональность к сентябрю 2015 года.

Вывод

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