【问题标题】:MarkLogic / NoSQL / NewSQL & Web Application Frameworks - Architecture for new ApplicationMarkLogic / NoSQL / NewSQL 和 Web 应用程序框架 - 新应用程序的架构
【发布时间】:2015-04-27 03:02:58
【问题描述】:

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

我的问题:

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

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

一直在考虑使用亚马逊 AWS

我有常规关系 DB + Web 应用程序(SQL Server / MySQL / Oracle ASP.NET MVC 等)+ XML + C# 等方面的背景

  • 使用 Kendo UI 做了一些工作,但由于缺少文档以及一些错误导致我花费了太多时间,发现它有点令人厌烦。

【问题讨论】:

    标签: web-applications marklogic web-frameworks nosql


    【解决方案1】:

    披露:我在 MarkLogic 工作,担任开发者社区经理。

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

    对于您的第二个问题,对于需要扩展的具有 XML 和 JSON 数据的应用程序,MarkLogic 是否是一个不错的选择——是的。

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

    【讨论】:

    • @Martin 如果您想摆脱 MarkLogic 轮胎,值得注意的是,您可以作为开发人员免费下载和试用。由于您对 AWS 感兴趣,您可能有兴趣查看免费试用的促销活动:marklogic.com/faststart --disclosure,我是 MarkLogic 的工程师
    【解决方案2】:

    披露,我也为 MarkLogic(工程核心团队)工作。 除了 Daves cmets,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 有效时最终会使用 API 组合 更适合他们的用例和体验。在版本 8 中,所有 API 都可以在同一端口上同时访问,从相同或不同的客户端以不同的语言和线程进行访问。如果您的开发人员具有不同的技能水平和语言熟悉度,您可能会发现这很有用,可以集成到现有的应用程序中而不必离开该语言或在您发现它有用时在服务器端代码中编写应用程序的一部分。由于服务器本身完全不知道所使用的 API 和语言,您可以保持相同的数据模型和文档,并随着时间的推移发展您的应用程序,而无需更改数据本身。

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

    【讨论】:

      猜你喜欢
      • 2011-04-08
      • 2021-06-02
      • 2010-12-23
      • 2011-12-03
      • 2011-03-24
      • 2014-10-26
      • 2010-09-14
      • 1970-01-01
      • 2015-01-27
      相关资源
      最近更新 更多