An object database is a natural complement to object-oriented development.

Relational and NoSQL databases present a challenge to developers using object-oriented languages. Neither stores objects in the same way as the language.
 
This conundrum has given rise to two solutions: dumbing down the language to suit the database, or object-relational-mapping (ORM). Neither solution is optimal.
 
Lesarde Database stores objects as they are represented in the language, as objects.

Frog has database technology in its DNA.

If you were designing a language from scratch, wouldn't you want it to work well with databases? For that matter, wouldn't you want it to include features that exist in relational, NoSQL and object databases since the features are useful in general?
 
That's just what we did with Frog.
Collections
Collections are first-class types that hold items.
 
The collection construct is a type, just like the class construct. Anything that can be defined in a class may be defined in a collection.
Indexes
All collections may have one or more indexes to improve access times and to maintain collection-level constraints.
 
Indexes are a part of the collection definition.
Foreign Keys
Languages do a great job of constraining an object to a domain set via typing.
 
Like databases, Frog takes that a step further by allowing foreign keys to collections.
Schemas
Using collections, indexes and foreign keys, it is possible to define what databases refer to as a schema with in Frog.
 
All that's needed is a basic class.
Primitives
Databases are significantly more expressive than languages when it comes to defining primitive types.
 
Frog has first-class primitive types on par with enterprise-grade databases.
Relational Algebra
All the familar relational algebra constructs found in SQL have analogs in Frog.

Your SQL skills will transfer effortlessly.
Cursors
Due to the unique considerations of working with collections large and small, Frog supports cursors for iterating and updating collections.
Constraints
Frog has first-class support for type constraints.
 
It also has first-class support for collection constraints, a feature found only in robust databases.
Nullability
Both databases and languages have nullability but the semantics are different.
 
Frog takes the best of both by allowing nullable references as well as nullable values.

Access existing databases or create new object databases.

Databases are a vital component of most development projects.
 
Perhaps a device-level table is used to persist app data. Or a website may reach into a cloud relational database for analytics. Or a web service may preprocess NoSQL objects for an incoming request.
 
Regardless of the size, location or type of database one thing is certain: the data is going to be transformed. And that presents challenges.
 
For instance, the database may define a person's name as having a certain maximum size but languages don't have such a concept. Now the onus is on the developer to maintain integrity, which creates a dependency. A dependency is no big deal until you have ten or a thousand.
 
These dependencies tend to grow exponentially until the built-in gunk becomes a part of the project, itself.
 
With Lesarde Database, the gunk does not exist because the same type definitions used by the database are used by the application. And if you have existing databases, Frog's rich type system allows easy and speedy proxying from app to database, adding a level of type safety to the overall project.

© 2019 Lesarde Inc.