Хранение сериализованных данных в объекте в Neo4j - PullRequest
1 голос
/ 05 октября 2011

Я только что перенес свое приложение Rails с MySql на Neo4j. Я храню список сайтов пользователей в виде сериализованной строки в моей БД (например, User.websites = "www.facebook.com", "www.twitter.com" и т.

Когда я пытаюсь создать или обновить этот атрибут, я получаю следующую ошибку:

RuntimeError (Не разрешено хранить массив со значением ...

Как лучше всего хранить массив или сериализованные данные в Neo4j?

Ответы [ 2 ]

3 голосов
/ 05 октября 2011

Это сильно зависит от того, что вы хотите сделать позже с этими данными. Являются ли эти сайты значимыми особенностями вашей модели данных? или просто что-то записывает?

В случае 1, то есть в случае значимых деталей вашей модели. Я рекомендую иметь что-то вроде этого пользователя --- [related_to] ---> Веб-сайт (url: string)

В случае 2 они могут быть просто массивом строк внутри пользовательского узла. Как вы можете видеть в документации Neo4j API , вы можете хранить в качестве свойств следующий набор типов:

  • логическое или логическое []
  • байт или байт []
  • короткий или короткий []
  • int или int []
  • длинный или длинный []
  • плавать или плавать []
  • двойной или двойной []
  • char или char []
  • java.lang.String или String []

    • purbon
0 голосов
/ 25 января 2012

В дополнение к обсуждению выше, вот пример способа сериализации (http://gist.github.com/1674551)

neo4jhelpers.rb

module Neo4j
  module TypeConverters
    class SerializeConverter
      # serializes to sting
      class << self

        def convert?(type)
          type == :serialize
        end

        def to_java(value)
          return nil unless value
          JSON.generate(value).to_s
        end

        def to_ruby(value)
          return nil unless value
          JSON.parse(value.to_s)
        end
      end

    end
  end
end

Neo4j::TypeConverters.converters = nil # reload converters
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...