When I'm in Windows, I use the excellent MicroOLAP Database Designer for PostgreSQL, but its not open source or multiplataform.
Do you know or can recommend me an alternative to this software, that I can use in Linux?
EDIT: Just to clarify, I don't want to use wine to emulate MicroOlap for PostgreSQL, it doesn't work too well, I would prefer something native, or Java based.
pgDesigner is a database design application for PostgreSQL, for
versions 7.x and 8.x.
pgDesigner provides the following features:
Complete datamodel editor
Support for PostgreSQL objects: tables, views, relations,
tablespaces, procedures, triggers, types, domains and sequences
Automatic updating of relations between tables.
Wizard for the construction of views.
Report generator, with statistics
Printing the diagram
SQL export
Creation of the database
Management of the project on a diagram chart
I stopped using software database designers years ago, and reverted back to the trusty pen and paper which is just easier to use in my experience.
To answer your question though, take a look at dbDesigner4 which is what I used to use. I remember it being fantastic. It's open source and multiplatform.
How about Clay? It's a plugin for Eclipse, and the free version supports generating Postgres DDL.
I really like dbWrench. It's commercial as well, but not expensive and is Java based. It can reverse engineer a database and generates pretty good HTML based documentation.
http://www.dbwrench.com/
This is a crappy answer for which I should be taken out and shot, but you can search over nearly all PostgreSQL related projects at PgFoundry. I don't know from GUI database design tools, but I'd imagine you should be able to find something there, if it exists.
Related
I'm in a company re-writing the existing applications, using the full Oracle stack, in a SOA way.
Everything is nice and so on until we're starting to discuss the UI. We are wondering what to use as web framework in order to web application.
In the first hand, we are developers in love with NodeJS and frameworks like Ember.js, we're developing today (until the application is migrated) in Ruby on Rails (so working with Macs). In the other hand, Oracle is providing ADF which is obviously well integrated in the Oracle stack and so on. But when we compare ADF to the way we are working today (Ruby on Rails) or the way we would work in the future (with Ember.js for instance) it looks like less development, more point and click, with an heavy framework.
What are the advantages of ADF ?
What are the right domains where ADF make sense ?
How popular is ADF ? (Especially in the enterprise context)
How hard is the learning of ADF for someone developing today with Ruby On Rails (IDE is Sublime Text, so all is about writing code -- mouse not needed) while for ADF JDeveloper seems mandatory (seems a large use of the mouse and less writing code ?)
I hope my post is understandable.
I've used in production java frameworks like Struts, Struts2, JBoss Seam, Tapestry, Spring, Hibernate and I've moved to ADF 6 years ago, therefore I can't comment on how ADF compares with NodeJS or Ember.js.
What are the advantages of ADF ?
ADF has in Jdeveloper a strong development tool support. If your team is not technically very strong in Java, it might be the right tool for you.
What are the right domains where ADF make sense ?
Web applications providing Desktop-like experience: that means complex input forms, complex querying - screens with lots of data and business rules. By far the most productive framework I've used when building these kind of web applications.
How popular is ADF ? (Especially in the enterprise context)
ADF is a niche at the moment. Though it is strongly supported by Oracle. Most of Oracle's products - e.g. Fusion Apps - are based on ADF, so ADF is here to stay.
How hard is the learning of ADF for someone developing today with Ruby
On Rails (IDE is Sublime Text, so all is about writing code -- mouse
not needed) while for ADF JDeveloper seems mandatory (seems a large
use of the mouse and less writing code ?)
At start, it will look like you are having good progress in relatively short period of time. Then, you will realise that even though Jdeveloper does 'everything' for you, you need to understand every piece of code JDeveloper generates. ADF has a steep learning curve (though you may find others telling you otherwise), it requires a different way of thinking web application development, especially difficult for developers with previous web experience: ADF is using a STATEFUL business layer. So, unless you have been using Stateful Session Beans before, there are good chances to mess up your first ADF Design - is what I keep seeing as ADF consultant. But once you've learn it, productivity-wise is fantastic.
From innovation point of view, ADF sounds like listening to Vanilla Ice in your Beats headsets: it is based on XML, it uses JSF, no sign of dependency injection on ADF Faces. Still, is Ajax-based.
We have several legacy SQL Server databases that we occasionally make schema changes to. We currently have a utility written in C++ that allows users to update their DB's with these schema changes. The utility currently generates dynamic sql to create all DB objects. I am looking into redoing this and thought EF migrations might be a good way to go. I have read up a bit on the subject and I have a general idea of how it works. But I'm having a bit of a hard time figuring out how I would set it up to replace our current procedure (or if it is even possible). Currently, a client could be on any one of a number of previous versions. I'm assuming I would have to go back to the oldest possible version and create my model/initial migration from that, then generate incremental migrations for each version change in order to support updates from all versions. Is that a correct assumption? Also, currently our clients could be using sql server 2000, 2005, or 2008. Would this have any effect on how I would set things up (or if I even could)? Further, the goal is to create a utility with a (C# - probably WPF) UI that the user can use to manipulate the migrations (up or down, preferably). I've seen a lot of examples of how to manipulate migrations from command-line within package manager but not a lot of stuff on how to create a utility with a friendly UI for upgrading/downgrading DB's in production. Also, I have not seen anything that shows how to create stored procedures in a migration (our DBs rely on some stored procedures). I'm assuming that, if nothing else, I can use the Sql() method to generate a SQL query to create a SP. Is that correct? Is there a better way?
I know my questions are a bit non-specific and I apologize for that. But I'm still in the beginning processes of learning this and I'd like to get an idea of whether or not this is a good way to go. Any guidance would be greatly appreciated.
Thanks,
Dennis
Firstly, on SQL Server support, Entity Framework doesn't really support SQL Server 2000. See this question:
EntityFramework SQL Server 2000?
On the question of supporting all the multiple versions, you have the right idea about needing to generate an initial migration for the oldest version first then incrementally altering the model and generating migrations to support the later versions. This will be a pain as the migrations are opinionated about how they represent the model in the database and you will be doing a lot of messing about to end up with a model and a set of migrations that fully represent that. Specific concerns are indexes, column lengths, data types, stored procedures, triggers, functions, partitioning.
The Sql() function gets you around most issues, though also helpful in the migrations are functions like CreateIndex and AlterColumn.
For automating this, the migrations are definitely available as powershell cmdlets which are themselves just .Net objects so can be called programmatically.
As this question is a year old, I assume you will have made a decision on whether to do this. My opinion is that it is hard to see that it's worth the effort. If you were re-platforming the code base that uses this database to Entity Framework then it would make sense. Otherwise there are bound to be better tools out there for database version management. My first port of call would be Redgate.
I have a plan to create a desktop app (language not chosen yet) that will be used as an admin part to manipulate data. At the same time the database will be used for a website.
My only concern is -- I may mix up technologies that aren't compatible, but the only thing that ties them together is the database.
Say I will use Delphi to create the desktop app to manage an Access or MSSQL/MYSQL (if possible) and then use php as to make the web.
Can there be obvious problems with this idea that I am blind to right now?
Any other ideas suggestions are greatly appreciated.
Databases have to be one of the most common ways I see two languages communicating/cooperating. I've seen databases as a conduit between C/C++, Java, Perl, Python, C#, etc... Databases have the benefit of storing data in a pretty language agnostic way. Almost all languages have a way to talk to a database.
The main downside of using two different languages is that you won't be able to reuse code between your web project and your desktop project. That may sound fine, but every time you update your DB schema, you have to update the two code bases. Not a deal-breaker, but annoying nonetheless.
I would recommend avoiding Access if you could help it. Access works for a simple desktop application, but once you start introducing multiple users, you should go with something a little more robust (and secure). Go with something like SQL Server Compact or SQLite if you need a file database. I personally would bite the bullet and go right for MySQL.
I wanted to know if there is any system which allow me to create my own tables and execute query on those tables? I want these because I don't have any database installed on my office computer and I want to practice queries in my free time.
There is one online query execution tool provided by w3cshcools
I got this answer after asking a question in this forum.
[The following answer largely assumes you are using Windows.]
For a very quick-n-dirty sandbox, try SQLite. It comes with sqlite3.exe (see the Precompiled Binaries For Windows section), which lets you create tables and run queries over them from the command-line.
SQLite's dialect of SQL is a bit strange due to its dynamic typing model, so you might get more mileage from installing a more conventional database like PostgreSQL, though it is more involved than SQLite's "installation", which amounts to extracting the .exe file and sticking it somewhere on your path.
Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
I am looking for an eventually consistent data store and it looks like it may be coming down to Riak or Cassandra. Has anyone got expereinces of a view on this?
As you probably know, they are both architecturally strongly influenced by Dynamo (eventually consistent, no single points of failure, etc). Both also go beyond Dynamo in providing a "richer than pure K/V" data model -- in Cassandra's case, providing a Bigtable-like ColumnFamily mode, in Riak's, a Document-oriented one. I have seen sane people choose both.
I believe points that favor Cassandra include
speed
support for clusters spanning multiple data centers
big names using it (digg, twitter, facebook, webex, ... -- http://n2.nabble.com/Cassandra-users-survey-tp4040068p4040393.html)
Points that favor Riak include
map/reduce support out of the box
/Cassandra dev, fwiw
Riak is used by
Mozilla Foundation
Ask.com sponsored listings
Comcast
Citigroup
Bet365
I think they both pass the test of credible reference customers/users.
Cassandra seems more mature, and is currently doing better in benchmarks. Riak seems easier to add a node to as your cluster grows.
For completeness: A good (probably biased) comparison between the two can be found at http://docs.basho.com/riak/1.3.2/references/appendices/comparisons/Riak-Compared-to-Cassandra/
Use and download are different. Best to get references.
Perhaps a private conversation could be had where Riak references in these companies could be shared? Not sure how to get such with Cassandra, but there is a community of companies that support Cassandra that seem like a good place to start. As these probably have community participants in Cassandra development, it may be a REALLY reasonable place to start.
I would like to hear Riak's answer to recent and large deployments where customers are happy.
I also would like to see the roadmap for each product. Cassandra is a bit easier to track (http://wiki.apache.org/cassandra/) than Riak in my view as Cassandra's wiki discusses limitations and things that are probably going to change going forward, but neither outline futures well. I could understand that of an open source community ... perhaps ... but I cannot for a product for which I must pay.
I also would suggest research of Cloudant, which has what appears to be a very nice layering of capabilities. It also looks like it is bringing to bear the capabilities elsewhere in Apache land. CouchDB is the Apache platform on which Cloudant is based. BUT the indexing with Lucene seems but the tip of the iceberg when it comes to where Cloudant could go. Creating and managing an index is a very systematic process, a kind of data pipeline, that could be scripted using other Apache community assets. AND capabilities like NLP also could be added through Lucene indirectly, or maybe directly into what is persisted.
It would be nice to see a proposed Cloudant roadmap, especially since the team could mine the riches of the Apache community and integrate such into Cloudant. Such probably exists as there is an operational component to the Cloudant revenue model that will require it, if for no other reason.
Another area of interest ... Cloudant's pricing model ... it is clear their revenue model is not based on software, but around service. That is quite attractive, and it seems consistent with the ecosystem surrounding Cassandra too. I don't know if the Basho folks have won over enough of the nosql community as yet ... don't see such from any buzz around their web site or product.
I like this Cloudant web page (https://cloudant.com/the-data-layer/). I was surprised to see the embedded Erlang capability ... I did not know CouchDB was written in Erlang as this seems unusual to me in the Apache community (my ignorance); CouchDB appears to be older than other nosql products I know (now) to be written in Erlang. Whatever their strategy, they at least count Amazon EC2 and Microsoft Azure as hosting partners, indicating an appreciation of Microsoft and !Microsoft worlds - all very important if properly recognizing the middleware value potential (beyond cache or hash table applications) that these types of data stores could have.
Finally, while I don't know the board well, Andy Palmer's guidance looks like it will be valuable. He can bring some guidance vis-a-vis structured data (through VoltDB) to a world that rightly or wrongly may be unfairly branded as KVP hash tables of unstructured data. The need for structure and ecosystem surrounding nosql "databases" is being recognized ... witness Google's efforts with Spanner ... KVP/little structure/need for search-ability motivated Google's investment in the Spanner space. While we all may not need something like Spanner, we probably do need an improving and robust "enterprise" management and interoperability capability in these nosql databases to make it reasonable to incorporate them into modern cloud architectures. The needed structure can come from ease of interoperability and functional richness. It can also come from new capabilities that support conversion of unstructured data to structured data (e.g. indexes, use of NLP to create structured and parsed renderings of things inside of a KVP blob, and plenty of other things that, if put into a roadmap and published, could entice and grow a user base). Cloudant looks like it has a good chance of success ... I will take a closer look at it ...
And look what I found about CouchDB ...
CouchDB comes with a suite of features, such as on-the-fly document transformation and real-time change notifications, that makes web app development a breeze. It even comes with an easy to use web administration console. You guessed it, served up directly out of CouchDB! We care a lot about distributed scaling. CouchDB is highly available and partition tolerant, but is also eventually consistent. And we care a lot about your data. CouchDB has a fault-tolerant storage engine that puts the safety of your data first.