MarkLogic / NoSQL / NewSQL& Web应用程序框架 - 新应用程序的体系结构

时间:2015-02-25 07:37:15

标签: web-applications marklogic web-frameworks nosql

我想从一开始就开发一个易于扩展的应用程序(最终为数百万用户),并且可以容纳标准表,每个用户的数据维度,但符合某些标准数据格式(如XSD)。我看过MarkLogic,它看起来非常快速和可扩展,并且支持我想要使用的XML类型数据(可能有一些JSON用于各个部分)。

我的问题:

1)什么是可以随之扩展的优秀Web应用程序框架。我倾向于ASP.NET MVC C#,但这是因为我熟悉它。我查看了Node.js,但似乎会出现一些扩展问题。

2)MarkLogic是一个不错的选择吗?我是NoSQL / NewSQL的新手,但我理解这些概念。那还有什么可以很好地扩展?

一直在考虑使用Amazon AWS

我有常规关系数据库+ Web应用程序(SQL Server / MySQL / Oracle ASP.NET MVC等)+ XML + C#等等的背景知识

  • 与Kendo UI做了一些相关但发现它有点令人厌烦,因为缺少文档和一些错误导致我花费太多时间。

2 个答案:

答案 0 :(得分:1)

披露:我为MarkLogic工作,担任开发者社区管理员。

关于第一个问题,MarkLogic为MarkLogic REST APIJavaNode.js提供了受支持的包装器。对于其他语言,您可以直接对REST API进行HTTP调用,也可以使用社区驱动的包装器之一作为起点(you mentioned .Net)。我还不足以让Node的专家谈论它的扩展能力,所以我将这部分留给其他人。 REST API的目的是提供简单的访问,无论您使用何种语言。

对于您的第二个问题,MarkLogic是一个很好的选择,需要扩展XML和JSON数据 - 是的。

  • MarkLogic通过many customers fielding large deployments扩展得非常好。无共享架构意味着您可以使用商用硬件扩展应用程序,而不是需要逐渐增加更昂贵的机器。 (见Scalability Considerations
  • MarkLogic支持ACID transactions,因此您的数据将是安全的。
  • MarkLogic支持use of schemas,但不需要MarkLogic Server on Amazon EC2 Guide
  • 您提到可能在AWS上部署。 MarkLogic在那里运行良好,使您能够通过添加和删除服务器来上下扩展应用程序。 MarkLogic将为您平衡可用服务器之间的数据。请参阅well documented
  • 我不熟悉Kendo UI,但我认为您会找到MarkLogic {{3}}。我们提供API文档,指南,教程和其他内容以支持开发人员。

答案 1 :(得分:1)

披露,我也为MarkLogic(工程核心团队)工作。 除了Daves评论之外,MarkLogic还支持Native .NET接口XCC https://docs.marklogic.com/guide/xcc 此API具有等效的Java和.NET实现。

然而,与Dave提到的API不同,XCC是基于REST的APIS的低级API,因此通常需要更多的MarkLogic编码和知识。 然而,它是本机.NET库,具有非常好的映射到C#和其他.NET数据类型。我将它与用C ++编写的软件与Ruby或Python进行比较。

其他替代方法是使用任何语言的任何HTTP库在HTTP级别进行编码,并且不需要任何marklogic特定的客户端库。 (.NET有相当不错的HTTP)。这种方法需要更多的工作和理解才能开始,因为您需要编写服务器端代码来实现大多数任务,但是使用版本8 MarkLogic支持XQuery和JavaScript作为HTTP连接的服务器端代码。

作为最低级别的API(HTTP),类似于其他软件堆栈, 有一个易于开发与更精确控制的权衡。 对于某些执行的应用程序,这可能是一个重要因素 直接在服务器上的自定义代码可以做低效率的事情 使用纯客户端代码非常困难。

许多人在学习什么工作时最终会使用API​​的组合 更好的用例和经验。在版本8 中,所有 API都可以在同一端口上同时访问,来自不同语言和线程的相同或不同客户端。如果开发人员具有不同的技能水平,语言熟悉度,可以在不必离开该语言的情况下集成到现有应用程序中,或者在您认为有用的服务器端代码中编写部分应用程序,那么您可能会觉得这很有用。由于服务器本身完全不知道使用什么API和语言,因此您可以保留相同的数据模型和文档,并随着时间的推移演变您的应用程序,而无需更改数据本身。

虽然所有这些选择看起来令人困惑,但它最终意味着您不必担心您的初始语言或API选择,或者未来的项目或开发人员是否会喜欢不同的东西。这可以让你继续实际编写你的应用程序。选择你喜欢的语言并编写一个快速的演示应用程序,看看你是否喜欢它,如果没有尝试另一种或混合&比赛。当您扩展到更大的容量时,您可能会发现服务器端语言对某些操作很有帮助而无需迁移整个应用程序 - 或者您可能将某些部分移动到浏览器或中间层,添加缓存层或扩展到其他群集,存储拓扑 - 所有独立的现有代码。