| 

.NET C# Java Javascript Exception

4
Hallo zusamen,

für einen kommerziellen Zweck brauche ich eine Datenbank auf die über Internet / Intranet 20 - 40 Benutzer zugreifen können (teilweise zeitgleich). Sie sollte unter Windows laufen.

Folgende Fakten sind mir klar:
- Access: kommt nicht in Frage
- SQL-Server-Express: kann nur eine begrenzte Anzahl gleichzeitiger User handeln
- SQL-Server: CPU-Lizenz sehr teuer
- Sybase SQL-Anywhere: CPU Lizenz sehr teuer

- Oracle & IBM DB2: Keine Ahnung :-)

Wie schaut es mit Open-Source-Datenbanken wie MySql oder Firebird aus?
Bekommt man Probleme wenn man diese Datenbanken in eigene, kommerzielle Software integriert?
Mit "Probleme" meine ich, dass ich meinen Programmcode nicht unter Open-Source-Lizenzen stellen möchte (was ja glaube ich ein MUSS ist wenn man Open-Source-DB einsetzt, oder)?

Zur Info: Ich werde mittels .NET auf die Datenbank zugreifen.
Aber das spielt ja eigentlich keine Rolle :-)

Danke für euere Antworten,

Viele Grüße

Maik
News:
19.08.2013
Maik_1978 674 1 8
Wenn der Zugriff auch über das Internet erfolgen soll, so wirst Du nicht weit kommen.
Du kannst im Internet in der Regel nur per Port 80 auf die Server zugreifen, so dass Du die Datenbankzugriffe über ASP.NET oder PHP wrappen musst.
Oder redest Du hier eh von einer ASP.NET Anwendung, die auf einem Server läuft und Du hierfür eine Alternative zum SQL Server suchst?
judgy 19.08.2013
@judgy Naja, umgangssprachlich ist meistens WWW/HTTP gemeint, wenn vom Internet gesprochen wird. Aber Internet ist eigentlich alles was zwischen zwei Rechner, die nicht im selben LAN sind, via IP ausgetauscht wird. Also auch FTP, E-Mail, SSH, etc.
phg 19.08.2013
@judgy welche Ports nach außen offen sind, entscheidet immer noch der Administrator... und das ist heutzutage in den seltensten Fällen nur 80 für HTTP. Gehen wir von einem durchschnittlichen VServer bei einem Random Hoster aus, so sind mindestens offen: HTTP(S), FTP(S), SSH
Darüber hinaus wäre es äußert schlecht, alles bis auf Port 80 zu schließen... Möglichkeit zur Administration ade. :)
Karill Endusa 20.08.2013
Ich möchte tatsächlich direkt von einer WinForms-Anwendung auf die DB zugreifen. Ohne WebService oder sonstiges. Ein entsprechender Port müsste natürlich freigeschaltet werden.
Ansonsten finde ich es aber nicht schlimm "direkt" auf eine DB zuzugreifen. Oder was ist eure Meinung?
Maik_1978 20.08.2013
@Maik Zumindest in Intranet-Szenarien finde ich das durchaus nicht unüblich. Für Zugriff aus dem Internet schon ungewöhnlicher. Welche Art von Authentifizierung strebst Du an? Irgendwie wirst Du den Zugang zur DB ja absichern wollen.
Matthias Hlawatsch 20.08.2013
@Matthias: Alle Zugriffe sollen über einen und den gleichen DB-User laufen.
Maik_1978 20.08.2013
@Maik Mal abgesehen davon, dass Du dann darüber nachdenken solltest, wo und wie die Zugangsdaten dieses einen DB-Users abgelegt werden sollen, willst Du sicher nicht, dass das Passwort beim Login im Klartext durchs Netz geht. Unter
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems#Access_control
solltest Du deshalb auf ein "Yes" in der ersten Spalte ("Native network encryption") achten.

Oder Du setzt irgendwas mit ssh-Tunnel auf, was für Client und DB transparent bleibt.

