Хранение троек в Node.js - PullRequest
5 голосов
/ 15 марта 2012

Я занимаюсь разработкой приложения в Node.js , и у меня есть данные в виде тройки в формате json:

{
    subject:"Hello",
    predicate:"Knows",
    object:"World"
}

Я бы хотел иметь возможностьчтобы сохранить мои данные в [data | triple] хранилище относительно простым способом.

Значения данных в кортеже также должны быть доступны для поиска.

Я смотрел на использование существующего RDF-сервера и доступ к немуэто через HTTP, но хотелось бы избегать использования Sparql (обходной путь может заключаться в том, чтобы иметь отдельный модуль javascript, который оборачивается вокруг Sparql).

Существуют ли какие-либо модули Node, которые имеют дело с хранением троек?Если нет, то каким было бы прагматичное решение для хранения троек?

Ответы [ 4 ]

2 голосов
/ 23 декабря 2014

Я только что создал очень легкий JS-фреймворк, который выполняет именно то, что вы хотите:

https://www.npmjs.com/package/hexastore

Добавление троек:

mydb.putAll([
  ["hexastore","is","nice"],
  ["hexastore","speed","fast"],
  ["javascript","is","nice"]
]);

Тройки запросов:

var result = db.search([
  [["what"],"is","nice"]
]);
// result == [{what:hexastore},{what:javascript}]
2 голосов
/ 15 марта 2012

Правда, я не знаю ни одного хранилища данных, которое оптимизировано для хранения 3-х кортежей (троек) для Node.js.Не зная больше о проблеме, которую вы решаете, и о соответствующей области, сложно дать конкретный совет.Учитывая текущую информацию, которую вы предоставили, для каждой тройки я бы создал ключ.Затем выберите либо MongoDB (возможно, перебор), Redis (хэш или набор) или ассоциативный массив JavaScript в зависимости от ваших требований.

Если вы ищете производительность среди многих клиентов Node.js, то использование Redis с этим будет работать отлично.

2 голосов
/ 16 марта 2012

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

С учетом вышесказанного, я знаю несколько вариантов: эта платформа реализует предложенный стандарт RDF interface в Javascript. Не знаю, можете ли вы подключить его к существующему тройному хранилищу или как, но это может сработать для представления ваших данных. Эта библиотека работает с jQuery для обеспечения некоторой поддержки RDF. Наконец, есть эта библиотека , которая пыталась быть компактным представлением RDF в Javascript.

Другой вариант - это спецификация RDF / JSON LD , которую с ее представлением JSON довольно легко использовать в Javascript.

2 голосов
/ 15 марта 2012

Если вам нужен доступ к данным только по ключу (например, идентификатору пользователя), используйте хранилище значений ключей, например Redis , и подключитесь к нему с помощью node_redis .

Если вам нужно выполнить поиск данных в тройке, используйте MongoDB и подключитесь к нему с помощью чего-то вроде Mongoose .

...