cancel
Showing results for 
Search instead for 
Did you mean: 

Head's Up! These forums are read-only. All users and content have migrated. Please join us at community.neo4j.com.

Modelling translation relationship for a multilingual app

mithun_das
Graph Buddy

I am working on Multilingual Social Network App...
We have translation for everything in our app ...
I was wondering whats the best way to achieve it.....
Initially I thought of doing like following

(x)-[:en]->(enX)
(x)-[:fr]->(frX)

but then as we can have too many language codes in future... i prefered

(x)-[:HAS_TRANSLATION { locale: "en" }]->(LocaleOfX)

While doing this my client also wants to store the Languages that we offer in db... thus my question is which of the below three will give optimum performance and why...
Choice1

(x)-[:HAS_TRANSLATION { locale: "en" }]->(LocaleOfX)

Choice2

(x)-[:HAS_TRANSLATION]->(LocaleOfX { locale: "en" })

Choice3 (not sure of the query, but trying to establish a relation be

(x)-[:HAS_TRANSLATION]->(:Language { code: "en" })-[:HAS_LOCALE]->(LocaleOfX)

I am really confused here, so a help is needed from the experts

1 ACCEPTED SOLUTION

yyyguy
Graph Buddy

Hey @mithun.das,

For my money, Choice 3 is my preferred approach.

Here are a few reasons:

  1. When you need to query for Locale or Language, you have a node as a starting point rather than a relationship. You will get a better database performance.
  2. Also, from a performance perspective, you can put indexes on node properties, but not on relationship properties.

FWIW, that's my 2 cents.

-yyyguy

View solution in original post

2 REPLIES 2

yyyguy
Graph Buddy

Hey @mithun.das,

For my money, Choice 3 is my preferred approach.

Here are a few reasons:

  1. When you need to query for Locale or Language, you have a node as a starting point rather than a relationship. You will get a better database performance.
  2. Also, from a performance perspective, you can put indexes on node properties, but not on relationship properties.

FWIW, that's my 2 cents.

-yyyguy

Thank you sir... I am doing this exact modelling but was a bit confused if I am over complicating it or not.
But your response asured me.... especially the indexing point was something that was completely out of mind. Thank you.