Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I know that most of the time NOSQL databses are schema-less or at least have a flexible database schema.
However, the basic schema needs to be modeled beforehand and may evolve later. So,in this case, is there a modeling tool/language for NOSQL databases?
Like UML for RDB and Visual Paradigm (UML modeling tool). I found that for "Graph Databases", we can use "Property Graph Model" but I am working on "BigColumn Databases" and "Document-base Databases".
Thank you.
NoSQL databases approach modelling from a different point of view generally. NoSQL modelling usually begins with asking questions on how the data in the database is going to be queried, so the main modelling is 'what are the list of questions that I want to ask of my database', whereas with SQL databases, modelling usually is a function of what data you have, that is, what answers I have already. This mental exercise of finding out what questions one would like to ask of the NoSQL database serve to define the entities and the relationship amongst those entities.
Once you have a list of questions, you then need to design a model that will answer those questions via the NoSQL database. To model it, I typically use Creately which is an online tool for visually representing models of various kinds.
Another method could be to represent your NoSQL model in JSON format and then use the wonderful D3.js javascript library to create a data-driven document. See this website for more details and the templates available to visually represent your model.
Hope it helps.
KDM is one solution you can think for NoSQL database Cassandra. This tool starts from conceptual modelling till physical modelling. May be you can have look at this. This is available to use free online.
Related
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm looking for an efficient key-value distributed persistent database.
I've look into Redis, but it only support hashes with up to $2^{32}$ keys, which is not enough for my application
I've look into Memcached, but it is not designed for long-term persistence, it is designed for keys-value pairs to expire after a while
I've look into BerkeleyDB, but does not support a client-server paradigm, it is basically a in-app storage engine
I've look into HyperTable, but is not really row-oriented, you cannot edit existing rows unless you want to hack the timestamps, and after a key + timestamp is deleted, it cannot be reinserted. Also, the only supported value type are strings, if you want to store floats or complex objects you need to serialize into a string and then deserialize
I've look into MongoDB, which is very flexible, but it has suffered from very important performance and scalability issues that haven't been addressed in the last two years. They are summarized in this blog post.
I'm going to look next into Cassandra and Riak, and as you see i'm quickly running out of real options
What other databases are there that can fit the description i've outlined above?
Take a look at CouchDB. http://guide.couchdb.org/draft/why.html
It is a non-relational database, open-source, distributed (incremental, bidirectional replication), schema-free. Data is stored in documents formatted as JSON. It has robust persistence and is a distributed key value database.
Take a look at http://code.google.com/p/fastdht
It is a high performance distributed hash table based on Berkeley DB.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
I'm very much inspired by the approach to data management advocated by Rich Hickey, and implemented in Datomic, where the data is never mutated in-place, all the versions are always preserved and query-able, and the time is a first-class concept.
Of course, there are specialized databases matching that description, like Git, or any other source control system. The question is if there are any (more or less) general-purpose DBMS-es of relational, graph, hierarchical, document or any other flavor that can be effectively used in, say, an eCommerce Web application. Or is Datomic the only choice then?
There is an approach to designing systems with an idea of never deleting or mutating data called Event Sourcing. Basically, the idea is to store events (or facts) that change the system state, instead of snapshots of the state. The history of events can be replayed later on to produce a certain purpose-specific projection of what the state at any point in time looked like. Multiple projections built for different purposes can coexist in the system. More information can found on the following web sites:
http://martinfowler.com/eaaDev/EventSourcing.html
http://codebetter.com/gregyoung/2010/02/20/why-use-event-sourcing/
It's in line with what you are describing, but rather than being just a database model, Event Sourcing and Command Query Responsibility Segregation (CQRS) prescribe a special way of designing the whole system including the database and business logic layers.
There are a few frameworks that follow this approach, such as:
http://www.axonframework.org/
http://qi4j.org/
http://en.jdon.com/
While this does not directly answer your question, it may provide a different perspective on the problem.
Irmin is a distributed database that follows the same design principles as Git.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 7 years ago.
Improve this question
Do you know a free tool to model databases in uml?
Here is a link to a SourceForge project for UML/ERD modeling of databases:
http://sourceforge.net/projects/dbuml/
Here is software that has a free community edition:
http://www.visual-paradigm.com/
Personally, I've always found that UML poorly handled designing databases. Entity-Relationship Diagrams always seem to better describe a database.
I would check out Open System Architect (OSA) at http://www.codebydesign.com/
In fact, you could use a standard class diagram to model your database. I know it's not the same underlying philosophy but concepts in Extended ER models and in UML CD are quite similar.
True, if you want to explicitly model everying (like pks or unique identifiers) you´ll need to use a UML profile. However, if you are happy with using some conventions (like adding a surrogate pk for each table, deducing automatically the fks from the associations,...), then you can even skip the profile. For an example of this approach read this
UML class diagram is an object approach while data is not.
Omondo has done a try to use a database profile and synchronize the stereotypes with the java persistence annotations. It means that if you create a class diagram you also create java persistence in the code. You just need a good mapper to create your database later.
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 1 year ago.
Improve this question
I'm looking for a tool that generates DB diagrams.
Free (open source maybe)
Works in Linux (cross-platform maybe)
Supports PostgreSQL/MySQL
diagrams.net is free and on Github (I work on the project). It does work on Linux and has a generic SQL import, under Arrange->Insert->SQL.
You can save either locally, or directly to Google Drive, OneDrive or Dropbox. There's also a Desktop version available.
MySQL Workbench is a good tool for working with its namesake that does ERD modeling. I've used it on both Windows and Ubuntu.
If you are looking for an entity relationship model (not relational model) you have to try Dia http://dia-installer.de/
This software works on linux/windows/mac. And have a branch on git.
The entity relationship model has the purpose of make a model of the problem and let you understand the problem, so in the end you can generate a good relational model to have the most efficient model for you database.
This software is not intended to generate mysql tables directly but it has a plugin to convert Dia diagrams to sql, you can check it out in the same link.
You might want to try PowerArchitect
It's Java based (therefor cross-platform) and I have used it successfully with PostgreSQL
If you do want to spent some money (albeit not much), have a look at DbWrench which offers more features than PowerArchitect
Another open source/cross-platform option is Mogwai ERDesigner. Although there is one thing that I really don't like about it: if requires a connection to a database (to validate/define datatypes) which I find a very limiting requirement.
I use Software Ideas Modeler for entity relationship diagrams. It could meet your requirements - it's not open source but it has a free version, it works in Linux via Mono and it supports MySQL.
If you are looking for some software to auto generate ER diagram from existing database then you will love this tool: http://schemaspy.org/
https://drawerd.com is a online database structure tool.
zenchart is an online ER model generation tool, which can generate ER models through database DDL scripts, support exporting SQL, and the relationship between tables.
https://www.zenchart.net/erd-index.html
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 11 months ago.
Improve this question
Is there an open source object oriented database for C++ available?
I had looked at Object oriented Relationship Mapping (ORM) libraries like those posted here:
https://stackoverflow.com/questions/74141/good-orm-for-c-solutions
and these were intereting as well:
Object-oriented-like structures in relational databases
http://en.wikipedia.org/wiki/List_of_object-relational_mapping_software#C.2B.2B
My experience so far has been painful. The solutions don't appear to be mature and I've had difficulty even compiling some of them, and the documentation and support can be sparse.
I suppose at some level I'm trying to avoid learning SQL (I'm not a database developer). On the other hand, my gut feeling is that ORMs are an architectural 'workaround' in that they are creating a layer above a database system that inherently doesn't support objects.
My ideal database library would allow the following:
Allow one to specify the object hierarchy tree based on class names, perhaps in XML or just in C++.
Allow one to specify which fields of those classes should be persistent.
Provide an API to create, update, delete, retreive the hierarchy of objects.
Ideally, provide an API for the in-memory tree itself, including concurrent access to tree nodes.
I had worked on embedded system that had such a custom database and api.
I'm almost at the point where I'm just going to create my own and open source it.
Just wondering if there is anything off the shelf I can use.
I saw this:
http://en.wikipedia.org/wiki/Comparison_of_object_database_management_systems
and am trying to figure out this might work:
http://www.fastdb.org/fastdb.html
Thanks in advance.
I'm not going to make any recommendations, because I don't know of a high-quality FOSS OO database. I would however make the following observations:
OO database are not a way of avoiding SQL - you need both. Frankly, If you don't know SQL pretty well, your life as a professional programmer iis likely to be unhappy.
OO databases are mature - they have been around for well over 20 years. I personally first used one on a large project in the finance industry 15 years ago.
OO database are best used where relational databases fail - I've used them in complex financial instrument modeling, oil-pipeline optimisation and telco work.
ORM databases take the bad parts of the OO and the relational models and make something even worse of them.
My favourite commercial OODB is ObjectStore, but I haven't done any work with it for quite while now.
Hope that is vaguely helpful.
Honestly, unless you're into "bleeding edge", I would stay away from OO databases. In almost all cases, they're not well supported, immature, and have various support issues client side.
The problem is, only the relational databases (and certain non-relational ones) get 99% of the attention, and thus end up far more mature. ORM may be a workaround, but if you want reliability, it's really what you need.
UPDATE:
To clarify, I'm sure there are some very reliable open source OODB's out there, but my requirements for "realiability" are more than just whether it doesn't crash and doesn't corrupt data. It includes reliability of the client connectors, reliability of the integration with the object models of popular languages, etc...
This is about open source OODB's, not commercial ones.
this is a good OO database , currently I am working with it
http://www.garret.ru/goods.html