Hysen Labs
Open-source project
yapstudios/YapDatabase avatar
yapstudios

YapDatabase

GitHub describes it as YapDB is a collection/key/value store with a plugin architecture. It's built atop sqlite, for Swift & objective-c developers.. The repository metadata lists Objective-C as its primary language. The metadata lists the NOASSERTION license. This article stays within the project description and details documented in the GitHub repository README.

3,331 stars368 forksObjective-CNOASSERTION
01
DEEP OPEN-SOURCE ANALYSIS

yapstudios/YapDatabase: README details

GitHub describes it as YapDB is a collection/key/value store with a plugin architecture. It's built atop sqlite, for Swift & objective-c developers.. The repository metadata lists Objective-C as its primary language. The metadata lists the NOASSERTION license. This article stays within the project description and details documented in the GitHub repository README.

02
DEEP OPEN-SOURCE ANALYSIS

Repository scope

GitHub describes it as YapDB is a collection/key/value store with a plugin architecture. It's built atop sqlite, for Swift & objective-c developers.. The repository metadata lists Objective-C as its primary language. The metadata lists the NOASSERTION license. The README describes the project this way: YapDatabase is a collection/key/value store and so much more . It's built atop sqlite, for Swift & Objective-C developers, targeting macOS, iOS, tvOS & watchOS.

03
DEEP OPEN-SOURCE ANALYSIS

Hello World:

The README section "Hello World:" states: Concurrency . You can read from the database while another thread is simultaneously making modifications to the database. So you never have to worry about blocking the main thread, and you can easily write to the database on a background thread. And, of course, you can read from the database on multiple threads simultaneously. Built-In Caching . A configurable object cache is built-in. Of course sqlite has caching too. But it's caching raw serialized bytes, and we're dealing with objects. So having a built-in cache means you can skip the deserialization process, and get your objects much faster. Metadata . Ever wanted to store extra data along with your object? Like maybe a timestamp of when it was downloaded. Or a fully separate but related object? You're in luck. Metadata support comes standard. Along with its own separate configurable cache too! Views . Need to filter, group & sort your data? No problem. YapDatabase comes with Views. And you don't even need to write esoteric SQL queries. Views work using closures, so you just provide a bit of native code. Plus they automatically update themselves, and they make animating tables super easy. Secondary Indexing . Speed up your queries by indexing important properties. And then use SQL style queries to quickly find your items. Full Text Search . Built atop sqlite's FTS module (contributed by google), you can add extremely speedy searching to your app with minimal effort. Relationships . You can setup relationships between objects and even configure cascading delete rules. Hooks . Perform custom app-specific logic when certain events take place, such as an object being modified or deleted. Sync . Support for syncing with Apple's CloudKit is available out of the box. There's even a fully functioning example project that demonstrates writing a syncing Todo app. Extensions . More than just a key/value store, YapDatabase comes with an extensions architecture built-in. You can even create your own extensions. Performance . Fetch thousands of objects on the main thread without dropping a frame.

04
DEEP OPEN-SOURCE ANALYSIS

Hello World:

The README section "Hello World:" states: See what the API looks like in "hello world" for YapDatabase Learn more by visiting the wiki

05
DEEP OPEN-SOURCE ANALYSIS

Editorial conclusion

The repository README is the source for this review. It does not replace a local installation or an independent test.

06
DEEP OPEN-SOURCE ANALYSIS

Official sources

07
Community notes

Community notes