Fluidinfo
Последнее изменение этой страницы: 16:10, 30 января 2019.
![]() | |
Создатели: | Terry Jones, Esteve Fernandez |
---|---|
Разработчики: | Fluidinfo |
Выпущена: | 17 August 2009 года |
Состояние разработки: | Alpha |
Написана на: | Python, Twisted, PostgreSQL, Thrift, AMQP, Lucene |
Веб-сайт |
fluidinfo |
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
Источники
- ↑ 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)
ISSN 2542-0356
Следуй за Полисом
Оставайся в курсе последних событий
Лицензия
Если не указано иное, содержание этой страницы доступно по лицензии Creative Commons «Attribution-NonCommercial-NoDerivatives» 4.0, а примеры кода – по лицензии Apache 2.0. Подробнее см. Условия использования.