Wednesday 16 August 2017

Core Dati Sqlite Vs Binario Options


se i file blob di un SQLite sono serializzati, che potrebbe significare che la serializzazione è il migliore al fine di ottenere i più piccoli blocchi di dati binari. Come ben si può usare per NSCoding conditionalObjectEncodings, che elimina la duplicazione di istanze di oggetti vivi in ​​memoria. La ragione i39m questa domanda, è perché tutti parlano e suggerisce CoreData-SQLite, ma non i39m visto che vantaggio A meno che la costruzione di un enorme contro un'origine dati, e si can39t messo tutto quello che nella memoria. Ho ragione ndash LolaRun 5 marzo 12 a 18:12 C'è sempre un equilibrio tra la memoria e l'ottimizzazione delle prestazioni. Con NSCoding, o la vostra rappresentazione binaria personalizzata avere molto più controllo su i bit vengono scritti allo stoccaggio o di essere memorizzato nella memoria, ma per questo si deve pagare il prezzo di codifica più in tal modo l'efficienza del codice dipenderà dalla vostra abilità. Con CoreDataSQLite un sacco di cose utili sono implementate per voi in modo efficiente (la ricerca, l'interrogazione, l'indicizzazione, si unisce, ecc). Nota: gli oggetti CoreData vengono caricati nella memoria solo quando necessario, altrimenti rimangono nel db. ndash MrTJ 6 marzo 12 alle 08:26 Eccellente. Quindi, se i39m utilizzando il modello quotApplicationDocumentquot di applicazioni, e se ho bisogno di salvare e aprire i documenti, i wouldn39t davvero bisogno i vantaggi di CoreData, dal momento che ho bisogno di caricare tutto in memoria, e don39t bisogno di interrogare e. funzionalità di database. La differenza principale è il costo di sviluppo. Che nel mio caso non è una battuta d'arresto. Molte grazie. I39ll aspettare un po ', per attirare più risposte e più discussioni, prima di accettare una risposta ndash LolaRun 6-mar-12 a 13:41 C'è sempre una impedenza tra gli oggetti e le strutture relazionali. Io preferisco sempre gli oggetti in quanto l'accesso ai dati è in genere una frazione di funzionalità nella vostra applicazione. Con NSCoding, si ottiene la semplicità, la facilità di debugging, e controllo con pochissimo codice per scrivere comunque. Hai anche la possibilità di integrare NSCoding nelle vostre strutture di database. NSCoding è un meccanismo di persistenza per salvare oggetti. Se si aggiungono gli indici per le vostre strutture relazionali per l'ottimizzazione di ricerca e di mantenere le strutture degli oggetti, allora penso che si ottiene il migliore dei mondi ad un costo molto basso e facilità di manutenzione. ha risposto 14 ago 13 ad 20: 19Core dati immagine Caching Pubblicato il 16 Marzo 2012 da Hawk iMedia Si tratta di un modello comune per un app per fare qualcosa con i dati che non è locale. Mantenimento delle prestazioni applicazione decente durante il recupero dei dati è una sfida (e non il focus di questo articolo). Mantenere i dati, e abbastanza di esso, per un uso successivo e per evitare di dover ottenere di nuovo, è un'altra sfida. Ci sono soluzioni ovvie, alcune semplici e altri no, e tutti con i propri vantaggi e svantaggi. Ciò che è Caching Caching è, molto semplicemente, tenendo qualcosa in giro per un uso successivo, che era 8220hard8221 per ottenere, in primo luogo. Questo potrebbe essere dati esterni, un valore calcolato, o qualsiasi cosa che non you8217d piuttosto deve acquisire più di una volta se si può evitare. La memorizzazione nella cache non deve essere considerato un processo senza limiti, però. Con questo voglio dire che si can8217t solo in cache tutto per sempre Bisogna avere un modo per eliminare la cache periodicamente sulla base di qualche algoritmo che ha un senso per la propria applicazione. Un comune (e semplice) algoritmo viene utilizzato Least Recently, o LRU. Con questo algoritmo, la teoria è che i prodotti in cache che sono stati utilizzati meno sono candidati ad essere spurgato forma la cache in base a una certa soglia di non utilizzo. Si può immaginare che su un dispositivo mobile spurgo la cache è importante a causa delle limitazioni di spazio intrinseche. Si potrebbe anche scegliere di memorizzare nella cache una quantità limitata di dati (ma you8217d ancora bisogno di sapere che cosa far cadere se la cache ha troppo grande.) Gol del caching Le ragioni per la cache sono piuttosto semplici: Ma come si raggiunge questo obiettivo dipende in parte su ciò che una definizione ragionevole di 8220performance8221 è per la vostra applicazione. Prestazioni in quanto si riferisce alla cache sarà evidente in molti luoghi diversi: iniziale carico di cache cache di spurgo accesso Cache Cache Salva come distintamente come I8217ve fatto questa lista, si scopre che ciascuna di queste cose sono legati gli uni agli altri in una certa misura. Ad esempio, la cache di spurgo è qualcosa che si potrebbe eseguire durante il caricamento della cache. La frequenza di cache di salvataggio deve essere correlato a qualcosa di simile a quanto 8220dirty8221 la cache è (quante cose sono cambiate dopo l'ultimo salvataggio) o quanto tempo è trascorso da quando il l'ultimo salvataggio. Opzioni di implementazione Ci sono diverse opzioni per l'implementazione di una cache. La scelta dipende molto da che tipo di dati si è caching, la quantità di dati è necessario cache, come si intende gestire la cache (cioè eliminazione), e, probabilmente, un sacco di altre cose specifiche per la vostra applicazione. Le scelte ovvie sono: database di file di dizionario o una combinazione di questi Let8217s guardano ciascuno. Dizionario usando un dizionario sembra una scelta ovvia. Sono facili da usare e di facile comprensione. Per molto piccoli insiemi di dati, questo può essere una buona scelta. Ma una volta che il set di dati viene 8220large8221, si inizierà a notare i problemi di prestazioni soprattutto quando è necessario caricarlo, eliminare, o salvarlo. Utilizzo di un dizionario è certamente facile e veloce. Così anche, la lettura e la scrittura di un dizionario è facile, ma come il set di dati cresce, queste azioni diventeranno lento perché you8217re leggere e scrivere l'intero dizionario. Pro: veloce e facile, soprattutto per i piccoli insiemi di dati Contro: Non scalabile, vale a dire le prestazioni rallenta come il set di dati cresce. I singoli file potrebbe essere un miglioramento. Se la cache you8217re dire, le immagini in miniatura, si potrebbe ideare un sistema per la scrittura ogni file nel file system in modo che poi ti permette di trovare di nuovo. Questo ha il vantaggio che you8217re solo la lettura e la scrittura di un singolo file alla volta. Ha gli svantaggi che si potrebbe mettere un carico pesante sul file system ed è difficile, senza meta dati aggiuntivi memorizzati altrove, per gestire la cache, in termini di eliminazione dei vecchi dati o limitare it8217s dimensioni. Questo approccio è un po 'più complicato rispetto all'utilizzo di un dizionario, ma ancora abbastanza semplice da capire e da affrontare. Pro: ancora semplice, e dovrebbe essere relativamente veloce per memorizzare e recuperare i dati, tranne in rari casi Contro: difficile da gestire la cache spurgo Probabilmente chiesti quando I8217d raggiungere CoreData Un database offre una bella astrazione ai dati, per non parlare di accesso casuale ai i dati e la delega di alcuni compiti 8220hard8221 al database sottostante. CoreData in realtà è utile per la memorizzazione nella cache, ho imparato, a causa dei benefici di operazioni di database-like. (Per non sarò ricordato nei commenti:. CoreData non è un database) In più di una occasione ora ho usato una cache CoreData-based per la memorizzazione dei dati di immagine a livello locale. I vantaggi di prestazioni solo erano vale la pena. Ma io didn8217t iniziare con CoreData. Ho iniziato con un dizionario. In un app che memorizzare circa 3 MB o più di dati di immagine, con scadenza 30 giorni sulle singole voci. Si è scoperto che il tentativo di leggere o scrivere questa quantità di dati come un dizionario era lento e peggio, l'intero dizionario doveva essere attraversato per trovare le voci per scadere, che ha reso le cose peggiori. Un modo esempio di esempio, ho voluto sottolineare solo alcune delle cose sulla mia cache dell'immagine CoreData, ora in uso in un paio di applicazioni. Il modello ha iniziato abbastanza semplice: ero un noobie CoreData quando ho sviluppato prima questo, così ho definito l'attributo di dati di immagine come dati binari. Questo ha funzionato, ma richiede che faccio il lavoro nel mio codice per trasformare i dati in un UIImage. Si scopre CoreData può fare questo tipo di trasformazione per voi utilizzando il tipo di attributo trasformabile. Ne riparleremo più avanti. L'attributo URL dell'immagine è in realtà la chiave per ogni record. E il lastUsedTimestamp è la chiave (per così dire) per la gestione della cache spurgo. Quando la mia applicazione si avvia, e il modello e componenti associati vengono inizializzati, la prima cosa che viene fatto è quello di eliminare la cache di tutto ciò che è scaduto. Questo viene fatto utilizzando un predefinito recupero richiesta: E il codice seguente: Ci sono molte cose da come su questo codice (credo). Per uno, è compatto. Non è necessario per scorrere l'intera cache per trovare le voci in cui we8217re interessati. In realtà, abbiamo appena lasciato accordo CoreData con quello. E, in realtà abbiamo a toccare un numero molto limitato di oggetti (se presente) per eliminarli. Alla fine, CoreData gestisce quali oggetti sono sporchi, o eliminati, e fa la cosa giusta. Per quello che vale it8217s, il codice per recuperare le voci in base al loro URL è simile compatto. Usiamo una diversa richiesta di recupero predefinito per questo. In qualità di ottimizzazione, volevo interrompere la memorizzazione di dati binari (e la sua conversione nel mio codice di UIImage) e di utilizzare invece un trasformabile. Sembrava dritto abbastanza avanti: Creare una nuova versione del modello, cambiare il tipo di dati dati binari trasformabile, e lasciare leggero migrazione prendersi cura di tutto il resto. Purtroppo, quel lavoro didn8217t. Here8217s il modello che ho in ultima analisi, si avvicinò con: così come il modello di mappatura per la migrazione: Questo ha permesso leggero migrazione di lavorare, ma ho dovuto fare un po 'di lavoro in più nel mio codice per spostare i dati dai dati per la nuova immagine attributo tipo trasformabile: La voce variabile è un oggetto gestito di recente recuperato da CoreData. Per il caso in cui ci sia vecchi dati in giro, abbiamo bisogno di impostare l'attributo di immagine a un UIImage creati utilizzando tali dati. CoreData si prenderà cura di riconversione dati binari, e memorizzare in questo modo. E in futuro, l'attributo di immagine sarà solo una immagine che possiamo manipolare. Questo non è forse il modo più efficace per aver fatto questo, ma sembrava funzionare e ho couldn8217t trovare un'altra soluzione. Abbiamo anche impostare entry. data a zero in modo da don8217t abbiamo due copie dei dati binari in CoreData e così abbiamo don8217t fare questo 8220upgrade8221 ogni volta per ogni immagine. It8217s vale niente, almeno, che questa migrazione dei dati poco è fatto solo come immagini sono chiamati dalla UI. Così il dolore di questo si sviluppa come viene utilizzata l'applicazione. E c'è sempre la possibilità che le voci di cache saranno invecchiati fuori prima di essere mai convertiti con questo codice. Prendo conforto in questo. Conclusioni CoreData rocce Una volta passato il codice standard standard, ma necessario, è necessario scrivere di utilizzare CoreData nella vostra applicazione, è abbastanza piacevole da usare e davvero vi libera da preoccuparsi troppo su come gestire i dati e permette di concentrarsi su come si necessità di utilizzare i dati nel vostro app. Per gli scopi di caching, penso che sia davvero una bella alternativa e sembra funzionare bene per me finora. Quali sono i tuoi pensieri su di caching con CoreData Fammi sapere nei commenti. Condividi questo: Tom Wilson dice: Non sarebbe meglio per memorizzare i dati di immagine sul disco e basta usare gli oggetti di dati di base per tenere traccia dei meta-dati (url, usato per l'ultima volta di bollo), e quindi l'override del metodo prepareForDeletion a ripulire i file di memorizzazione dei file in modo da poterli facilmente trovare e li hanno unico è facile 8211 solo fare un hash fuori l'URL oppure i dati di base id (assicurarsi che il suo permanente uno e non temporanea uno: P) che modo è possibile recuperare e scorrere e fare tutto ciò con i record di cache, senza dati fondamentali recuperare i dati di immagine nella RAM costantemente. Dovrebbe essere un incremento delle prestazioni ragionevole senza molto effort8230 Hi Tom - Grazie per questo suggerimento it8217s un bel ottimizzazione. Un dettaglio ho lasciato fuori del mio articolo è che una volta vado a prendere un oggetto gestito da CoreData, lo tengo in un dizionario in memoria. Quindi, una volta che i dati di immagine (come parte dell'oggetto gestito) viene letto in, it8217s in memoria. Così la prossima volta it8217s bisogno, che IO non è necessaria. Detto questo, il suo suggerimento è ancora valido e si muove nella direzione di combinare tecniche di caching disponibili in soluzioni ibride interessanti. Grazie Karl Puder dice: Hai mantenere il campo 8220data8221 perché esisteva già, per la compatibilità con le versioni precedenti, o per qualche altro motivo penso che vorrei recuperare il contenuto di un URL e farlo in una immagine subito, dal momento che la richiesta viene presumibilmente accadendo perché abbiamo bisogno di dimostrare che cosa sullo schermo al momento. E 'stata una mossa della disperazione. La mia speranza era che la migrazione leggero sarebbe automagicamente la migrazione del modello originale (url, i dati, timestamp) al nuovo modello (url, immagine, timestamp) utilizzando un modello di mappatura che mappato i dati - immagine. Ma che non ha funzionato. Così ho fatto il nuovo modello include tutti i vecchi attributi model8217s più un nuovo attributo, immagine. Il modello di mappatura mappa i vecchi attributi direttamente alle loro controparti nel nuovo modello e imposta il nuovo attributo dell'immagine a 0 (o pari a zero, in modo efficace). Poi, nel codice, controllo per un valore pari a zero un'immagine in oggetto gestito e trasformo in codice l'attributo di dati per l'attributo dell'immagine, e impostare l'attributo di dati a zero. Questo non è forse il modo 8220right8221 di aver fatto questo, ma ha funzionato. Questo è più facile se si utilizzano rapporti di grandi dimensioni Data Objects (BLOB). Come con tutti i problemi di prestazioni vorrei consigliare utilizzando il metodo più semplice fino a quando il suo un problema di prestazioni. I8217ve stato molto più felice quando ho capito di lavorare prima e poi Usa profilo guidato ottimizzazioni. Inoltre, dopo 20 anni di programmazione, la sua anche sorprendente la rapidità con ottimizzazioni librerie o OS8217s ottimizzazioni a livello di applicazioni obsolete. Hi Todd - Grazie per il tuo commento. Come per l'utilizzo dei metodi più semplici prima, sono d'accordo. Tuttavia, in questo caso particolare, in cui ho iniziato ad usare un NSDictionary, ho scoperto che la lettura e la scrittura è diventata un vero e proprio collo di bottiglia, che è il motivo per cui ho iniziato a guardare CoreData. Dylan Neild dice: Credo che l'unica cosa da tenere a mente qui è iCloud Backup, in particolare se si utilizza Core Data su iOS. In particolare, se si memorizzano il file SQLite Core Data nella directory Documenti iCloud sta per eseguire automaticamente quando l'utente si connette il telefono al potere (se hanno così configurato). Il problema con la memorizzazione di dati blob in quel file SQLite è che questo singolo file è ora crescendo in dimensioni, con ogni blob aggiunto e I8217d pensare iCloud sarebbe poi ri-backup l'intero file, a sua volta, no Questo può ottenere dati proibitivo lento intenso quando si aggiunge un immagine 5KB a un database 500MB significa un nuovo backup 500MB5K. A meno che Apple ha una sorta di strategia di backup 8220row-level8221 quando si tratta di file SQLite Core Data Essi fare la sincronizzazione a livello di riga per iCloud la sincronizzazione in modo it8217s possibile 8211 ma can8217t trovo alcun riferimento a questo ovunque. Dylan - Siete assolutamente corretto. Nelle implementazioni di questo schema di caching CoreData ho esplicitamente non ho messo il file di cache nella directory Documenti esattamente per le ragioni evidenziate. È una cache, dopo tutto. Così il posto giusto per mettere il file è in LibraryCaches, in modo da iOS possono recuperare quello spazio, se è necessario. C'è una caratteristica aggiunta in iOS 5.0.1 che permette di impostare un app un po 8220no backup8221 su qualsiasi file. That8217s un altro modo per dire al sistema di non eseguire il backup di qualcosa. In sostanza, la regola generale è che se l'utente ha creato i dati, dovrebbe andare in Documenti. Se didn8217t e può essere facilmente ricreati o refetched, dovrebbe andare intoiOS database: SqlLite vs Core Data vs Reame Se si vuole fare una grande applicazione che corre veloce e solo funziona (nessun bug ammessi) youll devono pensare tutti gli aspetti dello sviluppo della vostra applicazione con attenzione. Uno degli aspetti è necessario capire è come memorizzare e ricerca di grandi quantità di dati, in modo da youll probabilmente usa un database. Le opzioni più comuni per i database iOS sono SQLite e Core Data e un lettore chiamato relativamente recente Realm. Questo articolo riguarda i pro ei contro di ogni opzione e discute il processo di passaggio al regno se si sta già utilizzando SQLite o Core Data. SQLite è il motore di database più utilizzato al mondo e il suo open source pure. Esso implementa un motore di database SQL transazionale senza alcuna configurazione e nessun server richiesto. SQLite è accessibile su Mac OS-X, iOS, Android, Linux e Windows. Fornisce un'interfaccia di programmazione semplice e user-friendly, come è scritto in ANSI-C. SQLite è anche molto piccolo e leggero e il database completo può essere memorizzato in un file su disco multi-piattaforma. Le ragioni della grande popolarità di SQLite sono la sua: l'indipendenza da un server di zero-configurazione di accesso sicuro da più processi e thread memorizza i dati in tabelle con una o più colonne che contengono un tipo specifico di dati. Core Data è la seconda tecnologia di storage iOS principale a disposizione degli sviluppatori di app. A seconda del tipo di dati e la quantità di dati necessari per gestire e conservare, sia SQLite e Core Data hanno i loro pro e contro. Core Data si concentra più sugli oggetti rispetto ai tradizionali metodi di database tavolo. Con Core Data, in realtà si sta memorizzando contenuto di un oggetto che è rappresentato da una classe in Objective-C. Anche se sono fondamentalmente diversi, dati fondamentali: usa più memoria di SQLite utilizza più spazio di archiviazione di SQLite più veloce nel recupero record di SQLite. C'è una nuova (ish) giocatore in città chiamato Realm. Realm è stato progettato per essere più veloce e più efficiente rispetto alle soluzioni database precedenti. Questa nuova soluzione è una base di dati mobili cross-piattaforma chiamata Realm. E 'disponibile in Objective-C e Swift, e il suo stato progettato per iOS e Android. I principali pregi di Reame sono: Il suo modo assolutamente gratuito, veloce e facile da usare. Uso illimitato. I lavori per il proprio motore di persistenza per la velocità e le prestazioni. Che cosa è veramente grande a questo proposito è che è possibile gestire tutto il lavoro con un paio di righe di codice. Realm è molto facile da installare e più veloce per lavorare con rispetto a SQLite e Core Data. Inoltre, i file di database sono condivisibili tra iOS e Android. Se si progetta un app con un sacco di dischi e per un gran numero di utenti, è necessario prestare particolare attenzione alla scalabilità fin dall'inizio. Realm è grande a questo e ti permette di gestire un sacco di dati veloce. Per iniziare con il Regno, tutto ciò che serve è almeno iOS 8 o OS X 10.9. Le versioni più vecchie dont sostenere questa nuova soluzione semplice per la gestione dello storage e database locale. Il passaggio a Realm Se avete lavorato con Core Data e si desidera passare al Regno, il processo è semplice. Molti sviluppatori hanno fatto il viaggio in un paio d'ore. Si noti che sia Core Data e dati Realm trattarli come oggetti così quello che dovete fare è refactoring del codice di base di dati da utilizzare Realm. Rimuovere il quadro di dati principale. Individuare la parte del codice che includono il codice Core Data e refactoring. Essi delineano un bel trucco per lanciare un errore di compilazione per ogni riga di codice utilizzando Core Data rimuovere il codice di configurazione Core Data. Theres intenzione di essere una parte del Core Data codice di impostazione da qualche parte nella vostra applicazione e avete bisogno di sbarazzarsi di tutto questo. Regno viene configurato automaticamente non appena si accede a un oggetto ambito per la prima volta. Si può scegliere dove si desidera memorizzare il file di dati Reame, e sarà ancora essere facoltativa in fase di esecuzione. La migrazione del modello file. È possibile convertire facilmente sottoclassi oggetto gestito a Realm. Realm gestisce le parole chiave di proprietà internamente (non dovete specificarli), il che rende l'intestazione della classe aspetto più minimale. Inoltre, è possibile rimuovere tutti NSNumber cruft perché Realm supporta semplici dati numerici (NSInteger e CGFloat). Ci sono anche limitazioni al Regno. A differenza di Core Data la cui oggetti hanno NSManagedObjectID per identificare gli oggetti in modo univoco, Regno lascia questo a voi come lo sviluppatore. In secondo luogo, la versione corrente di Realm sopraelevazione accordo con le proprietà degli oggetti con un valore pari a zero. Si tratta di un piccolo inconveniente, ma gli sviluppatori promettono che la prossima versione del Reame solito hanno questo problema. Migrazione operazioni di scrittura. Realm8217s le operazioni di salvataggio sono un po 'diverso rispetto a Core Data e avete bisogno di prendere confidenza con questo. Una volta che gli oggetti Realm vengono aggiunti a un oggetto Reame, che smussano essere modificati. Questo garantisce la coerenza dei dati in diversi thread. Per essere in grado di modificare le proprietà, l'oggetto in cui questi sono stati salvati deve essere in una transazione di scrittura. Migrare le vostre domande a essere in grado di recuperare i dati in base alle esigenze. Per recuperare un file, in Core Data è necessario circa 10 righe di codice. Nel regno, si può fare la stessa cosa con una sola riga. Migrare i dati di produzione degli utenti per le applicazioni attive creati in Core Data, è possibile ri-collegare il quadro Core Data di nuovo in app, recuperare i dati degli utenti e passarlo a Realm. Una soluzione più semplice per i dati degli utenti sostituibili è quello di rimuovere tutti i Core Data salvare i file e ricominciare la prossima volta che l'applicazione è aperta. La chiave è quello di mantenere il processo di progettazione più semplice con le migliori tecniche e strumenti. Una volta che avete investito tempo per impostare il processo vero e provato non lasciare che l'attrazione di nuovi si prende fuori rotta. Possa il nuovo lavoro di essere una parte del vostro processo e il tempo è il rivelatore di che non è degno. Messaggio navigationiOS database di confronto: SqlLite vs. Core Data vs Reame Se si vuole fare una grande applicazione che corre veloce e solo Works (senza errori ammessi) hanno youll di riflettere attentamente su tutti gli aspetti dello sviluppo della vostra applicazione. Uno degli aspetti è necessario capire è come memorizzare e ricerca di grandi quantità di dati, in modo da youll probabilmente usa un database. Le opzioni più comuni per i database iOS sono SQLite e Core Data, oltre a un giocatore relativamente nuovo chiamato Realm. Questo articolo riguarda i pro ei contro di ogni opzione e discute il processo di passaggio al regno se si sta già utilizzando SQLite o Core Data. SQLite è il motore di database più utilizzato al mondo e il suo open source pure. Esso implementa un motore di database SQL transazionale senza alcuna configurazione e nessun server richiesto. SQLite è accessibile su Mac OS-X, iOS, Android, Linux e Windows. Fornisce un'interfaccia di programmazione semplice e user-friendly, come è scritto in ANSI-C. SQLite è anche molto piccolo e leggero e il database completo può essere memorizzato in un file su disco multi-piattaforma. Le ragioni della grande popolarità di SQLite sono la sua: l'indipendenza da un server di zero-configurazione di accesso sicuro da più processi e thread memorizza i dati in tabelle con una o più colonne che contengono un tipo specifico di dati Core Data è la seconda tecnologia di storage iOS principale disponibile per gli sviluppatori di app. A seconda del tipo di dati e la quantità di dati necessari per gestire e conservare, sia SQLite e Core Data hanno i loro pro e contro. Core Data si concentra più sugli oggetti rispetto ai tradizionali metodi di database tavolo. Con Core Data, in realtà si sta memorizzando contenuto di un oggetto che è rappresentato da una classe in Objective-C. Anche se sono fondamentalmente diversi, dati fondamentali: usa più memoria di SQLite utilizza più spazio di archiviazione di SQLite più veloce nel recupero record di SQLite Theres una nuova (ish) giocatore in città chiamato Realm. Realm è stato progettato per essere più veloce e più efficiente rispetto alle soluzioni database precedenti. Questa nuova soluzione è una base di dati mobili cross-piattaforma chiamata Realm. E 'disponibile in Objective-C e Swift, e il suo stato progettato per iOS e Android. I principali pregi di Reame sono: La sua assolutamente gratuito veloce e facile da usare Uso illimitato Funziona su un proprio motore di persistenza per la velocità e le prestazioni Che cosa è veramente grande a questo proposito è che è possibile gestire tutto il lavoro con un paio di righe di codice . Realm è molto facile da installare e più veloce per lavorare con rispetto a SQLite e Core Data. Inoltre, i file di database sono condivisibili tra iOS e Android. Se si progetta un app con un sacco di dischi e per un gran numero di utenti, è necessario prestare particolare attenzione alla scalabilità fin dall'inizio. Realm è grande a questo e ti permette di gestire un sacco di dati veloce. Per iniziare con il Regno, tutto ciò che serve è almeno iOS 8 o OS X 10.9. Le versioni più vecchie dont sostenere questa nuova soluzione semplice per la gestione dello storage e database locale. Il passaggio a Realm Se avete lavorato con Core Data e si desidera passare al Regno, il processo è semplice. Molti sviluppatori hanno fatto il viaggio in un paio d'ore. Si noti che sia Core Data e dati Realm trattarli come oggetti così quello che dovete fare è refactoring del codice di base di dati da utilizzare Realm. Rimuovere il quadro di dati principale. Individuare le parti del codice che includono il codice Core Data e refactoring. Essi delineano un bel trucco per lanciare un errore di compilazione per ogni riga di codice utilizzando Core Data rimuovere il codice di configurazione Core Data. Theres intenzione di essere una parte del Core Data codice di impostazione da qualche parte nella vostra applicazione e avete bisogno di sbarazzarsi di tutto questo. Regno viene configurato automaticamente non appena si accede a un oggetto ambito per la prima volta. Si può scegliere dove si desidera memorizzare il file di dati Reame, e sarà ancora essere facoltativa in fase di esecuzione. La migrazione del modello file. È possibile convertire facilmente sottoclassi oggetto gestito a Realm. Realm gestisce le parole chiave di proprietà internamente (non dovete specificarli), il che rende l'intestazione della classe aspetto più minimale. Inoltre, è possibile rimuovere tutti NSNumber cruft perché Realm supporta semplici dati numerici (NSInteger e CGFloat). Ci sono anche limitazioni al Regno. A differenza di Core Data la cui oggetti hanno NSManagedObjectID per identificare gli oggetti in modo univoco, Regno lascia questo a voi come lo sviluppatore. In secondo luogo, la versione corrente di Realm sopraelevazione accordo con le proprietà degli oggetti con un valore pari a zero. Si tratta di un piccolo inconveniente, ma gli sviluppatori promettono che la prossima versione del Reame solito hanno questo problema. Migrazione operazioni di scrittura. Realms le operazioni di salvataggio sono un po 'diverso rispetto a Core Data e avete bisogno di prendere confidenza con questo. Una volta che gli oggetti Realm vengono aggiunti a un oggetto Reame, che smussano essere modificati. Questo garantisce la coerenza dei dati in diversi thread. Per essere in grado di modificare le proprietà, l'oggetto in cui questi sono stati salvati deve essere in una transazione di scrittura. Migrare le vostre domande a essere in grado di recuperare i dati in base alle esigenze. Per recuperare un file, in Core Data è necessario circa 10 righe di codice. Nel regno, si può fare la stessa cosa con una sola riga. Migrare i dati di produzione degli utenti per le applicazioni attive creati in Core Data, è possibile ri-collegare il quadro Core Data di nuovo in app, recuperare i dati degli utenti e passarlo a Realm. Una soluzione più semplice per i dati degli utenti sostituibili è quello di rimuovere tutti i Core Data salvare i file e ricominciare la prossima volta che l'applicazione è aperta. La chiave è quello di mantenere il processo di design semplice con le migliori tecniche e strumenti. Una volta che avete investito tempo per impostare il vostro e vero processo provato, non lasciare che l'attrazione di nuovi si prende fuori rotta. Possa il nuovo lavoro di essere una parte del vostro processo, e lasciare che il tempo di decidere ciò che non è degno. Sei un Developer Non perdere il mensile Couchbase Developer Community Newsletter, che copre le ultime notizie su NoSQL e molto altro ancora. Portato a voi in collaborazione con Couchbase. Piace questo articolo leggere di più da DZone

No comments:

Post a Comment