问题标签 [saas]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
10 回答
20126 浏览

database-design - SaaS 数据库设计 - 多个数据库?分裂?

我见过以许多不同方式托管的 SaaS 应用程序。跨多个数据库拆分功能和模块是个好主意吗?例如,将 User 表放在一个 DB 上,将功能/应用特定表放在另一个 DB 上,或者将其他常用共享表放在另一个 DB 上?

0 投票
6 回答
5927 浏览

.net - 多租户架构和 NHibernate

谁能最终解释一下在 NHibernate 支持的域模型中实现对多租户功能的透明和流畅支持的最佳策略是什么?

我正在寻找方法,如何使域逻辑尽可能地与多租户的东西隔离,比如通过 TenantID 过滤等

0 投票
5 回答
1209 浏览

database-design - 管理配置数据的最佳方式

我正在开发一个 SaaS 应用程序,其中每个客户将根据他们购买的版本、他们购买的附加功能等具有不同的配置。例如,客户可能有 3 个自定义报告的限制。

显然我想将此配置存储在数据库中,但我不确定最好的方法。我们希望将来能够在不需要更改数据库架构的情况下添加其他功能,因此每个配置选项具有一列的单个表是不明智的。

可能的选项是一个表,每个客户一个条目,一个 XML 字段包含该客户的整个配置,但是当 XML 模式更改以添加其他功能时,这会增加复杂性。

我们可以使用带有键值对的表,并将所有配置设置存储为字符串,然后解析为正确的数据类型,但这似乎有点混乱,就像为字符串配置选项、整数配置选项提供单独的表一样,等等

人们正在使用的这种场景是否有一个好的模式?

0 投票
10 回答
4511 浏览

visual-studio - “云端”的版本控制

我是一名使用 Microsoft Visual Studio 处理个人和团体项目的开发人员。我可以在自己的服务器上设置几个不同的源代码控制包之一,例如 VSS、SourceGear Vault 或 SVN,并远程访问它们;但是,我不想处理设置、配置等的麻烦。

有人提供托管源代码控制服务吗?

0 投票
2 回答
830 浏览

.net - 在 .NET 中,您将如何处理允许多租户 SaaS 应用程序的租户任意向模型实体添加属性?

