Fluidinfo

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:10, 30 января 2019.
FluidinfoDB
Fluidinfo-logo.png
Создатели: Terry Jones, Esteve Fernandez
Разработчики: Fluidinfo
Выпущена: 17 August 2009 года; 11 years ago (2009-08-17)
Состояние разработки: Alpha
Написана на: Python, Twisted, PostgreSQL, Thrift, AMQP, Lucene
Веб-сайт fluidinfo.com

Fluidinfo - это общий онлайн-хранилище облачных данных на основе тегов с значениями. Это позволяет любому пользователю хранить, организовывать, сделать запрос и обмениваться данными о чем-либо.[Источник 1].

Особенности

  • Fluidinfo написан на языке Python;
  • Fluidinfo является общедоступной базой данных без схемы (схема предоставляет язык запросов, детальную модель разрешений и способствует совместному использованию данных, как публично, так и в группах);
  • Fluidinfo классифицируется как тип общедоступной «коллективной базы данных» из-за отсутствия базовой структуры РСУБД.

Описание

Пользователи добавляют информацию в Fluidinfo, связывая данные с вещами через именованные теги. Легко извлекать информацию, и есть простой язык запросов для поиска хранилища данных. Пять основных концепций охватывают то, как работает Fluidinfo: Объекты представляют вещи (реальные или воображаемые);

  • теги прикрепляют информацию к объектам;
  • пользователи используют свои собственные теги для присоединения данных к общим объектам;
  • система разрешений определяет, кто может читать и записывать каждый тег (Объекты не имеют владельцев, поэтому любой человек может пометить любой объект);
  • запросы выбирают объекты, указав свойства их тегов и значений. Выбранные объекты могут быть прочитаны или помечены.

Объекты, представляющие "вещи", идентифицируются глобально уникальной строкой значения "about". Существует объект в Fluidinfo для каждой возможной строки unicode - "moscow", "☾♠♣♥♦☽", "book:getting started with fluidinfo", "http://wikipedia.com", "3.14159265" и так далее. Каждый пользователь прикрепляет произвольные именованные теги к любому из этих объектов. Теги могут иметь типизированные значения; например, пометить объект "moscow" с числовым рейтингом (author/rating=10), описание строки (author/description=”Belle”) и изображение JPEG (author/photo=<a jpeg blob>).

Система разрешений позволяет пользователям контролировать, кто может читать и записывать каждый из их тегов, а простой язык запросов позволяет им выбирать объекты и читать данные на основе их собственных тегов и других людей (с учетом разрешений). Например, следующий запрос соответствует объектам, к которым автор (author) добавил комментарий, что и пользователь (user), и я добавили рейтинг больше, чем 6 к и чьи о значениях содержат строку "book:":

has author/comment and (author/rating > 6 and user/rating > 6) and fluiddb/about matches "book:"

Обратите внимание, как имена тегов ограничиваются именем пользователя (например, и user в приведенном выше примере), поэтому происхождение данных очевидно.

Система разрешений

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

  • закрытая или открытая политика;
  • список исключений из политики.

Различные действия, которые могут быть выполнены на тэге:

  • read;
  • update;
  • create;
  • see.

Комбинация различных действий с политиками и исключениями обеспечивает тонкую модель разрешения в Fluidinfo. Только теги и пространства имен имеют разрешения, допускающие различные уровни контроля. Объекты (основная структура данных Fluidinfo) не имеют владельцев и поэтому не могут контролироваться пользователями / приложениями.

Клиентская библиотека

Чтобы полностью работать с Fluidinfo через curl, лучше использовать клиентскую библиотеку. Например, сеанс Python иллюстрирует fluidinfo.py модуль, который образует тонкий слой поверх API HTTP (есть больше абстрактных библиотек, таких как FOM [Fluid Object Mapper] и управляемый событиями fluidinfo.js).

Программное обеспечение

Fluidinfo имеет ПО для упрощения импортов данных в хранилище. Называется FLuiddb IMPorter (flimp). При импорте данных из исходного файла flimp предполагает следующее:

Исходный файл может быть преобразоваться в список объектов dict для Python. Схема / структура каждой импортируемой записи одинакова (flimp использует первую запись в качестве шаблона для создания пространств имен и тегов) У вас есть соответствующие учетные данные для FluidDB и вы можете предоставить метаданные о наборе данных (имя и описание) При импорте данных из файловой системы flimp отобразит такие вещи:

  • Каталог -> Пространство имен;
  • Имя файла -> тег;
  • Содержимое файла -> значение, помеченное для объекта.

Flimp будет игнорировать скрытые файлы и каталоги (те, которые начинаются с '.' ).

Можно указать объект, который будет помечен данными на основе файловой системы. Фактически, можно настроить большинство аспектов импорта данных во FluidDB. См. Пример справочного сообщения ниже для получения дополнительной информации.

$ flimp -h
Usage: flimp [options]

Options:
  --version              show program's version number and exit
  -h, --help             show this help message and exit
  -f FILE, --file=FILE   The FILE to process (valid filetypes: yaml, json, csv)
  -d DIRECTORY, --dir=DIRECTORY 
                        The root directory for a filesystem import into
                        FluidDB
  -u UUID, --uuid=UUID   The uuid of the object to which the filesystem import
                        is to attach its tags
  -a ABOUT, --about=ABOUT 
                        The about value of the object to which the filesystem
                        import is to attach its tags
  -p, --preview          Show a preview of what will happen, don't import
                        anything
  -i INSTANCE, --instance=INSTANCE 
                        The URI for the instance of FluidDB to use
  -l LOG, --log=LOG      The log file to write to (defaults to flimp.log)
  -v, --verbose          Display status messages to console
  -c, --check            Validate the data file containing the data to import
                        into FluidDB - don't import anything


$ flimp -f data.json
FluidDB username:  test
FluidDB password: 
Absolute Namespace path  (under which imported namespaces and tags will be created): test/foo
Name of dataset (defaults to filename) [data]:  test_data
Key field for about tag value (if none given, will use anonymous objects): 
Description of the dataset:  This is a test
Working...  (this might take some time, why not: tail -f the log?)
Done 

$ flimp -d test_directory
FluidDB username:  test
FluidDB password: 
Absolute Namespace path (under which imported namespaces and tags will be created):  test/bar
Name of dataset:  testdata
Description of the dataset:  This is some test data
Working...  (this might take some time, why not: tail -f the log?)
Tags added to object with uuid:  4d21335a-d584-4db6-bed8-ac19cb75ee32

Источники

  1. String Processing and Information Retrieval, International Symposium on (2000) // Блог. Дата обновления: 29.09.2000. URL: https://www.computer.org/csdl/proceedings/spire/2000/0746/00/07460017-abs.html (дата обращения: 21.01.2019)