Wenn Du dazu noch Fragen hast, mach lieber eine neue Frage auf - hier wird es off-topic.
Matthias Hlawatsch 20.08.2013
@Mail: Den Weg, dass man direkt mit der WinForm-Anwendung aus dem Internet auf die Datenbank zugreift, haben uns 7 Jahre Entwicklung für die Katz gekostet. Wir haben das dann am Anfang dieses Jahres einen Neuanfang gewagt, der uns nach 3/4 Jahr genauso weit brachte, wie die Jahre davor - mit dem Ergebniss: Es funktioniert jetzt ;-)

Wir nutzen .NET, EF 4.1 und SQLExpress2012. Wenn du weitere und ausführlichere Informationen benötigst, dann kann ich dir was zukommen lassen.
MyKey0815 20.08.2013
Nochmal: Deine Anforderungen sind nicht klar. Willst Du eine kommerz. Anwendung mit nur einer DB mit ca. 20-40 Anwender entwickeln, wo Du vorgibst, wo die DB installiert wird. Oder soll dies der Käufer Deiner Anwendung selbst entscheiden?
Wenn es letzteres ist, so wirst Du Probleme bekommen, wenn Du nicht über Port 80 (HTTP) gehst und darauf hoffst, die Firmen würden die entsprechenden Ports bei sich und ihren Providern freischalten können.
Ich habe vor ein paar Jahren eine ActiveX MySQL Komponente vertrieben, die unter 10.000 Clients lief, die ich aber aus Lizenzproblemen eingstellt habe.
judgy 20.08.2013
Vielen Dank für all eure Antworten!! Ich mache zu diesem Thema mal einen neuen Thread auf! Schaut bitte mal dort, ich bin auf eure Meinungen weiterhin gespannt!
Maik_1978 20.08.2013
5 Antworten
4
Mit "Probleme" meine ich, dass ich meinen Programmcode nicht unter Open-Source-Lizenzen stellen möchte (was ja glaube ich ein MUSS ist wenn man Open-Source-DB einsetzt, oder)?

Da unterliegst Du einem Irrglauben.

Zunächst und vor allem, weil es viele verschiedene Open-Source-Lizenzen gibt und nicht alle Open-Source-DBs unter der selben Lizenz stehen. Die MIT-Lizenz z.B. verlangt, grob gesagt, nur, daß Du den copyright-Hinweis und den Lizenz-Text zusammen mit der Software verteilst. Ansonsten kannst Du mit einer Software unter dieser Lizenz machen was Du willst. Zu der von Firebird verwendeten IDPL heißt es auf der Firebird-Homepage sogar explizit:
It does not require the developer to open the products using Firebird or even custom-derivatives made from its source code, but if the developer chooses to do so, then some terms and conditions should be honored. The IDPL allows the developer to make proprietary, closed-source applications that use Firebird or are based on it.
Die GPL hingegen verhält sich ungefähr so, wie Du es beschreibst (aber lies den nächsten Absatz). Du wirst also nicht umhin kommen, zu den von Dir favorisierten DB-Produkten jeweils die Lizenzen zu studieren.

Zum anderen betrifft dieses Muster "Verwendung von Open Source erzwingt Veröffentlichung als Open Source" nur den Einsatz in einer "Programmeinheit", wenn also Dein Code und der OS-Code zusammen ein neues Programm bilden. Wenn jedoch Dein (.NET-)Programm einfach nur auf die DB zugreift, die DB also irgendwo eigenständig auf einem Server läuft, nicht in Dein Programm eingebettet ist und einfach nur übers Netzwerk aufgerufen wird, dann beeinflußt die Lizenz der DB die Freiheitsgrade für die Lizenz bzw. Veröffentlichung Deines Programms nicht. Du mußt Dich dann nur noch mit der Frage beschäftigen, unter welchen Bedingungen Du die DB einsetzen und ggf. zusammen mit (aber separat von) Deinem Programm verteilen darfst. Du schreibst einerseits von einem Aufruf übers Netz, andererseits davon, dass die DB "integriert" werden soll - da weiß ich jetzt nicht genau, was Du meinst und welcher Fall nun zutrifft.

Zu konkreten Produkten, die in Frage kommen, kann ich leider wenig sagen. Die beiden, die Du nennst, würde ich mir sicher auch anschauen. Einen ziemlich breiten Überblick gibt übrigens die englische Wikipedia:
http://en.wikipedia.org/wiki/Comparison_of_relational_database_management_systems
19.08.2013
Matthias Hlawatsch 13,2k 4 9
2
Es kommt auf die jeweilige Lizenz und die Art der Verwendung an.

