Bereiche
News
Rewind
Tipps & Berichte
Forum
Galerie
Journals
Events
Umfragen
Themenwoche
Kleinanzeigen
Interaktiv
Anmelden
Registrierung
Zu allen empfangenen Nachrichten
Suche...
Zur erweiterten Suche
Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?
Forum
>
Entwickler
>
Obj-C und Datenbanken?
Obj-C und Datenbanken?
Christoph_M
04.09.14
13:25
Moin,
ich habe jetzt längere Zeit gesucht und leider keine praktikable Lösung gefunden, um sich aus Objective-C (OS X Applikation, nicht iOS) heraus mit einer MS SQL Datenbank zu verbinden. Das geht aus Java oder C# deutlich einfacher.
In dem Fall dachte ich an Plan B: MySQL. Aber selbst das scheint irgendwie nicht "einfach so" zu gehen sondern wieder nur über Umwege. Das kann ich aber irgendwie nicht glauben, es muss doch auch für Obj-C ordentliche Abstraktionen geben wie z.b. Hibernate. Gibt es hier ein wohlgehütetes Geheimnis?
Danke!
Hilfreich?
0
Kommentare
ExMacRabbitPro
04.09.14
13:53
Das Cocoa Framework verfügt nicht über so etwas wie z.B. JDBC bei Java. Es bleibt die Client Library der jeweiligen Datenbank direkt anzusprechen oder halt ODBC. Das sind i.d.R. C/C++ APIs. Aber das geht ja von ObjC aus problemlos.
Ansonsten gibt es noch CoreData - da ist SQLite untendrunter.
Darüber hinaus mag es auch kommerzielle Anbieter von propritäre DB Frameworks für Cocoa/ObjC geben - damit habe ich mich aber noch nicht befasst.
Hilfreich?
0
strife
04.09.14
15:19
1. MySQL hat eine C Client - Library. Die kann man auch aus Objective-C verwenden.
2. http://cocoapods.org/?q=SQL
3. Muss es den unbedingt eine SQL Datenbank sein. Wenn Du Macs als Client verwenden willst, ist vielleicht eine Datenbank, die sich einfach über HTTP ansprechen lässt, die bessere Wahl (CouchDB, Riak, etc.) TouchDB sollen ja eigene Leute mit CouchDB ganz erfolgreich einsetzen. (https://github.com/couchbaselabs/TouchDB-iOS).
Hilfreich?
0
Duck Dodgers
04.09.14
15:45
wie meine Vorredner schon sagten, gibt es leider keine "Apple" Lösung dafür. Aber es ist ziemlich leicht, MySQL über den Connector anzusprechen. Doku & download hier: http://dev.mysql.com/downloads/connector/c/
Wenn die DB nur für die eigene Anwendung ist, dann würde ich lieber CoreData nutzen. Gibt im Netz viele Tutorials dazu!
Hilfreich?
0
strife
04.09.14
16:12
CoreData ist vom Konzept der letzte Rotz. Langsam, umständlich, unflexibel, steile Lernkurve für nix. Würde ich schön die Finger von lassen.
Nimm lieber http://realm.io oder https://github.com/yaptv/YapDatabase.
Hilfreich?
0
TiBooX
04.09.14
16:26
strife
CoreData ist vom Konzept der letzte Rotz. Langsam, umständlich, unflexibel, steile Lernkurve für nix. Würde ich schön die Finger von lassen.
Ja, deine Lernkurve kommt bei CoreData wirklich nicht mit.
Schon weil du nicht begriffen hast, dass CoreData keine Datenbank sondern ein ORM ist.
Ich finde CoreData und andere ORMs sind die einzig ware Art sich den unsäglichen SQL-Datensenken zu nähern.
CoreData rockt und das im Prinzip schon seit WebObjects.
„People who are really serious about software should make their own hardware [A. Kay]“
Hilfreich?
0
TiBooX
04.09.14
16:35
Christoph_M
Moin,
ich habe jetzt längere Zeit gesucht und leider keine praktikable Lösung gefunden, um sich aus Objective-C (OS X Applikation, nicht iOS) heraus mit einer MS SQL Datenbank zu verbinden. Das geht aus Java oder C# deutlich einfacher.
In dem Fall dachte ich an Plan B: MySQL. Aber selbst das scheint irgendwie nicht "einfach so" zu gehen sondern wieder nur über Umwege. Das kann ich aber irgendwie nicht glauben, es muss doch auch für Obj-C ordentliche Abstraktionen geben wie z.b. Hibernate. Gibt es hier ein wohlgehütetes Geheimnis?
Danke!
schau mal hier wenns unbeding MSSQL sein muss
Sonst gibt's auch noch die Möglichkeit direkt auf SQLite (die übliche CreData Datensenke)zuzugreifen FMDB :
Zudem würde ich dazu tendieren Datenbanken über "definierte" Platformunabhängige Services von mobile aufzurufen (e.g. SOAP z.B. via SharePoint) oder Rest, ... mindestens aber über ODBC.
„People who are really serious about software should make their own hardware [A. Kay]“
Hilfreich?
0
Duck Dodgers
04.09.14
16:36
@strife
Was für ein dummes Geschwätz!
Hilfreich?
0
Mendel Kucharzeck
04.09.14
16:49
strife
Es ist definitiv erforderlich, sich mit CoreData auseinanderzusetzen bevor man es nutzt. Sonst fällt man auf ziemlich viele Sachen rein und erreicht keine akzeptable performance. Wenn man weiss wie man es nutzen sollte ist die performance absolut in ordnung.
Hilfreich?
0
strife
04.09.14
17:33
TiBooX
Schon weil du nicht begriffen hast, dass CoreData keine Datenbank sondern ein ORM ist.
Das wäre ja fast lustig, wenn es nicht so traurig wäre wieviel Zeit meines Lebens in ich den letzten Jahren mit CoreData verschwendet habe.
Und weil ich keine Ahnung von ORMs habe empfehle ich Realm und YapDB? Ich glaube, jemand anders hier guckt nicht über den Tellerrand.
Hilfreich?
0
strife
04.09.14
17:40
Mendel Kucharzeck
strife
Es ist definitiv erforderlich, sich mit CoreData auseinanderzusetzen bevor man es nutzt. Sonst fällt man auf ziemlich viele Sachen rein und erreicht keine akzeptable performance. Wenn man weiss wie man es nutzen sollte ist die performance absolut in ordnung.
Aber einer bestimmten Datenmenge ist das Teil einfach nicht mehr zu gebrauchen. Schon allein SQLite3 is einfach zu langsam, und CoreData obendrauf macht die Sache nicht besser.
Schau mal hier bei Seite 5: https://raw.githubusercontent.com/facebook/rocksdb/gh-pages/intro.pdf
Einfach ALLES ist schneller als SQLite.
Hilfreich?
0
Mendel Kucharzeck
04.09.14
18:08
strife
Du musst halt wissen wofür du es einsetzt. Wenn du das letzte Quäntchen an Performance brauchst bist du bei CoreData definitiv falsch.
Hilfreich?
0
ExMacRabbitPro
04.09.14
18:18
Mendel Kucharzeck
strife
Du musst halt wissen wofür du es einsetzt. Wenn du das letzte Quäntchen an Performance brauchst bist du bei CoreData definitiv falsch.
+1
Hilfreich?
0
strife
04.09.14
20:40
Mendel Kucharzeck
Es ist ja nicht nur die Performance. Es ist das ganze Konzept von CoreData, dass nicht richtig zu Objective-C zu passen scheint.
Warum brauche ich eine extra Schema Datei, wenn man die Information zur Laufzeit aus der Runtime bekommt (siehe Realm.io)?
Warum ist der Stack so überfrachtet (NSPersistentStoreCoordinator, NSPersistentStore, NSManagedObjectContext) ?
Warum funktioniert Synching über iCloud nur ordentlich über Umwege wie Ensembles.io?
Warum kann man einen Datenbestand nicht auf ein altes Schema zurück migrieren?
Warum ist das Threading Model so kompliziert?
... und und ...
CoreData ist eines der enttäuschendes Frameworks von Apple. Wenn man wenig Daten hat, und es eigentlich nicht bräuchte, dann ist es ganz ok, aber sobald das Schema komplexer wird und mehr Daten vorhanden sind, dann geht der Krampf los.
Hilfreich?
0
Duck Dodgers
04.09.14
21:10
strife
... und und ...
Das heißt also, dass realm und yap das alles von Haus aus können und der Entwickler nichts weiteres tun muss?
Hilfreich?
0
strife
05.09.14
11:20
Duck Dockers
Alles kriegen diese Projekte auch nicht gelöst, aber ein paar Sachen sind schon wesentlich besser: Der Zwang zur extra Schema Datei entfällt, man braucht nicht mehr so viel Boilerplate Code um eine App an den Start zu bringen.
Yap nutzt noch SQLite als Backend, dürfte also nicht viel schneller als CoreData sein. Realm behauptet , wesentlich schneller als CoreData zu sein. Ich habe das nicht überprüft, aber ich halte das für sehr wahrscheinlich.
CoreData orientiert sich aufgrund seines EOF Hintergrunds an SQL-basierten Servern. Den NoSQL Zug, auf den die Serverwelt schon längst aufgesprungen ist, hat Apple wohl verpennt.
Hilfreich?
0
Duck Dodgers
05.09.14
12:25
Naja schön, dass du Yap und Realm so anpreist, aber (wie du selber sagst) kannst du gar nicht beurteilen, wie viel einfacher und schneller das ist!!
Sorry gerade deshalb kann ich deine erste PAUSCHALE Aussage absolut nicht nachvollziehen. CoreData hat wie jede andere DB sein Berechtigung ...
Hilfreich?
0
strife
05.09.14
15:30
Duck Dodgers
In unserer Firma haben wir unsere eigenen CoreData Ersatz, alá Realm, auf Basis von Googles LevelDB Bibliothek im Einsatz.
Deshalb kann ich zur Realm im Speziellen nichts sagen. Da es aber vom Konzept unserer eigenen Bibliothek sehr ähnlich ist, wird es wohl ebenfalls um Längen besser zu Benutzen sein als CoreData.
Was ich aber sagen kann, ist das CoreData dermaßen altbacken ist, dass man damit nicht mehr seine Zeit verschwenden sollte.
Hilfreich?
0
Duck Dodgers
05.09.14
18:48
strife
...
wird es wohl
ebenfalls um Längen besser zu Benutzen sein als CoreData.
wird wohl
Hilfreich?
0
Kommentieren
Diese Diskussion ist bereits mehr als 3 Monate alt und kann daher nicht mehr kommentiert werden.
Vor 18 Jahren: iPhone, Apple TV und "Apple Inc."
Doch keine finalen Versionen: Apple gibt zweite...
Test Apple Mac mini M4
Kurz: Trump unterstützt Musk als TikTok-Besitze...
PIN-Code erraten: Dauer
M4 Mac mini im Effizienztest: Hohe Ersparnis im...
macOS 15.2 steht ab sofort zur Verfügung
Gurman zum Release des neuen Apple TV, HomePods...