2011-10-05 3 views
1

방금 ​​MySql에서 Neo4j로 Rails 애플리케이션을 마이그레이션했습니다. 나는 사용자의 웹 사이트 목록을 내 DB (예 : User.websites = "www.facebook.com", "www.twitter.com"등)에 일련화된 문자열로 저장했습니다.Neo4j의 객체에 직렬화 된 데이터 저장

만들거나 나는 다음과 같은 오류 얻을 속성을 업데이트하려면

RuntimeError (Not allowed to store array with value...

Neo4j의 배열이나 직렬화 된 데이터를 저장에 대해 갈 수있는 가장 좋은 방법은 무엇입니까?

답변

3

이 데이터는 나중에 수행하려는 작업에 따라 크게 달라질 수 있습니다. 이 웹 사이트는 귀하의 데이터 모델의 중요한 부분입니까? 아니면 그냥 로깅 물건입니까?

사례 1의 경우, 모델의 의미있는 대용품 인 경우. 내 추천은이 사용자와 같은 것입니다 --- [related_to] ---> 웹 사이트 (URL : 문자열)

경우 2의 경우 사용자 노드 내부의 문자열 배열 일 수 있습니다.

  • 부울 또는 부울 []
  • 바이트 또는 바이트 []
  • 짧거나 짧은 []
  • INT : 당신이 Neo4j api documentation에서 볼 수 있듯이, 당신은 속성으로 다음 유형의 설정을 저장할 수 있습니다 또는 []
  • 길거나 긴 []
  • 플로트 지능이나 []
  • 더블 더블 []
  • char 또는 C 부동 HAR []
  • java.lang.String의 또는 문자열 []

    • purbon 위의 논의에 추가
+1

사례 # 2입니다. 어쨌든 Neo4j에서 문자열을 쉽게 serialize/deserialize 할 수 있습니까? ActiveRecord에는이 매우 동일한 기능에 대한 "serialize"메서드가 있습니다 ... – thoughtpunch

+0

정말 아닙니다. neo4j 보석이 ActiveRecord와 더 유사한 것을 제공하는지 살펴볼 수 있습니다. 그러나 확실하지 않습니다. – purbon

+0

안녕하세요, 저는 보통 당신에게 더 많은 유연성을 제공하기 때문에 사건 1을 선호합니다. 항목의 순서가 적절한 경우 항목을 목록 (has_list)으로 저장할 수 있습니다. Neo4j.rb는 원시 값 (String, int, byte 등)의 배열을 저장하려는 경우 case 2를 지원합니다. 배열의 모든 항목이 동일한 유형인지 확인하십시오. –