обзор
Chronicle Engine — это уровень виртуализации данных. Он абстрагируется от сложности доступа, манипулирования и подписки на различные источники данных, так что пользователю этих данных не нужно знать, как и где эти данные фактически хранятся. Это означает, что эти данные могут быть перенесены между системами или сохранены более эффективным, но сложным для использования разработчиком способом.
Основными интерфейсами являются Concurrent Map и простой Pub / Sub. Используя их в сочетании с такими потоками, как фильтры и преобразования, вы можете получить доступ к файлам, в кэшах данных памяти, LDAP, базах данных SQL, базах данных NoSQL с ключом-значением и постоянных хранилищах с низкой задержкой.
Мы исследуем использование NFS в качестве средства доступа, а также нашего клиента на Java и C # для естественного доступа к данным. Таким образом, любая программа в Windows, Unix или MacOSX может использовать его. Как это может выглядеть?
Доступ через NFS.
Хранилища данных в Chronicle Engine организованы иерархически в виде дерева, а не в виде структуры каталогов. Ключи хранилища значений ключей похожи на файлы в каталоге, а значения — на содержимое файла. Это переводит на виртуальную файловую систему.
В Java для доступа к карте на сервере или удаленном клиенте.
| 
 1 
2 
3 
4 
 | 
Map<String, String> map = acquireMap("/group/data", String.class, String.class);map.put("key-1", "Hello World");map.put("key-2", "G-Day All"); | 
Однако при монтировании NFS мы можем получить доступ к одной и той же карте из любой программы, даже из оболочки.
| 
 1 
2 
3 
 | 
~ $ cd /group/data/group/data $ echo Hello World > key-1/group/data $ echo G-Day All > key-2 | 
Чтобы получить значение, это действительно просто в Java:
| 
 1 
 | 
String value = map.get("key-1"); | 
А через NFS это тоже просто:
| 
 1 
2 
 | 
/group/data $ cat key-1Hello World | 
А как насчет более сложных функций?
Преимущество наличия собственного NFS-сервера состоит в том, что мы можем добавлять виртуальные файлы, которые могут выполнять функции, если они соответствуют общему договору о доступе к файлам.
В Java мы можем применить запрос, чтобы получить в реальном времени всех людей старше 20 лет. Если запись добавлена, она печатается, как это происходит.
| 
 1 
2 
3 
4 
 | 
map.entrySet().query()    .filter(e -> e.getValue().age > 20)    .map(e -> e.getKey())    .subscribe(System.out::println);; | 
Так как это можно перевести на NFS?
| 
 1 
2 
3 
 | 
/group/data $ tail -9999f '.(select key where age > 20)'Bob BrownCate Class | 
Это даст вам все текущие имена, но любые новые имена, как они происходят.
Выбор вашего формата.
Имея виртуальные файлы, вы можете запросить их в другом формате. Скажем, базовый объект данных — это строка в базе данных RDBMS. Возможно, вы захотите это в формате CSV, но вы можете захотеть это в XML или JSON.
| 
 01 
02 
03 
04 
05 
06 
07 
08 
09 
10 
11 
12 
13 
14 
 | 
/group/users $ lspeter-lawrey/group/users $ cat peter-lawrey.csvPeter,Lawrey,UK,1001/group/users $ cat peter-lawrey.xml<user id="1001">    <first>Peter</first>    <last>Lawrey</last>    <country>UK</country></user>/group/users $ cat peter-lawrey.json{"user": { "id": "1001", "first": "Peter", "last": "Lawrey", "country": "UK" }} | 
Добавив распознанное расширение файла, файл может появиться в нужном формате.
Обновление записи может быть так же просто, как запись в файл.
В чем преимущества использования обычной файловой системы NFS?
Основным преимуществом является расширяемость. Хроника поддержки двигателя;
- миллиарды записей в одной карте (директории)
 - Репликация данных LAN и WAN.
 - в режиме реального времени обновления изменений.
 - поддержка запросов.
 - Сжатие данных
 - формирование трафика.
 - возможность проверки того, кто что изменил, когда.
 
Мы также планируем поддерживать распространение данных и поддерживать больше внутренних хранилищ данных.
Обратная связь
Для чего бы вы использовали такую систему? Какие черты ты бы соврал, чтобы увидеть? Вы можете оставить комментарий здесь или на форуме Хроники . Я с нетерпением жду ваших мыслей.
| Ссылка: | Доступ к Chronicle Engine через NFS от нашего партнера JCG Питера Лоури из блога Vanilla Java . |