|
kmoorevs wrote: XML and LINQ maybe?
Hmmm, not really what I have in mind. That would end up looking a lot like a NoSQL database then.
Marc
|
|
|
|
|
If I remember my math correctly, you can have a graph that has null edge, but not null vertice.
So if neo4j is done correctly, you can't do it. Depending on your definition of correctly.
And as for there not being any semantic databases, did you really search? Maybe I'm misunderstanding your perception of semantic database, but there seems to be several out there.
Amongst others, Oracle supports semantic modeling (and graphs and ontologies) as features of Oracle spatial[^], if you can afford it.
BTW there's a .Net version called Neo4net if you don't want to get dirty with Java.
|
|
|
|
|
Jörgen Andersson wrote: but not null vertice.
I would still have vertices, it's just that some nodes are abstract (like abstract classes) and require a "is a kind of" relationship to another node, perhaps abstract, perhaps with some concrete properties.
Jörgen Andersson wrote: as features of Oracle spatial[^], if you can afford it.
I'm staying away from RDF and OWL as it's silly complex for structures that are more (and different) than just subject-predicate-object triples. This actually excludes a lot of graph databases, as about 50% of them seem to be tailored to working with RDF triples (there's a long long list on wikipedia, I'm of course also looking for something that hopefully works painlessly with .NET.)
Marc
|
|
|
|
|
Did you look at orientdb... it seems to be a mix between a document db and a graph db and a relational db
|
|
|
|
|
Member 3752561 wrote: Did you look at orientdb... it seems to be a mix between a document db and a graph db and a relational db
No, I hadn't. Thanks for providing the link. I'm impressed with their clean documentation and simple SQL-like query language. Much easier to understand than Neo4j's syntax!
Marc
|
|
|
|
|
i think the biggest problem for this style of project (orientdb, neo4j, mongodb etc) is the fact that client are develop and maintain by external developper (now mongodb have internal dev for each port of client and that s a very cool thing)
if you look at the binary client for orientdb in .net, the last release is 2 years ago .... I think if you choose oriendb , you must do your own client.
|
|
|
|
|
I have used neo4j in a couple large projects and absolutely love it. I still use mysql for transaction data (i.e. accounting, it's just more practical), and mongodb for centralizing document stores (images, uploads, css/js files), but for what you described neo would work just fine.
Keep in mind you can also apply labels to the nodes to allow you to query the data in a more meaningful way.
Neo4j isn't the end all/be all, but it's very useful for me, not to mention because of it's nature of related nodes, super quick for the data extraction that I do.
|
|
|
|
|
I've been looking at Neo4J recently. I'm not quite sure what you want to achieve but if it helps, individual nodes and relationships can have whatever properties you want or none at all (the equivalent of properties in a sql database would be fields that are part of the hard-coded structure of the table and so are fixed even if they are optional).
You can group nodes by assigning labels to them eg "Person". Nodes that have the same label don't have to share the same properties and a node can have as many properties as you like within practical limits. Labels help you to search for nodes or relationships that have something in common. I generally like this kind of tagging because you can use tags to group different objects in different ways which is more fluid than trying to impose a structure that isn't supposed to change.
If you download the Neo4J community edition, it comes with a built-in web server that enables you to try out queries in your browser and see a visual representation of the graph
|
|
|
|
|
I do not know if I understand what you want, but how do you use such a database. If the DB engine do not use concept of internal structure of the node, it cannot select/filter a concrete node, unless you already selected it. So the DB engine could do only one type of operation - load all database in memory. No indexes could be build without inner structure of nodes in the graph.
To achieve performance for your model I suggest ArangoDB. In a graph view, you could achieve simple graph by just adding "empty documents" into the database with the overflow of a single hash (ID) for every node and two hashes ("_from" and "_to") for every edge.
As for Neo4j I'm almost sure it can be used with nodes/edges without properties.
|
|
|
|
|
What you need is a mature, full-featured, hi-performance object database management system ("ODBMS"). Most of the No-SQL options are missing features for what you want to accomplish. SQL databases are a poor solution for modeling graph data structures (or any highly complex db schema).
Checkout the top performing database in this comparision of leading database systems:
http://velocitydb.com/Compare.aspx[^]
The features of VelocityDb are available in stand-alone or server versions:
http://velocitydb.com/Features.aspx
No-SQL databases just don't have such rich feature sets.
And the open source VelocityGraph add-on link is at top of the home page:
www.VelocityDb.com
I've been using VelocityDb after many years with Versant and after looking at heavy-weight ODBMS systems such as Gemstone. I'm very happy with VelocityDb. My class hierarchy IS the database schema. Update your classes in your code, you've just updated your db schema.
|
|
|
|
|
licence per developper : 400$
and Deployment licenses/royalty
"Our runtime royalty is determined on a case by case basis. We would like you to suggest a pricing model that fits your business. It might be a share of your profits, a fixed amount per deployment or something else. We are very flexible but we do need revenue to maintain development, support and pay our staff."
so not a fixed price.... we don t know how much we will pay when we'll go in production....
licence per developper is not so high (if the performance are here) and we can use it for free for trial usage for less than 3 user but doesn't know how much we will pay or how much we will need to tax our customer to install the db is unacceptable, specialy if we make a startup or little business...
modified 8-Oct-14 4:12am.
|
|
|
|
|
The database engine is the foundation of an entire software project. Best your select the right horse to ride at the outset. Developer time savings, code re-use and saving objects or graph-nodes with simple code (no transforming your objects or nodes into rows-and-columns or a structure required by the persistence engine) pay for the minimal license costs.
If you checked-out the performance comparisons, you'll realize you can get away with a fraction of the hardware / server costs for this kind of database. Check how VelocityDb on a $1,000 Costco PC compares against $1 million+ hardware with Oracle.
It may be worth your while to get a price quote for your specific business case and revenue model, so you can make an informed decision. I've been in software since 1981 and have reviewed many, many data persistence schemes. This one has saved me time, money and mis-steps. But, I don't know the specifics of your project.
|
|
|
|
|
i've just sayed that the price of this solution is not fixed. that's it. I haven't said it s not the right tools...
by the way the post of Member10610008 seems to "promote" this solution hardly... even if he don't know the specifics of marc's project. "What you need is a mature, full-featured, hi-performance object database management system ("ODBMS")" .... mouais...
|
|
|
|
|
Member 10610008 and Peter.Od is the same person (he changed his username) - and it seems like he's promoting a solution in a very "sales-ish" way. I almost hit the "report spam" button, but I'm giving him the benefit of the doubt, even though he has only ever posted 3 messages, two of which are the ones on this thread.
Marc
|
|
|
|
|
Thanks, I'll take a look at ODBMS's, but Velocity is not an option as this is for an open source project and I'm looking for something that has more flexible license terms.
Marc
|
|
|
|
|
|
So the little bugger who has been for 10+ years my bio image here on CP had to be put down yesterday. I took that picture when our home became his home as well.
He was the kindest dog ever, and we'll miss him a lot.
My 4-year-old daughter spent the day crying, never seen her so sad. I hardly could find something to cheer her up.
~RaGE();
I think words like 'destiny' are a way of trying to find order where none exists. - Christian Graus
Entropy isn't what it used to.
|
|
|
|
|
Rage wrote: I hardly could find something to cheer her up. An other puppy, perhaps...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
I feel for your daughter, I rememeber when our dog died when I was a about 12, it took me months to stop randomly greetin'. Can still easily bring me to tears just be thinking about it.
This is one of the concerns I have about getting a dog going through that pain with my two kids.
|
|
|
|
|
DaveAuld wrote: This is one of the concerns I have about getting a dog going through that pain with my two kids. Buy one anyway. The reason it hurts a lot is because one looses a source of love.
It is better to loose, then never have.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
|
|
|
|
|
I am dreading that day as well. I have a 13 year old that shows signs of slowing down.
You can lead a developer to CodeProject, but you can't make them think.
The Theory of Gravity was invented for the sole purpose of distracting you from investigating the scientific fact that the Earth sucks.
|
|
|
|
|
I consider myself a reasonably tough bloke but it really hurt to put down an old and trusted friend, RIP Buster!
Never underestimate the power of human stupidity
RAH
|
|
|
|
|
It is so hard to say goodbye to a pet. My last dog was nearly 22 when he passed away and it was a very hard time.
|
|
|
|
|
I know that feeling, also lost my dog 2 years ago.
Had him since i was 6, but it was one of the sadest days in my life.
He was 14 and died in my arms while we were driving to the doc to get him put to sleep, was a heavy hearted decision but it was because he was only lying around the last days and wasn't even able to walk more than 5 meters
Hold him in good memory , he can't be replaced but it's easier if you get a new one. Helped me a lot.
if(this.signature != "")
{
MessageBox.Show("This is my signature: " + Environment.NewLine + signature);
}
else
{
MessageBox.Show("404-Signature not found");
}
|
|
|
|
|
That is ruff my friend, just ruff.
I have a 1.3 year black curled up with me as I type this.
If she just didn't steal my possessions.....
|
|
|
|