««« | »»»
Core Data, sì o no?
Premessa doverosa: non ho mai usato Core Data anche se ho usato in lungo e in largo l’EOF, fino a lasciarlo perdere. I post1 di Brent Simmons in cui dice di aver rinunciato a usare Core Data sull’iPhone per problemi di prestazioni, quindi, non poteva sfuggirmi, tanto più che ha generato diverse reazioni interessanti2.
Quello che mi interessa discutere non è la scelta in sé, che è solo buon senso applicato alla programmazione, ovvero, lavora sempre al più alto livello di astrazione possibile, scendi sotto solo se sei obbligato.
Quello che continuo a non capire è come si possa sostenere che una cosa come update newsItems set read = 1 where... stia a un livello di astrazione più basso di un loop in Objective-C o qualche altro linguaggio.
Non mi sfuggono gli aspetti problematici del fare interagire un programma con un database né che secondo alcuni Core Data non è un database o un ORM3, ma è proprio questo arguire intorno al cosa sia Core Data mi rende sospettoso perché queste discussioni sembrano spostare il problema nell’àmbito delle aspettative sbagliate.
Secondo la documentazione ufficiale:
The technically correct way to describe Core Data is as an object-graph management and persistence framework. In down-to-earth terms, this means that Core Data organizes the application’s model layer into a set of defined in-memory data objects. Core Data tracks changes to these objects and can reverse those changes on demand, such as when a user performs an undo command. Then, when it is time to save changes to your application’s data, Core Data takes care of archiving the objects to a persistent store. (…)
Core Data builds on some of the concepts of enterprise-class database application frameworks, such as the Enterprise Objects Framework in WebObjects. However, make no mistake, Core Data is not an object-relational database access framework. Instead, it uses concepts from the database world to take application data management to a new level.
Ora, se diamo per buona questa descrizione — e non vedo perché non dovremmo — bisogna chiedersi: le aspettative di Brent Simmons erano ragionevoli? Credo di sì, perché se “usi dei concetti dal mondo dei database” non è strano aspettarsi un modo efficiente di fare un update. Giusto?
- ad esempio si vedano questi due tweet di @bbum e @siracusa o anche The differences between Core Data and a Database ↩
Per proseguire
Commenti e trackback sono disabilitati.