We’re doing a webinar on MongoDB on Oct 30, 2009 noon EST. It’ll be an overview of MongoDB & will also have Ian White from Business Insider talking about how they are using MongoDB in production:
Details & register at: http://mongodb1.eventbrite.com/
(The webinar is FREE)
We’ve been speaking about MongoDB at physical events like conferences and meetups. But since there’s interest in MongoDB from many different geographical locations, we thought we’d also do a webinar. This will be an interactive live web event. Look forward to seeing you there!
If you have questions on the webinar or have ideas for other such webinars shoot us an email at firstname.lastname@example.org.
Databases Should be Dynamically Typed
Software developers often debate the pros and cons of static versus dynamic typing in programming languages. Yet what about databases? Of course, static typing is traditional for databases. In a relational database we usual declare our columns and the datatype of each column’s values. However, we now see in the nosql space what are known as “schemaless” databases. Technically these products are often have some schema: for example in MongoDB we define collections and indexes. However, we do not predefine the structure of objects within those collections – they may all be different, or all the same. The typing is dynamic. Dynamically typed databases are a good fit with dynamically typed programming languages. It certainly feels like it would be a win to have a dynamically typed db when using a dynamically typed programming language (Ruby, PHP, Python, Erlang, …) How suboptimal it would be to have all the flexibility of dynamic typing in our code, and then hit a “brick wall” when we go to persist the data and have to statically spec everything out! There is synergy to be had between the dynamically typed programming language and the dynamically typed database. Dynamically typed databases can be a good thing when using statically typed programming languages. The best thing about static typing with compilers is that errors are reported at compile/development time. This is a big win for statically typed languages such as Java and C++. However, even with a statically typed database, type matching errors storing data are only reported at runtime! (That is, our java compiler doesn’t check our MySQL schema.) Thus some of the power of static typing in programming is lost at the storage layer. We still retain some benefits: assurance of some consistency to the data stored. But any failure to honor such a contract is only reported at runtime. Thus, it is more than worth considering using a “schemaless” database with say, Java, and getting out of the business of writing data migration scripts with each release. (Yes, some of that work stays but we can eliminate the majority.) Relational databases could be dynamically typed. While existing RDBMSes are statically typed, this is not an inherent limitation of the relational model. One could imagine a relational database with tables where one can dynamically insert a row with an extra column value at any time, and where values of cells in the same column of a table may have different types.
Announcing the GA of the Atlas Device SDK for C++
MongoDB's Developer Data Platform was designed to offer unparalleled flexibility and scalability for developers. By streamlining the integration of complex data structures and real-time analytics, and accelerating the development and deployment of mission-critical applications, its adoption has added significant value to businesses across industries. Today we continue our mission to provide the best experience for developers and are excited to announce the general availability (GA) of the Atlas Device SDK for C++ . The updates in this release come after numerous iterations that were guided by feedback from our preview users and target performance and portability. The Atlas Device SDK for C++ enables developers to effortlessly store data on devices for offline access while seamlessly synchronizing data to and from the MongoDB Atlas cloud within their C++ applications. It serves as a user-friendly alternative to SQLite, offering simplicity due to its object-oriented database nature, removing the necessity for a separate mapping layer or ORM. Aligned with MongoDB's developer data platform mission of streamlining the development process - the C++ SDK incorporates networking retry logic and advanced conflict merging functionality, eliminating the traditional need for writing and maintaining extensive and complex synchronization code. Why choose the Atlas Device SDK for C++? The Atlas Device SDK for C++ is particularly well-suited for applications in embedded devices, IoT, and cross-platform scenarios. It serves as a comprehensive object-oriented persistence layer for edge, mobile, and embedded devices, offering built-in support for synchronization with the MongoDB Atlas as a cloud backend. In the evolving landscape of connected and smart devices, the demand for more data, including historical data for automated decision-making, highlights the importance of efficient persistence layers and real-time cloud-syncing technologies which are robust towards changing network connections and outages. The database included in the Atlas Device SDK for C++, comes with over a decade of history, and is a mature, feature-rich, and enterprise-ready technology, integrated into tens of thousands of applications on Google Play and the Apple App Store with billions of downloads. Its lightweight design is optimized for resource-constrained environments. It considers factors like compute, memory, bandwidth, and battery usage in its design. Embedding the SDK directly into application code eliminates the need for additional deployment tasks and simplifies the development process. The fully object-oriented nature of the SDK guides the data modeling, providing a straightforward and idiomatic approach. This stands in contrast to alternative technologies like SQLite database, which require an object-relational mapping library, adding complexity and making future development, maintenance, and debugging more challenging. Furthermore, the SDK’s underlying data store enables seamless integration with reactive UI layers across various environments. In the Atlas Device SDK for C++ we give examples of how to integrate with the Qt framework , but other UI layers can also be added. Improvements in the GA release The new API was developed based on performance measurements with a coordinated focus and effort to improve the read/write operations of the data layer. There has been great interest from major automotive and manufacturing OEMs and this feedback has been invaluable in guiding our final API. Some of the changes added to the Atlas Device SDK for C++ include: Aligning our APIs with other Atlas Device SDKs, e.g. improved control of the database state with monitoring and manual compaction HTTP tunneling Better control for the Atlas Device Sync sessions Windows support Compatibility with OpenWRT among other Linux distributions by supporting musl Android Automotive support with Blueprint/Soong build files What's next Looking ahead we are working towards geospatial support as well as the ability to build with a variety of package managers such as vcpkg and Conan. We welcome and value all feedback - if you have any comments or suggestions, please share them via our GitHub project . Ready to get started? Install the Atlas Device SDK for C++ — start your journey with our docs or jump right into example projects with source code . Then, register for Atlas to connect to Atlas Device Sync, a fully managed mobile backend as a service. Leverage out-of-the-box infrastructure, data synchronization capabilities, network handling, and much more to quickly launch enterprise-grade mobile apps. Finally, let us know what you think, and get involved in our forums . See you there!