问题标签 [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 投票
4 回答
3237 浏览

database-design - 大型 Web 应用程序的数据库架构

许多 SaaS Web 应用程序服务都有基于公司的概念。因此,每家使用该服务的公司都有自己的一组用户、文件和其他数据。Web 应用程序通常如何在数据库端处理这个问题?他们是否为每个公司创建了一个新数据库(包含与该公司相关的数据表)?或者他们是否有某种 company_id 关系来从单个数据库中选择相关数据?

0 投票
4 回答
7946 浏览

database-design - 数据库设计 - 多个查找/枚举表或一个大表?

我有许多表对它们的大部分列值使用查找/枚举引用。例如:
人员表 - PersonID | 比赛代码 | 头发颜色代码 | 发型代码 | TeethConditionCode
位置表 - LocationID | 尺码 | 外观颜色代码 | ConditionCode
诸如 Race、Size、Color、Condition 等之类的东西只是对代码查找表的外键引用。此代码表还有其他字段,但对我的问题并不重要。该数据库用于 SaaS 应用程序,这意味着每个客户都可以拥有自己的颜色、种族、条件等列表。有些代码是静态的,客户无法更改。

是有 1 个代码表还是 2 种代码表更好(DynamicCodeTable 用于客户定义的代码表,StaticCodeTable 用于更改的代码表)还是我应该为每种代码类型(RaceCodeTable、HairColorTable、Condition 等)都有一个表?

我最担心的是所有的sql连接。我正在使用的 Person 表有 20 多个这样的代码属性。加入 20 个不同的表 VS 加入同一个表 20 次时,性能是否存在差异?拥有多个表意味着每个表会更小,并且查找“应该”花费更少的时间。但是拥有一张桌子也可能很快。有什么建议么?

0 投票
2 回答
1350 浏览

seam - 在 Seam 中使用单实例多租户 Web 应用程序的经验?

在单实例多租户设置中使用 Seam 有什么经验吗?Seam 适合这种设置吗?你是怎么意识到的?所涉及的费用是多少?

我们的情况:Seam 2.1 SaaS web 应用程序(POJO,没有 EJB)。可用的开发预算迫使我们采用简单的每个租户一个实例的设计。该应用程序尚未投入生产,但已接近完成。

我希望我们的客户可能会重新考虑单实例多租户设置,如果它降低了预计的托管成本。

0 投票
3 回答
2959 浏览

versioning - 在构建托管/SAAS 应用程序时,如果允许客户自定义,您如何管理多个版本?

假设您正在构建一个计算器应用程序。您将允许客户使用自己的徽标和 CSS 样式表自定义此计算器。客户将他们的域指向您托管的计算器,该应用程序将为每个客户提供正确的主题。例如:

  • www.AcmeCalculator.com将提供带有 Acme 标志的计算器,以及他们创造的平淡的企业风格。
  • www.HellzCalc.com将为计算器提供一些地狱天使骑自行车的标志和他们创建的黑色、血红色主题。

你推出了 Calculator 1.0,每个人都编写了他们的样式来使用这个版本。

下个月你准备发布 Calculator 1.1,它添加了一个新特性,比如说“科学模式”,它需要你添加一些新的 UI——在这个例子中是 HTML——组件。这意味着如果你推出 1.1,你将打破你客户的一些风格。

我想出的最佳解决方案是让应用程序的多个版本保持运行。例如:

  • www.AcmeCalculator.com解析到您的应用服务器,该服务器检查 Acme 当前的版本,并转发到www.AcmeCalculator.com/1.0
  • www.HellzCalc.com解析到您的应用服务器,它注意到他们正在新的 1.1 版本上运行,因为他们进入了更新的 CSS 以在新版本上工作并单击“完成升级”按钮或其他任何东西,所以他们得到重定向到“ www.HellzCalc.com/1.1

该系统的一个问题是,您将不可避免地遇到从不投资升级的懒惰客户。您将同时运行 200 个版本,试图修复每个版本中的错误,基本上会发疯。

一种解决方案是使用您每月托管费用的一部分来雇用“UI 迁移团队”,该团队将是一组设计师,他们唯一的工作就是不断让客户排队运行最旧的版本并调整他们的 CSS 并验证他们在最新版本上运行。这将允许您同时仅支持 X 个版本,其中 X 是您在 UI 迁移团队中投入多少资金的函数,添加资源以加快或减慢它们。

同样的想法也适用于数据库更改:Calculator 1.0 和 1.1 在数据库 1.0 上运行,但 Calculator 1.2 在数据库 1.1 上运行,等等。您可以添加带有版本名称的模式,并使用类似的“数据迁移团队”来移动数据架构 1.0 到架构 1.1,最终在没有(应用)客户端时删除架构 1.0。

我敢肯定这种类型的问题以前出现过,我想看看其他人是如何解决的。也许甚至有一个“最佳实践”。

0 投票
1 回答
88 浏览

deployment - 从托管 (saas) 迁移到单独部署时要考虑的事项

我工作的公司销售托管(即软件即服务)软件系统。我们现在被问到是否可以为潜在客户提供软件的本地安装,这与人们转向托管模型的其他地方似乎正在发生的事情相反。问题是我们在提供这个时应该考虑什么以及可能的问题在哪里,我们已经在办公室进行了一些讨论,但我认为我应该把它发布给更广泛的社区。我们的应用程序需要安装 sql server、一些其他依赖项(即 tomcat)并安装一些 Windows 服务。我想我们的系统需要专用的(可能是虚拟的)机器。

0 投票
4 回答
3482 浏览

java - 如何给 saas 软件提供 cname 前向支持

我有一个网络应用程序,用户可以在其中创建他们的帐户并使用该服务。现在,我想给他们一个自定义域设施,一旦他设置了自定义域,app.customer1web.com 使用用户 ID customer1 指向 myservice.com,因为世界看起来我的服务正在他的机器上运行。博客、wp.com、tumblr 等许多服务都提供了此功能。

我怎么做?我正在使用 java 编写我的网络应用程序。请求进来时如何将域名映射到用户ID?

0 投票
1 回答
4968 浏览

zend-framework - 如何创建 SaaS 应用程序?

我不知道还能怎么说,所以我只是解释一下我的理想场景,希望你能向我解释如何实现它......

我正在使用 Zend 框架创建一个应用程序,该应用程序将由 DreamHost 托管。该应用程序将托管在其自己的域中(即 example-app.com)。基本上,用户应该能够注册,获得他们自己的域 sampleuser.example-app.com 或 example-app.com/sampleuser 指向的,看起来像他们自己的应用程序实例,这实际上是一个单一的实例根据 url 提供不同的内容。

最终,我希望我的用户能够创建他们自己的指向 sampleuser.example-app.com 的域(如 foobar.com),这样 foobar.com 的访问者就不会注意到该站点确实在提供服务来自 example-app.com。

我不知道如何做大部分的事情。这个过程是如何工作的?我是否需要用 Apache 做一些时髦的事情,或者这可以用第三方主机来完成,比如 DreamHost?

更新:感谢您的建议!我决定硬着头皮升级我的托管计划以利用通配符子域。它比我预期的便宜!我还发现了具有自己 API 的域经销商程序,例如 opensrs.com。我认为使用这些 API 之一将解决我的域注册问题。

0 投票
2 回答
352 浏览

saas - 托管软件合同

我终于为我的托管软件找到了一个客户——这是我第一次销售软件。我希望双方签署一份合同,详细说明预期正常运行时间、付款时间表等,这样没有人会觉得他们被骗了,但我不是律师,现在真的买不起。有谁知道如何开始这个过程?

TIA。

0 投票
6 回答
5145 浏览

ruby-on-rails - 在多用户 saas 应用程序中生成序列号

人们如何在典型的 saas 应用程序中为特定用户生成 auto_incrementing 整数?

例如,特定用户的所有发票的发票编号应该是 auto_incrementing 并且从 1 开始。在这种情况下不能使用 rails id 字段,因为它在所有用户之间共享。

在我的脑海中,我可以计算用户拥有的所有发票,然后加 1,但有人知道更好的解决方案吗?

0 投票
1 回答
186 浏览

php - 设置多个mysql数据库

我有一个 Mysql/PHP 应用程序。我想把它卖 SAS。我正在考虑一家拥有多个可用数据库的托管公司。如果他们登录,我想要一个页面,然后我将他们带到他们的数据库。我将拥有许多具有相同结构的数据库。我需要一种将它们切换到该文件夹​​的方法(我可能会为它们修改一些代码,例如 css)并操作它们的数据库。我可以使用主表进行登录,但如何连接到他们的数据库?我担心安全问题。示例:假设我有 3 个客户。ABC 我在 apache 服务器上设置了 3 个文件夹,在那里复制代码,设置唯一的数据库名称,如 new_db_a、new_db_b、new_db_c。现在,如果我在登录时在内存变量中执行此操作,它将把他带到他的位置。他可以看到网址,并且可以轻松替换另一个字母并运行另一个公司数据库。

我愿意使用 Perl、PHP 或其他任何东西来做这件事。最好的方法是什么?