nosql DBMS 的一大优点是它们可以更轻松地进行集群。据称,使用 NoSQL,您可以创建数百台廉价的机器来存储不同的数据并一次查询所有数据。
我的问题是,为什么关系型 DBMS 不能像 mysql 或 sql server 那样做?是因为供应商还没有想出一种技术方法来使用他们现有的产品来做到这一点,还是关系模型存在一些问题阻止了这种做法的可行性?NoSQL 存储和访问数据(键/值、文档等)的方式有什么好处,使聚类更容易(如果这是真的)?
当根据人口统计数据匹配患者时,是否有关于哪些字段应该匹配才能使患者成为“同一患者”的建议?
我知道算法对于不同的实现会有所不同,我只是很好奇是否有关于此过程的最佳实践或建议。
First Name
Last Name
Date of Birth
SSN
Address
City
State
Zip
Run Code Online (Sandbox Code Playgroud)
等等?
在公共服务器中为每个租户的应用程序实例使用单独的数据库处理数量适中的客户(租户)相对简单,并且通常是正确的方法。目前我正在研究一个应用程序的架构,其中每个租户都有自己的数据库实例。
但是,问题是该应用程序将拥有大量租户(5,000-10,000)和大量用户,单个租户可能有 2,000 个用户。我们需要支持每周由几个租户扩展系统。
此外,所有租户及其用户都将看到一个通用的登录过程(即每个租户不能拥有自己的 URL)。为此,我需要一个集中的登录过程和一种将数据库动态添加到系统并注册用户的方法。
如何稳健地自动化注册和数据库创建过程?
在系统上创建和注册租户数据库的过程是否可能导致性能或锁定问题。如果您认为这可能是一个问题,有人可以建议减轻它的方法吗?
如何以用户凭据与特定租户数据库相关联的方式管理中央身份验证,但用户可以通过公共页面登录(即全部通过相同的登录 URL,但他们的主应用程序将位于某些特定租户的数据库上) )。租户必须能够维护自己的登录名和权限,但中央登录系统必须了解这些。谁能建议一种方法来做到这一点?
如果我需要通过添加多个数据库服务器来“向外扩展”,谁能建议我在跨服务器管理用户身份(模拟等)时可能需要处理哪些问题以及缓解这些问题的某种方法?
我正在 SSAS 2012 SP1 CU4 中处理表格立方体。我有 3 个维度(申请、申请状态、日期)和 1 个事实(申请计数)。我的事实表是 requisitionKEY、RequisitionStatusKEY、SnapshotDateKey。
我已经计算了基本上获得给定期间的 lastnonempty 值(如半加法度量)的度量,无论是年、月还是日期:
Openings:=CALCULATE(Sum('Requisition Counts'[NumberOfOpeningsQT]),
Filter('Date','Date'[DateKey] = Max('Requisition Counts'[SnapshotDateKEY])))
Run Code Online (Sandbox Code Playgroud)
这很有效,直到您将 Requisition Status 放入混合中。我有 2013 年每一天的每个申请的行。对于其中一个申请,前 6 个月的申请状态为待处理,然后从 7 月 1 日至今的所有数据都更改为已批准。当我总结 7 月份月份级别的请购单的职位空缺数量时,用户会看到两行:7 月份最后一个待处理日的职位空缺总和,以及 7 月份最后一个填充日的职位空缺总和7 月获得批准。

尽管总数为 2 是正确的,但我需要更改此计算方式,以便仅获取所选日期期间(已批准)的最新申请状态,并为数据透视表中的待批准行显示 0 或空或空白。
申请状态表如下所示:

更新:这是我制作的 PowerPivot 模型的链接,其中包含一些清理过的数据以帮助回答这个问题。这应该更好地解释表模式。NumberOfOpeningsQT 字段基本上是他们为该工作拥有的空缺职位数量。有时是 1,有时是大于 1。它通常不会随着时间的推移而改变,但我想可能会。我试图让开口计算给我想要的答案。我在那里进行了一些其他计算,以便展示我尝试过的一些有希望但我无法开始工作的东西。
为这个晦涩的问题道歉,用一个具体的例子可能更有意义:
在我的应用程序中,我可能会创建一个包含一组项目的投资组合。但是,我也可以添加一个嵌套在投资组合(然后可能包含项目)中的“子投资组合”。目前,我通过以下方式绘制了我的架构:
+------------+ +-----------------------+ +------------+
| Portfolios | | Portfolio_project_map | | Projects |
+------------+ +-----------------------+ +------------+
| port_id | | parent_id | | proj_id |
+------------+ +-----------------------+ +------------+
| | | child_id | | |
+-----------------------+
| child_is_portfolio |
+-----------------------+
Run Code Online (Sandbox Code Playgroud)
这看起来非常难看。在关系数据库中建模这种关系的正确方法是什么?还是真的没有,这样的细节应该在业务逻辑中严格执行?它甚至有可能对指定的外键约束Portfolio_project_map,使得child_id引用要么port_id还是proj_id?
另外,这样的问题到底叫什么?我发现在几个地方引用了“一对一”,但我有一种不完全正确的感觉?
我们有以下昏暗和事实:
客户维度:SCD 类型 2,关于客户的信息,即首次购买日期、姓名、地址等 产品维度:SCD 类型 2,关于我们的产品
客户快照事实:有关客户产品销售事实的月度财务事实:客户销售额
并且会有更多涉及客户维度的事实。
我们有一个旧数据库,它正在收集有关客户的 100 个数据字段,并被要求对这些数据进行 DW。有 100 多个字段与客户相关,其中可能是指示客户是否有资格获得某物的标志。用户想要对我们的任何事实表进行的大多数查询可能包括这些指标的过滤和/或分组。
问题是我们是否应该向我们的 Customer Dim 添加 100 多个指标,如果不是,则应如何构建数据,以便将这些信息与我们的所有其他事实结合起来。
谢谢你的帮助。
几年过去了……但我遇到了一个问题集,它让我想起了模式设计模式,我正在努力回忆细节。
本质上,该模式由一个为所有插入、更新和删除提供服务的3 NF(或其他)数据库组成。在某些定期或事件驱动的基础上,它会将其全部(或部分)状态发布到另一个针对高性能只读访问进行了优化的数据库。本质上,发布通常针对完全不同或非规范化的模式。
问题是……这是众所周知的模式吗?如果是,它叫什么,除了相同状态的重复存储之外还有什么陷阱。
如果一个数据库中另一个数据库中的同义词引用该数据库中的对象,那么将备份恢复到该数据库是否会使同义词失效?
具体来说,想象一下这种情况:
是否应该期望此过程使 Synonym_Host 上的 dbo.foo 同义词无效?
我注意到,对于由我们的组织和我们的一些 ERA 软件提供商制作的 Crystal Reports,他们倾向于使用物理表作为他们报告的数据集,而不是使用视图或存储过程来收集数据。偶尔我看到报告使用存储过程,然后使用物理表而不是临时表来存储和操作数据集。在这些情况下,报告输出通常以类似rpt_ap_vendors或类似的表格形式存在,并且在不使用时可能没有数据,也可能没有数据。
这些总是按需生成报告的情况,因此这不是可以生成一次并多次提供报告的情况,并且没有多个报告/存储过程同时访问此数据。
像这样的报告使用物理表有什么理由?这样做是否有逻辑、技术或性能相关的原因?在生成报告时,我个人一直使用带有临时表或更好的派生表的视图和存储过程,以避免涉及清除/删除临时表的额外磁盘读取。
sql-server ×3
ssas ×2
clustering ×1
dax ×1
identity ×1
mysql ×1
nosql ×1
reporting ×1
restore ×1
scalability ×1
schema ×1
synonyms ×1
view ×1