Sam from New York enters the room


(Sam) #1

Hey all,

I was on the slack neo4j community and am now following the crowd here. I've been using Neo4j to explore healthcare data in new and interesting ways (to me and my company, at least) and it's been really fun. My goals are to keep doing so and to integrate it into our many approaches to exploring and understanding our data and to one day make it a permanent part of our solution set.

Thanks and good to meet you all.
Sam


(Michael McKenzie) #2

Welcome to the community Sam! That sounds very interesting. I hope your exploration continues to go well. Be sure to explore and search around the site. There are a lot of very helpful people floating about. And searching on what others have questions on is extremely helpful.

If you have any questions, be sure to ask!

Cheers,
Michael


(Kevin Urban) #3

Hi Sam -- I also work in NY in the healthcare space (w/ a focus on wearable devices). I've been picking up the ins-and-outs of Neo4j/Cypher over the past couple months, working on a relationship-heavy, graph-oriented project. Lots to like about Neo4j in general, and Cypher for sure. Wish there was an option for check constraints though (instead of having to do it at the application layer). How about you -- how has your experience been with Neo4j so far: any important lessons learned?


(Sam) #4

Hey Kevin,
Sorry for the slow response.

Nice to meet you.

I've been doing mostly experimental stuff in Neo4j. I've created some graphs with millions of nodes and relationships and found success in some experiments and crashed and burned on others. I'd say that the most important thing I've learned is to start with a goal in mind and work from there in small steps. Just moving data into Neo4j wasn't a good approach because there was no real goal to it and I wound up with just a bunch of data moved from one DB to another. Once I thought of an experiment I wanted to conduct (generally, to find implied relationships between specific types of providers based on services rendered), things got interesting because I then had a framework to build that involved the creation of specific schema 'shapes' for analysis.

Hope that makes sense. :slight_smile:
Sam


(Kevin Urban) #5

Hi Sammy -- thanks for the reply!

Makes total sense. I've spent the most of my time experimenting and mapping out different graph schema, getting a feel for how certain design decisions affect queries and impact the graph's ease-of-use for specific business questions/statements.

For my current project, we have a ton of related data scattered about different CSV files in various denormalized states, so a part of the process has been: "Ok, given I've designed a good graph data model, how should I first organize and tabularize all of our data assets so that I can then bulk load it into Neo4j?"
A related challenge, then, has been: "How do I then make sure the Cypher statements I am using to define nodes and relationships during this bulk load actually, in fact, match the data model."

Neo4j's uniqueness and existence constraints help on that last part, as well as using MERGE correctly. Check constraints on a property's values would be helpful, but I haven't found them to exist (maybe in APOC?), so I'm planning to get my hands dirty on a Py2Neo/Flask layer -- for the bulk load, sure, but more generally for new data that will arise, which other people might/will be in charge of updating the graph with. (Do you have any experience with that?)