因此,我们正在构建一个多租户系统以作为服务运行。我们从头开始。我们正在关注 DDD;该域(目前)有大约 20 个实体,以后还会有更多。它由我们托管,地理上冗余(除了 SQL 查询之外的所有内容都有 n+1 ;-) ),并且设计灵活(嗯,最后是我们自己的要求,而不是业务',尽管他们希望我们能够当然可以根据需要轻松更改它)。我们基于 .NET,并将使用关系数据库作为我们的后备存储。我们并不反对(完全)使用开源工具和库。

业务的必备功能之一是系统的租户可以扩展某些实体。例如,客户端 A 可能希望实体 Foo 具有 Title 和 Abstract 属性,而客户端 B 可能希望实体 Foo 具有 Publish Date 和 Directed-By 属性——而不是 Title Abstract。

也可能是它应该为需要的租户支持多种语言的数据 - 例如,一个租户可能有兴趣将其整个帐户翻译成两种(或更多)语言;“静态”字符串和作为数据附加到实体的字符串。

所以。任意数量的字段(在一些通用基线之上;所有租户都将获得关于这些实体的某些内容),可由客户端定义(他们也可以在其中定义数据类型)。数据翻译的可能性(不复制实体 - 例如,没有用英语设置一组,然后用法语设置相同的一组)。强类型、可搜索、可查询的后备存储也是如此(因此,XML 字段中没有额外的东西,除非有办法让它成为强类型和可搜索的)。高性能(但作为次要要求;该功能非常重要,可以在必要时购买硬件)。

数据量?在我们当前的系统中,一个“普通”客户端有数百个实体,一个“大”客户端有数千个实体。请求通常会过滤这些列表以显示在 10-200 之间,最常见的事情可能涉及六个实体(在新系统中应该是可扩展的)。

其他点?每个实体都有指向拥有它的租户的直接链接。

在 .NET 领域如何处理这个问题?有人建议我们将实体放入一个 IoC 容器中,并在运行时动态地将它们 glob 在一起——但是如何将其映射到关系数据库呢?

我还记得很久以前读过Ayende关于 Lucene.NET 的帖子,这听起来不错,但目前我们还没有任何使用 Lucene.NET 或 nHibernate 的经验。(我们目前将 Linq2Sql 用于我们的 ORM,但如果我们需要更改它以支持这一点,坦率地说,我个人会很高兴)。

我读了这个从 Ayende 链接的 Castle dev list thread,看起来 nHibernate 有一个叫做 IUserType 的东西可能会有所帮助——我想知道我们是否可以应用它,为每个租户拉出适当的 IoC?因此,每个可扩展实体的每个租户都有一个 IUserType,并将数据本身存储在 SQL Server(我们最可能的 RDBMS)内部的 XML 列中。

最后,我刚刚阅读了一个关于动态更改每个租户每个实体的 DB 表的建议 - 但这听起来很不错......老实说,令人担忧!我的意思是,它可以工作,但将这种能力授予租户(他们可能不太懂技术)听起来并不是一个好主意。我想它可能仅限于管理员员工......

0 投票
5 回答
519 浏览

javascript - SAAS 席位认证

我们公司制作基于网络的应用程序,按工作站定价。

这意味着用户/通行证只能在一台特定的机器上使用。

目前正在发生的情况是多个用户正在共享凭据,如果他们不同时执行此操作,我们没有任何方法可以防止这种情况发生。

该应用程序的性质是用户需要偶尔使用它,因此无法同时工作不会对用户造成太大影响,并且公司会失去可能的收入。

该应用程序目前是纯粹的 AJAX,没有 flash/activeX/Java 小程序。

理想的解决方案是使用“Shell.Network”脚本接口通过 javascript 读取客户端的计算机名称或 IP 地址。

但由于 Internet Explorer 中严格的安全设置,这是不可能的。我不得不提一下,跨浏览器功能并不重要,唯一支持的浏览器是 IE。

搜索谷歌我在这里遇到了这个解决方案http://www.reglos.de/myaddress/MyAddress.html但它需要 JAVA 小程序所以不会很方便。

有没有其他解决方案?

0 投票
2 回答
458 浏览

lamp - 在 LAMP SaaS Web 应用程序中测量和限制带宽使用的最佳方法是什么?

我工作的公司正在考虑开发一个基于计划的 LAMP SaaS Web 应用程序。我们希望监控使用情况,因为它涉及外部引用,并且会通过在第三方网站上放置 iframe 或 JavaScript 片段来吸引带宽。我的第一个想法是仅依靠页面印象算法,但由于这确实是一个带宽问题,我想知道监控是否是一种更好的方法。以允许我向第三方网站发送已超过上限的消息的方式进行此监控的最佳方式是什么?

0 投票
7 回答
2347 浏览

svn - 托管颠覆建议或建议

我正在研究将托管颠覆用于工作中的新项目,并且想知道是否有人有任何经验可以分享。

我个人在家里将Beanstalk用于小型项目,但没有用于多个用户或大型存储库。

你用过什么/谁?

适用于什么规模/类型的项目?

你的经历是什么?(正常运行时间、性能、客户服务等)

0 投票
3 回答
713 浏览

mysql - 高效过滤/搜索

我们有一个管理内容页面的托管应用程序。每个页面可以有许多自定义字段,以及一些标准字段(时间戳、用户名、用户电子邮件等)。

可能有数百个不同的站点使用该系统——处理过滤/搜索的有效方法是什么?想象一个您想要缩小范围的网格视图。您可以过滤特定字段(用户 ID、日期),也可以输入全文搜索。

例如,“所有由 userid 10 开始的页面”将是一个针对 MySQL 数据库的非常快速的查询。但是像“由用户 ID 为 10 且匹配 [某些搜索查询] 的用户启动的所有页面”之类的内容会影响数据库,因此它适用于 Lucene 等搜索引擎。

基本上我想知道其他大型网站是如何做这种事情的。他们是否 100% 使用搜索引擎进行所有类型的过滤?他们是否将数据库查询与搜索引擎混合在一起?

如果我们使用搜索引擎,那么新/更新对象出现在搜索索引中的延迟时间就会出现问题。也就是说,我读过立即更新索引并不聪明,而是分批进行。即使这意味着每 5 分钟一次,当用户查看一个简单的页面列表(例如“类别:5”的搜索查询)时,当他们最近添加的页面没有立即列出时,用户也会感到困惑。

我们正在使用 MySQL,并且一直在密切关注 Lucene 进行搜索。还有其他我不知道的技术吗?

我的想法是提供一个简单的过滤页面,它使用 MySQL 过滤基本字段。然后提供一个单独的全文搜索页面,该页面将显示类似于 Google 的结果。这是唯一的方法吗?

0 投票
4 回答
637 浏览

asp.net-mvc - ASP.NET 中基于帐户的查找

我正在考虑将 ASP.NET 用于新的 SaaS 服务,但出于对我的爱,我似乎无法弄清楚如何像大多数 SaaS 应用程序(例如 37Signals)那样基于子域进行帐户查找。

例如,如果我提供 yourname.mysite.com,那么我将如何使用 ASP.NET(特别是 MVC)来提取子域,以便我可以加载正确的模板(显示您公司的名称等)?可以通过常规路由完成吗?

这在 SaaS 中似乎很常见,因此在 ASP.NET 中必须有一种简单的方法来实现;我知道有一些插件可以用于其他框架,如 Ruby on Rails。