Wednesday 22 November 2017

Core data sqlite vs binära alternativ


Kan någon förklara för mig vad den grundläggande skillnaden är mellan Core Data tydligen, en datalagring och en databas som SQLite eller MySQL. Jag jobbar med att skriva en iPhone app och behövde en tabell med statiska data att visa jag trodde att kärndata skulle vara Ett bra val för detta, så jag fick allt satt upp och fungerade så långt som databasen im ledsen - data STORE gick och gick sedan för att försöka importera mina data den var i en excel-fil som jag exporterade till CSV Jag tänkte det Bör vara en rakt framåtprocess som jag har gjort i SQLite och andra databaser många gånger, men som det visade sig efter mycket forskning var det enda officiella sättet att göra detta att skriva en parser specifikt för mina data. När jag frågade om detta på Apple Developer Forum, svaret jag fick var i grunden Vilken typ av idiot är du att tro att du eventuellt kan importera data direkt utan att behöva skriva kod för att göra det? Kärndata är databasen - det är data BUTIKA För livet av mig, Men jag kan inte se det distinkta Jon På alla sätt har jag tittat på det, kärndata beter sig precis som en databas med ett fint sätt att komma åt det och tillräckligt med abstraktion att det kan använda en mängd olika filformat för att lagra data faktiskt. Faktum är att jag så småningom kunde Importera mina data med ett enkelt SQLite-kommando, så jag förstår verkligen inte varför konceptet var så främmande för respondenterna till min ursprungliga fråga. Så vad jag saknar här Vad är så fundamentellt annorlunda om en datalagring från en databas som gör Konceptet med enkel dataimport är helt utomjordisk för dem som känner till teknologin. asked 10 september 11 på 17 14.Core Data är inte bara ett sätt att fortsätta lagra data till och från disken, vilket är SQL Core Data s sanna funktion är att tillhandahålla den fullständiga Modelllagret för App-API-modellen som Apple API använder Som sådan Core Data är i första hand en objektgrafikchef med persistensalternativ tack till sidan. En objektdiagram är en samling live-objekt i minnet I Core Data , Den Se är de hanterade objekten De kallas hanterade objekt eftersom kontexten för hanterade objekt observerar objekten och ständigt ser till att de befinner sig i de stater och relationer som datamodellen säger att de borde vara in. Core Data ger uthållighet alternativ men exakt vad det här alternativet är För ett visst genomförande är i stort sett gömt Du kan även använda samma datamodell och hanterade objekt med olika persistensmetoder, en gång i samma app. Nyckelförskjutningen med SQL är att SQL skriver den faktiska data till disken medan Core Data serialiserar levande objekt när Du tittar på en sqlite butik i Core Data du tittar på föremål som har tagits ifrån varandra och frystorkat. Det är klart att frystorkningsobjekt kräver ett ganska specifikt dataformat i sqlite-butiken så att Core Data-butiken använder sitt eget anpassade schema som till stor del är Samma oavsett detalj i butiken. Det är därför du inte kan byta i någon gammal SQL-fil och förvänta dig att Core Data importerar den. SQL-filen är r Ows, tabeller och kolumner av data och inte specialiserade tabeller, kolumner och rader används för att rekonstruera frystorkade objekt. Eftersom Core Data först och främst är en objekthanterare är det enda stödda och pålitliga sättet att importera data att skapa objektet - graph När det gäller en SQL-fil betyder det att man läser SQL-data med SQL-api och sedan genererar hanterade objekt från den data och sedan sparar dem till en beständig butik. Den här delen är mer arbete men du sparar tid att integrera data i Resten av appen, uppgradering av data och vinster i tillförlitlighet och underhåll. De borde just pekat på Wikipedia-artikeln om Core Data. Enligt den artikeln tillåter det att data som organiseras av den relativa entitetsattributsmodellen serialiseras i XML, binära eller SQLite-butiker Data kan manipuleras med hjälp av högre nivåobjekt som representerar enheter och deras relationer Core Data hanterar den serialiserade versionen, tillhandahåller objektets livscykel och objektgrafeman Hantering, inklusive persistens Core Data-gränssnitt direkt med SQLite, isolering av utvecklaren från den underliggande SQL. Jag antar att det är faktumet att Core Data hanterar serialiserad version, vilket innebär att du inte kan importera data direkt Det är du kan förmodligen inte importera data direkt In i SQLite på ett sådant sätt att Core Data kan hantera det, även om du förmodligen kan importera data direkt till SQLite på något sätt. Ansökat 10 september 11 på 17 32. Key Data är inte en datalagring, en datalagring är en del av Core Data Core Data är närmare relaterad till ett objektrelationellt kartläggning ORM-verktyg Core Data har faktiskt möjlighet att använda SQLite för det s datastore, men du kan också välja XML-filer, proprietärt format eller skriva din egen datastore. Inte säker på hur du kunde Att importera dina data med en SQL-import borde det inte vara kompatibelt med Core Data eftersom Core Data skapar ett proprietärt SQL-databasschema som innehåller ett ton metadata. answered 10 september 11 på 17 30.Simple medan schemat är proprietärt, där sn Othing fruktansvärt ovanligt om det När du har låt Core Data-stacken skapa databasen är det uppenbart vilken tabell och kolumner som innehåller de faktiska dataen och helt enkelt att göra en FILTABELL Du behöver bara massera dina data en liten bit för att matcha Schema kolumn order och liknande De andra uppgifterna spelar ingen roll vid import av ibrewster 10 september 11 på 17 41. Det är bättre att tänka på Core Data som en objektbutik och en databas som datalager. Core Data är bra när du har en Olika typer av objekt, med relationer till varandra Det välkända exemplet är ett företag med anställda, som har chefer och rapporter, tillhör avdelningar, tilldelas kunder, projekt, mm har scheman, går till möten. Medarbetare kan omplacera osv. Även de typer av relationer som definieras varierar från tid till annan. Det är en mer tungviktig process även med Core Data, men Core Data gör det enklare än med en rå databas. Om du bara har data, och inte objekt, är det lättare att använda enDatabas Till exempel om du bara har en tabell med elementen med atomvikt etc kan du bara använda en databas. För din ansökan låter det som om du bara har ett bord. Det är lätt att bara använda SQLite, vilket är tillgängligt, Använd det om det är mer bekvämt. Å andra sidan har iOS SDK några förkonstruerade funktioner som interagerar med Core Data Om du använder SQLite får du inte dem Så du kanske undviker anpassad kod för att importera dina data men måste skriva Anpassad kod för att visa dina data Tuff tur När du skapar programvara måste du ibland skriva kod. Kusligt, jag vet. Jag är redan ganska bekant med relationsdatabaser och har använt SQLite och andra databaser tidigare. Core Data har viss viss allure, så Jag funderar på att spendera lite tid att lära mig det för att användas i min nästa applikation. Det finns mycket nytta för att använda Core Data över SQLite eller vice versa. Vilka är fördelarna med de enskilda. Jag tycker det är svårt att rättfärdiga kostnaden för att lära sig Core Data När Apple inte använder det för många Av dess flaggskeppsapplikationer som eller - istället väljer du SQLite-databaser används SQLite också i stor utsträckning på iPhone. Kan de som är bekanta med att använda båda kommentarerna till deras erfarenhet. Kanske är det som för de flesta saker djupare än att bara använda varandra över varandra. Frågade 7 feb 09 klockan 9 05.förklarad som inte konstruktiv av casperOne 23 feb 12 klockan 23. 25. Eftersom det för närvarande står, är denna fråga inte lämplig för vårt QA-format Vi förväntar oss att svaren stöds av fakta, referenser eller expertis , Men den här frågan kommer sannolikt att kräva debatt, argument, omröstning eller utökad diskussion Om du tycker att denna fråga kan förbättras och eventuellt öppnas igen, besök hjälpcentret för vägledning. Om denna fråga kan omformuleras för att passa reglerna i hjälpcentret snälla Redigera frågan. Kan du snälla lägga till en länk till för alla som inte vet vad det är RSabet Feb 7 09 på 9 26. Notera att Core Data inte är och borde inte användas som databas user142019 6 aug 11 kl 12 10. Även om Core Data är annons Hängande av Apples Enterprise Object Framework en objekt-relationell mapper ORM som var tätt bunden till en relationell backend, Core Data är inte en ORM Det är i själva verket ett objekt graf management framework Det hanterar ett potentiellt mycket stort diagram över objekt instanser , Vilket gör det möjligt för en app att arbeta med ett diagram som inte helt passar in i minnet genom att förolämpa objekt i och ut ur minnet efter behov. Core Data hanterar också begränsningar på egenskaper och relationer och maintins referensintegritet, t. ex. att hålla framåt och bakåtlänkar konsekventa när objekt läggs till Avlägsnas från ett förhållande Core Data är sålunda en idealisk ram för att bygga modellkomponenten i en MVC-arkitektur. För att implementera sin grafhantering händer Core Data att använda sqlite som en diskbutik. Det kunde ha implementerats med en annan relationsdatabas eller till och med En icke-relationell databas som CouchDB Som andra har påpekat kan Core Data också använda XML eller ett binärt format eller en användarskriven atom Format som en backend men dessa alternativ kräver att hela objektgrafen passar in i minnet Om du är intresserad av hur Core Data implementeras på en sqlite-backend, kanske du vill kolla in OmniGroups OmniDataObjects-ram, en öppen källkodsimplementering av en delmängd av Core Data API BaseTen Framework är också en implementering av Core Data API med PostgreSQL som backend. Because Core Data inte är avsedd att vara en ORM för sqlite, kan den inte läsa godtycklig sqlite schema Omvänt bör du inte lita på att kunna Att läsa Core Data s sqlite datalager med andra sqlite verktyg schemat är en implementeringsdetalj som kan förändras. Därför finns det inte någon konflikt mellan att använda Core Data eller sqlite direkt Om du vill ha en relationsdatabas använder du sqlite direkt eller via en Av objektiv-C-wrappers som FMDB eller en relationsdatabasservern Du kan dock fortfarande vilja lära dig kärndata för användning som en objektgrafikhanteringsram i kombination med A Pple s controller klasser och viktiga bindande kompatibla visa widgets, kan du implementera en komplett MVC arkitektur med mycket lite code. answered Feb 7 09 på 18 27.Note fmdb är inte en ORM, bara en objc wrapper runt sqlite3 C api robottobor Feb 7 09 på 20 57. Tack för fångsten Jag uppdaterar posten Barry Wark 7 februari 09 på 21 27. Med iOS 5 0 får du den extra fördelen att du kan använda iCloud-filsynkronisering gratis om du använder Core Data Om du använder SQLite direkt måste det vara mycket manuellt tinkering och implementering för att få det att synkronisera över iCloud märkligt aug 21 11 på 10 26.Try It s ett Xcode-projekt som använder SQLite Pat 22 maj 14 på 21 28. Och med iOS 5 0 får du den extra fördelen att du kan använda iCloud-filsynkronisering gratis om du använder Core Data Om du använder SQLite direkt måste det vara mycket manuellt tinkering och implementering för att få det att synkronisera Över iCloud. For de senaste nyheterna och utvecklingen, se nyheter sidan. Är en leverantör för SQLite. Startades av Robert Simpson Robert har fortfarande begått privilegier på det här förvaret, men är inte längre en aktiv bidragsgivare. Utvecklings - och underhållsarbete utförs numera oftast av SQLite-utvecklingsteamet. SQLite-teamet har för avsikt att stödja långsiktigt. Legacyversioner kan fortfarande hittas På SourceForge men det finns inga uppdateringar där sedan april 2010. Det finns inget forum på den här webbplatsen, men supportsidan har en uppdaterad lista över supportalternativ. Vänligen se nedladdningssidan för en komplett lista över nedladdningsbara paket och information På deras användning. Dokumentation för. Dokumentationen som motsvarar den senaste versionen som innehåller detaljerad information för alla offentliga typer, metoder, egenskaper och händelser kontrolleras i förvaret i Microsoft Compiled HTML Help CHM-format Det kan också hämtas direkt Via webgränssnittet till förvaret. För de senaste nyheterna och utvecklingen, se nyheter sidan. Är en leverantör för SQLite. Startades av Robert Simpson Robert har fortfarande begått privilegier på det här förvaret, men är inte längre en aktiv bidragsgivare. Utvecklings - och underhållsarbete utförs numera oftast av SQLite-utvecklingsteamet. SQLite-teamet har för avsikt att stödja långsiktigt. Legacyversioner kan fortfarande hittas På SourceForge men det finns inga uppdateringar där sedan april 2010. Det finns inget forum på den här webbplatsen, men supportsidan har en uppdaterad lista över supportalternativ. Vänligen se nedladdningssidan för en komplett lista över nedladdningsbara paket och information På deras användning. Dokumentation för. Dokumentationen som motsvarar den senaste versionen som innehåller detaljerad information för alla offentliga typer, metoder, egenskaper och händelser kontrolleras i förvaret i Microsoft Compiled HTML Help CHM-format Det kan också hämtas direkt Via webbgränssnittet till förvaret. Före release av OS 3 0 på iPhone var SQLite valet för databasimplement Ntation på iPhone Eftersom tillägg av kärndata till iPhone SDK, använder SQLite med låga nivå C-funktionssamtal inte längre det enda alternativet, och nu är en fråga som ofta är frågad om vilken som ska användas. Först låt oss ta en titt på Använder SQLite directly. Relational Database System Potential för överplattformskompatibilitet Många tidiga iPhone databas exempel har skrivits med SQLite Objective-C wrappers som FMDB är ganska lätta att använda. Nu på Core Data. Can lagra data i sin egen binära eller SQLite Lagringsformat Kan serialisera objekt Mycket högre nivå än att använda SQLite direkt Inte en RDBMS du kan faktiskt bara lagra saker direkt. Nu är den verkliga frågan enklare att använda. Det beror verkligen på vad du gör. I en app skapade jag nyligen Allt jag behövde var att läsa små mängder data i följd från en SQLite-databas, eftersom det här är en så enkel uppgift, använde jag helt enkelt FMDB tillsammans med iPhone SQLite. Om jag behövde göra någonting med data utanför det, läste Core Da Ta kan göra allt detta mycket lättare, och jag rekommenderar att du använder det. Konklusion Core Data gör bara så många saker så mycket enklare att jag rekommenderar att du använder det om du inte redan har befintlig kod eller bara gör den mest grundläggande databasanvändningen.

No comments:

Post a Comment