Mondi su mondi, sistemi di sistemi.

Core Data, sì o no?

Premessa dove­rosa: non ho mai usato Core Data anche se ho usato in lungo e in largo l’EOF, fino a lasciarlo per­dere. I post1 di Brent Simmons in cui dice di aver rinun­ciato a usare Core Data sull’iPhone per pro­blemi di pre­sta­zioni, quindi, non poteva sfug­girmi, tanto più che ha gene­rato diverse rea­zioni inte­res­santi2.

Quello che mi inte­ressa discu­tere non è la scelta in sé, che è solo buon senso appli­cato alla pro­gram­ma­zione, ovvero, lavora sem­pre al più alto livello di astra­zione pos­si­bile, scendi sotto solo se sei obbligato.

Quello che con­ti­nuo a non capire è come si possa soste­nere che una cosa come update newsItems set read = 1 where... stia a un livello di astra­zione più basso di un loop in Objective-C o qual­che altro linguaggio.

Non mi sfug­gono gli aspetti pro­ble­ma­tici del fare inte­ra­gire un pro­gramma con un data­base né che secondo alcuni Core Data non è un data­base o un ORM3, ma è pro­prio que­sto arguire intorno al cosa sia Core Data mi rende sospet­toso per­ché que­ste discus­sioni sem­brano spo­stare il pro­blema nell’àmbito delle aspet­ta­tive sbagliate.

Secondo la docu­men­ta­zione ufficiale:

The tech­ni­cally cor­rect way to describe Core Data is as an object-graph mana­ge­ment and per­si­stence fra­mework. In down-to-earth terms, this means that Core Data orga­ni­zes the application’s model layer into a set of defi­ned in-memory data objects. Core Data tracks chan­ges to these objects and can reverse those chan­ges on demand, such as when a user per­forms an undo com­mand. Then, when it is time to save chan­ges to your application’s data, Core Data takes care of archi­ving the objects to a per­si­stent store. (…)

Core Data builds on some of the con­cepts of enterprise-class data­base appli­ca­tion fra­meworks, such as the Enterprise Objects Framework in WebObjects. However, make no mistake, Core Data is not an object-relational data­base access fra­mework. Instead, it uses con­cepts from the data­base world to take appli­ca­tion data mana­ge­ment to a new level.

Ora, se diamo per buona que­sta descri­zione — e non vedo per­ché non dovremmo — biso­gna chie­dersi: le aspet­ta­tive di Brent Simmons erano ragio­ne­voli? Credo di sì, per­ché se “usi dei con­cetti dal mondo dei data­base” non è strano aspet­tarsi un modo effi­ciente di fare un update. Giusto?

Per proseguire

Commenti e trackback sono disabilitati.