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 7 years ago.
Improve this question
I would started a database project (Accounting Application) for now Mac version which will be available in AppStore.
For future might be on iOS, Windows and web base.
I need database app that don't need the database ported to other platforms just by changing the UI and other sources I able to port it, no need to touch the database.
I'm a bit confuse to choose a suitable database SDK or etc!
Ror example I can choose:
• SQL Server
• MySQL
• SQLlite
• FileMaker
• Cocoa SQL
Remember I need:
1- Something not to complicate and easy to use it on XCode.
2- Have a bit security on the file.
3- the most XCode user using it.
4- Price is no problem.
5- Unicode fully compatible.
For my situation, which one do you recommend.
I think you're approaching the problem backwards - first you should be deciding on what development and deployment platform you want to use, and then select the best database server compatible with that platform.
What I mean by this is that whether you're using SQL Server, MySQL, SQLite, or any other faceless database engine, that doesn't answer the question of how you're going to develop or deploy the application.
You also need to decide whether to write one application for deployment on all platforms, or if you're OK with rewriting the application for deployment on certain platforms. The only technology choices I'm aware of that will work across all the platforms you've mentioned is an HTML 5 web app (using Ruby, Java, .NET, PHP, or some other web development system) or FileMaker (using FileMaker Pro for Mac / Windows / Web deployment and FileMaker Go for iOS deployment). If you're OK with writing a desktop/iOS version separately from a web version, then you need to ask yourself how many versions you want to write. If you pick something like C / C++ / Obj-C, then you're going to need to pretty much re-write it for each platform you've mentioned (although you can port from iOS to OS X with less effort than the other platforms). If you pick Java, then you're set for web deployment, Mac deployment (although you can't distribute Java apps via the Mac App Store) and Windows deployment, but you'll need to use Obj-C or HTML 5 for iOS.
So in summary, the right approach is:
Pick your deployment target(s)
Based on that choice, pick your development system(s)
Based on that choice, pick your database engine.
If its for a single user application SQLite is probably the best option - its purpose built for embedded apptications. Its also portable between os types.
I'd second the recommendation of SQLite as a lightweight database portable to multiple platforms. But what do you mean by "fully compatible" with Unicode? See: http://www.sqlite.org/version3.html
It's hard to say what you need from your description, but from what I can glean, SQLite would be the logical choice. However, if you insist on actually having a database server, you should investigate PostgreSQL. It has a far more permissive license than MySQL.
I would advise you to pick a Database Management System based on your data management requirements rather than on your choice for other components of your system. In the end almost all of them support SQL. SQLite is a good choice for a portable client-only solution. SQL-Server, MySQL, Postgres, DB2 and Oracle are optimized for server-side transaction processing (lots of inserts and updates). Vectorwise, Vertica and MonetDB focus on analytical queries (e.g., statistical analytics on your data like group by). If you make a bad choice here you might face scalability/performance issues later which may be very expensive.
So pick your DBMS based on the anticipated usage pattern.
BTW: A License for an Oracle DBMS instance can easily go up to a couple of ten thousand dollars. So be careful when saying "Price is not a problem".
Related
I'm looking to create SQL database on my Mac and I was wondering what would be the optimal software I can create/operate it with.
Any advise will be highly appreciated.
Postgres
Postgres is a mature heavy-duty enterprise-quality database system. Postgres aims to implement the SQL specifications as closely as is practicable. Postgres is open-source and free-of-cost. Multiple companies sell professional support services. Conferences dedicated to Postgres occur year-round all over the globe including in Ottawa where the core contributors meet. The more I learn about Postgres, the more impressed I become.
There are different ways to install on a Mac:
The usual way is to run an installer provided as a courtesy by the EnterpriseDB.com company. For security, the installer creates a new Unix user on your Mac named "postgres" and creates folders accessible only to that user rather than your regular User account.
Another way to run Postgres is a unique configuration packaged as a Mac app, called Postgres.app, provided as a courtesy by the Heroku company.
MySQL & MariaDB
MySQL (and MariaDB) is a competitor to Postgres, and is quite popular. But MySQL pales in comparison to Postgres in my opinion, in regards to quality, robustness, stability, security, documentation, responsible gradual planned development, focus on safety of your data, openness, and more considerations.
The more I learn about MySQL, the less impressed I became. But MySQL is very popular. You will find many resources, books, and postings on MySQL. But its popularity eludes me. MySQL versus Postgres is like Linux versus BSD, the one seems superior in so many technical categories yet the other gets all the popular hype.
But no need to start a flame-war: check it out and make your own decision.
SQLite
SQLite is another open-source free-of-cost SQL engine. But as the name suggests, it is aimed at relatively small simple purposes. Apple bundles SQLite with both Mac OS X and iOS.
H2 Database Engine
If you are savvy with Java, you might consider the H2 Database Engine. Simple to get started with. Mainly aimed at embedding in an app, though you can use it as a database server. Though it lacks many server features, it may be a good way to get started.
Derby
Derby is another Java-based database engine for both embedded use as well as server. Originally a commercial product, later acquired by IBM and then donated to Apache as an open-source free-of-cost project. There have been some issues with heavy use in production, so research the current state of development. H2 seems to be a better choice over Derby, currently.
Firebird
FirebirdSQL in another open-source database, but I've no experience. Seems to have engaged a new wave of interest and development in recent years.
OpenBase
OpenBase is a commercial database server originally developed for NeXTSTEP/OpenStep (which evolved into Mac OS X that we know today).
Interbase
Another commercial server is Interbase by Embarcadero Technologies.
4D
4D (formerly 4th Dimension) is a unique kind of database server, originally developed on the classic Mac and lives today on both Mac OS X and Windows. 4D is special because it is a competent relational database server but has a proprietary query language rather than SQL. 4D is also special because it is integrated with its own programming tool-set that includes a visual form-layout development environment. Other development tools can access its data through Web Services calls (SOAP, JSON, etc.), plugins, and other mechanisms.
My view
My own choices for projects of late have been:
Postgres, for heavy-duty mission-critical purposes where preserving data is paramount.
H2, for lighter uses, and especially where portability is important. Being Java-based, it can run anywhere.
What database should I use?
I am currently under the design phase of a WPF application. I have never deployed an application before and I am not sure what database I should use. I want my application to be deployable on any Window's 7 machine without the need of a special install (i.e. SQL Server). I don't want to be in the deployment phase and find out that I should have used another database. Can I simply run a SQL script on the install to generate all the tables and fields required for the software to properly run? Thanks!
SQLCE fits the bill, (and there are probably others as well); small footprint, file-based and just one (or very few) extra DLL's to include in your app. Personally I wouldn't use it for anything other than a smal, single-user app, but if yours is single user and the amount of data is small, you could do worse.
http://weblogs.asp.net/scottgu/archive/2011/01/11/vs-2010-sp1-and-sql-ce.aspx
if you do not use too complex queries, you can use sqllite
Here you can find it and c# connector here
If you are creating a WPF app with no plans beyond the next few years, SQL CE will be fine and will work well.
But if you are thinking about compatibility with (or a transition to) a potential Windows 8 Metro version of your app (in which SQL CE is not supported), or another OS (e.g. OS X), you should consider SQLite.
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 3 years ago.
Improve this question
I am interested in developing a new SQL-based RDS which can generate prototype CRUD-oriented 4GL code which can then be easily customized. So I am looking for opinions, suggestions, etc. in what features should a new RDS have?
I have looked at several products. FileMaker is more or less the type of product I'm looking for, but it's not SQL-based. Informix 4GL and 4Js are what comes closest, but the lead time for customizing/debugging seems to take a long time.
Depends on the market you are aiming for. In your place, my first decision would be whether to link it to a specific RDBMS implementation (which would be Oracle, SQL Server or mySQL) or to try to make it flexible to use amongst any of the major databases. The latter would obviously add massively to the complexity (development, testing, support).
The second would be the OS platform. Something that is specific to Windows (or perhaps Windows Vista/7 upwards) or can be used on Linux, OSX etc. 32bit/64bit would also be a consideration here. I'd need to know that it can run on 64-bit Windows 7 at least.
Thirdly, what do you develop your Rapid Development Tool in. Dot Net would pretty much be Windows only. Java or Python offer more choice.
Fourthly, are you making this as a commercial product, or as open source (or both). Bluntly, if I was looking at buying such a tool to develop my XYZ product in, I'd be looking at long-term support. If the tool doesn't have a five-year pedigree of ongoing support, I'd be very hesitant and would only consider it if it came from a company of the likes of Microsoft/IBM/Oracle/Apple with some serious history in the field. And even then I would be skeptical (search on Microsoft's Oslo/Quadrant/SQL Server Modeling).
I'd also be looking for professional tech writers for the documentation.
See the feature list of Oracle Application Express for some good ideas.
I've used a few of these tools and things that come to my mind are:
1/ automatic joining on foreign keys
2/ keeping columns in the same order as the table in the code
3/ dynamic code generation, no separate code generation stage
4/ undo on table changes
5/ prototyping features to enable actual data to be modelled during development
6/ hide column feature
7/ SQL import for those tricky bits
8/ code locking on tricky bits
9/ version control
10/ segmentation into namespaces
11/ Language templates for easy addition of extra code languages
I think going to an intermediate 4gl first would be good and then a second stage to render code in the language of choice would be good.
I hope this is of some use to you, good luck!
I am looking for a easy to use and deploy sql type database i can ship with a desktop application.
This will be a small application user's can download from my website.
In the vb6 days, access was the common database for small desktop apps, what is my option these days?
Looking at SQL CE it seems to have a quite a few limitations such as count(distinct) etc
SQL express needs to be installed and running as a service (could i include the SQL express deployments in my deployment so the user doesn't even know its been installed? I assume size would then be an issue)
SQL 2005/2008 is not an option due to size and licensing restrictions.
I would like to use c#, wpf and entity framework.
What would seem to be the best options based on your knowledge and experience?
Thanks
SQLite (also see corresponding wrappers for the .NET Framework) might do the trick for you.
FirebirdSQL. More functions, plus UDFs made in C/C++ or even Delphi.
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
There's a database engine that looks amazing for a free tool and that is Scimore.
Have you had much experience with it? If so, how does it rate..particularly against Firebird? How resilient/self reliant is it? (Meaning how much downtime/maintenance is expected?) The scale out capabilities also look very interesting.
I just downloaded it and have been playing around and so far it looks good. I had been looking for an easy to deploy single-user type embedded database (which Scimore has an option) and was toying with MS SQL Compact Edition and SQLite and remembered this database from a trial a few years ago. (Windows platform)
I was about ready to settle in on SQLite but started thinking about other projects which are multi-user and wanted to stick with a single solution...which is why I started looking at Firebird as well.
You should not expect downtime with Scimore. It has all the bells and whistles that you will find in expensive database products, MVCC, ACID transactions, tolerance to your application crashing etc.
From what we hear, the primary reason to switch to Scimore Embedded, is robustness when having high concurrency, large datasets and large load.
An intersting thing that differentiates Scimore from other databases is that it grows from:
embedded inside your application processes. We know of applications based on ScimoreDB Embedded with more than 1.5 mio installations.
embedded with your application, but running in a seperate processes outside your application. It allows for multiple applications to share & modify data.
runs as a "standard" windows service, similar to a mysql/sql server/oracle
it runs distributed over many machines. You install the distributed instance (service) on many machines, join them into a cluster. You can now connect to any instance
and it will orchestrate your SQL queries over the machines in the cluster. Longest running cluster of 5 machines has been running for more than 10 years.
FAQ is a quite nice start
Can I get access to the source code?
[ScimoreDB]Yes, sign a support contract.
Firebird is Open source
Do you support integration with developer studio?
[ScimoreDB]No. We are working on both Linq and DDEX functionality. There is yet no release date
Firebird have.
Linux – do you have a linux version?
[ScimoreDB]Almost. Using Wine, we almost got there, but unfortunately the library seems to have some bugs for async socket and disc access.
Firebird have