Die bekanntesten Lizenzen mal ganz kurz umrissen:

Wenn dein Code Komponenten verwendet die unter GPL stehen muss dein Code auch unter GPL stehen. Die LGPL ist da etwas liberaler, es ist z.B. erlaubt LGPL-Code dynamisch zu linken ohne dass dein Code dann open source sein muss.

Wenn dein Code Komponenten verwendet die unter Apache/MIT/BSD-Lizenz stehen muss dein Code nicht open source sein. Es gibt aber Einschränkungen zur Weitergabe von Binaries die vom jeweiligen Projekt abhängen. Meistens muss man darauf hinweisen, dass die Komponenten unter einer Open Source Lizenz steht.

Wobei sich das immer auf die Weitergabe von Code/Binaries bezieht, nicht auf das Betreiben, z.B. als SaaS. Die AGPL geht da weiter, ist aber in diesem Fall uninteressant.

Und jetzt etwas konkreter für Datenbank-Server: Wenn du MySQL kommerziell vertreiben willst, dann brauchst du eine kommerzielle Lizenz dafür. Wenn du die Anwendung aber nicht vertreibst, sondern als Dienstleistung bereit stellst verhält sich das wohl anders. Näheres dazu kann dir wohl nur Oracle sicher beantworten.

Ich persönlich würde dir PostgreSQL empfehlen. Steht unter einer BSD-Artigen Lizenz, kann mit hoher last gut umgehen (wenn man den Server entsprechend konfiguriert, die Standardkonfiguration sehr Ressourcen-Schonend) und macht auch so einen recht guten Eindruck.

Es gibt noch HSQLDB, das auch unter einer BSD-Artigen Lizenz steht aber das habe ich bisher noch nie als Server eingesetzt.
19.08.2013
phg 1,6k 3
1
Eine Empfehlung kann ich Dir leider nicht aussprechen, da Deine Informationen nicht ausreichen um eine qualifizierte Antwort geben zu können.
Was ich aber herauslesen kann, ist dass Du in der MS Welt zuhause bist, daher würde ich auch bei der DB in der MS Welt bleiben. Die Integration in das Visual Studio (Annahme von mir) ist hier einfach am Besten.

Ich würde am Anfang den SQL Server Express nehmen, da die vor Dir erwähnte 5 User Einschränkung aufgehoben wurde. Die Express Edition kann max. 1GB Speicher benutzen und ist auf Datenbanken bis 10GB beschränkt - ob das bei Dir zum tragen kommt, kann ich nicht beurteilen. Wenn Du ein Service Provider bist, wäre vielleicht auch noch die SQL Server 2012 Web Edition interessant.

Weitere Infos: Von den SQL Server 2012-Editionen unterstützte Funktionen.
19.08.2013
Jaksa 4,0k 1 8
0
Für .NET lautet meine Empfehlung MS SQL Express. Microsoft kann meistens am besten mit Microsoft. Und meistens spielt die Wahl der Programmiersprache bzw. -welt doch eine große Rolle für die Wahl der Datenbank, bzw. umgekehrt.

Ansonsten wie Jaksa.

Ein Webservice ist die einfachste Möglichkeit, Datenbankzugriffe sicher zu machen. Natürlich kannst du auch direkte Zugriffe absichern, aber nur mit erheblich höherem Aufwand.
20.08.2013
mupan 575 1 8
mupan 575 1 8
Wäre eine Nachteil => http://codekicker.de/fragen/.NET-WindowsForms-direkter-Zugriff-Datenbank
lbm1305 20.08.2013
-1
Kommerzieller Zweck? Also, ihr wollt Geld verdienen? Aber den Entwicklern einer schnellen DB, die möglichst 20 - 40 User zulässt, gönnt ihr nichts? Soll nichts kosten? Verkehrte Welt!
19.08.2013
Karl1962 9 2
Diese Bemerkung war absolut überflüssig und unproduktiv!
Ich habe geschrieben das ich eine GÜNSTIGE Lösung suche! GÜNSTIG, NICHT kostenlos!
Maik_1978 19.08.2013

Stelle deine Programmieren-Frage jetzt!