我正在考虑使用AMQP(使用qpid)来实现Python和Java服务的混合.基本的文本消息传递看起来很简单,但是,正如我调查过的所有其他消息传递技术一样,它似乎停止了.除了构建即时消息传递应用程序之外,我原本认为发送字符串并不是一件特别有用的事情,例如示例后演示了发送未格式化的文本.
我的直觉是使用XML(反)序列化或类似的东西(JSON,YAML,Protocol Buffers等),它们在两种语言中都有很好的库支持.这是最佳实践,如果是这样,人们会推荐哪种(反)序列化协议?或者我在某个地方错过了这一点,并且应该非常满意地发送一小段文本?
在数据库使用方面,过去十年是ORM的时代,数百人争相在普通的老式RMDBS中坚持我们的对象图.现在,我们似乎正在目睹面向文档的数据库时代的到来.这些 数据库针对无架构文档进行了高度优化,但对于它们并行扩展和查询群集的能力也非常具有吸引力.
面向文档的数据库与RDBMS相比还具有一些优势,可以在面向对象的设计中保持数据模型的持久性.由于表是无模式的,因此可以将属于不同类的对象并排存储在继承层次结构中.此外,随着域模型的更改,只要代码可以处理从旧版本的域类中获取对象,就可以避免在每次更改时都迁移整个数据库.
另一方面,面向文档的数据库的性能优势主要出现在存储更深层文档时.在面向对象的术语中,由其他类组成的类,例如,博客文章及其注释.在大多数这样的例子中,我可以提出,例如博客,读取访问的收益似乎被每次新评论时必须写整个博客文章"文档"的惩罚所抵消.添加.
在我看来,面向文档的数据库可以为面向对象的系统带来显着的好处,如果一个人非常小心地组织深度图中的对象,这些图是针对数据读写方式而优化的,但这意味着了解用例面前.在现实世界中,我们经常不知道,直到我们实际上有一个实时实现,我们可以分析.
那么关系型和面向文档的数据库是一个波动和环形交叉口的情况吗?我对人们的意见和建议感兴趣,特别是如果有人在面向文档的数据库上构建了任何重要的应用程序.