我目前正在为应用程序选择一个NOSQL数据库,该数据库将大量电子邮件存储到给定主题(=邮件列表).每个人都有大量的电子邮件.作为这个领域的业余爱好者,我不知道我是否应该选择基于Document的MongoDb或Graph oriented Neo4j.它更像是写一次,读多种类型.
Neo4j的事实:1.电子邮件基本上是一个图表.每封电子邮件都是一个节点,一个回复另一个(=边缘).2.图表可能非常深,一封电子邮件可以有很多响应.3.可能需要在图表中重新排序一些电子邮件(如果确实需要,则清理排序).
MongoDb的事实:1.有时用户可能想要搜索一些基于参数的查询.例如,来自用户X的所有电子邮件.2.电子邮件可能非常大.3.文件看起来要简单得多.
事实上,我不知道在哪里:有时搜索父母并检查,电子邮件从哪里复制文本(电子邮件回复的具体文本).
有人可以帮帮我吗?
编辑:无论如何,我也对其他nosql数据库开放.
我花了一些时间试图了解互斥锁是如何用多种语言实现的。有多个链接描述该主题(*),但如果我理解正确的话,所有硬件提供的都是一些原子操作,可能有助于区分现在应该轮流是谁。
在软件中,这总是用于忙等待(尝试 CAS 或测试并设置,如果不成功,则在 while 循环中等待),但是调度程序如何知道现在我应该从 CPU 中拿走进程/线程,因为它所做的一切是它在等待吗?操作系统是否提供一些支持,例如 Java 同步用于发出“我被阻止,请让其他线程运行”的信号?我认为是的,因为忙等待是使用 lock() 的替代方法;(所以它们不应该相同)
*来源:
我面临着使用可能是Array或单个对象的字段解析JSON的问题.如果酒店有多个房间,则返回典型的JsArray.但是,如果它只有一种类型的房间,它只返回一个单个对象.
我试图使用案例类解析这种情况,特别是List [Room]这种情况.但是,如果只返回一个单个对象,则会失败.有没有办法如何克服案例类?如果没有,这个问题的解决方案是什么?
非常感谢你.