Одним из ключевых преимуществ хранилищ данных NoSQL, таких как MongoDB, является то, что они являются схематичными. С динамически типизированными языками это кажется естественным. Вы можете получить некоторые произвольные входы JSON, выполнить бизнес-логику в известных полях и сохранить все это, не указав сначала объект.
Что делать, если ваш выбор языка ограничен статическим типом, например Java? Как я мог достичь такого же уровня гибкости?
Типичный поток данных, например:
- Вход JSON
- Сериализация для Java-объекта для выполнения бизнес-логики
- Дезертициализация в BSON для сохранения в Mongo
где шаг сериализации к объекту необходим, поскольку вы хотите выполнять бизнес-логику с помощью POJO, а не строк JSON. Однако, прежде чем я смогу сериализовать ввод в объекты, я должен сначала определить его. Что делать, если вход содержит дополнительные поля undefined в объекте? Хотя они не могут использоваться в бизнес-логике, я все же могу захотеть их сохранить. У меня есть реализации, где поля undefined помещаются в карту, но я не уверен, что это лучший подход. Во-первых, поля undefined также могут быть сложными объектами.