小编cas*_*One的帖子

在备份大型 SQL Server 数据库时执行数据更新操作

我有一个大型(数千万条记录)数据库,我将在其上执行完整的数据库备份

但是,数据库足够大,事务可以在备份发生之前和期间启动,也可以在备份发生期间和之后提交。

例如:

T0 = Transaction A start
T1 = Full database backup start
T2 = Transaction B start (will not deadlock with A)
T3 = Transaction A commit/rollback (does not matter, does it?)
T4 = Full database backup end
T5 = Transaction B commit/rollback (again, does not matter, does it?)

T0          T1          T2          T3          T4          T6
||----------||----------||----------||----------||----------||---------->
Run Code Online (Sandbox Code Playgroud)

我的理解是在备份期间不使用锁(尽管由于高 I/O 可能会出现其他性能问题),但我不确定我能保证什么会被提交。

此外,我担心的不是数据库将处于不一致状态,而是该状态将是什么(即使它不是确定性的,如果有一组可以一致应用的规则)以及它是如何到达那里的(例如,有多少数据文件与事务日志一起用于创建备份文件)?

sql-server-2008 sql-server backup sql-server-2008-r2

9
推荐指数
1
解决办法
4249
查看次数

复合主键中的 NULL - SQL Server

我正在尝试找出创建 SQL Server 主键、外键和约束的最佳方法,以在 LINQ/实体数据对象中准确表示我的数据模型。让我们假设 - 为简化起见 - 我有四个主要表 - Cats、Dogs、Pets 和 Owners - 以及一个关联表:OwnersToPets:

create table Cats (
    ID_Cats int NOT NULL IDENTITY PRIMARY KEY,
    Name nvarchar(50) NOT NULL,
    miceEaten int NULL
)

create table Dogs (
    ID_Dogs int NOT NULL IDENTITY PRIMARY KEY,
    Name nvarchar(50) NOT NULL,
    favouriteToy nvarchar(50) NULL
)

create table Owners (
    ID_Owners int NOT NULL IDENTITY PRIMARY KEY,
    Name nvarchar(50) NOT NULL,
)

create table Pets (
    ID_Pets int NOT NULL IDENTITY PRIMARY KEY, …
Run Code Online (Sandbox Code Playgroud)

sql-server entity-framework

5
推荐指数
2
解决办法
6763
查看次数

elasticsearch 或 RavenDB 是否更适合为统计引擎/随机森林提供动力?

(注意:这个问题也存在于 StackOverflow 上,但我认为它在这里可能会有更好的接收。如果它证明这是更好的地方,我会关闭/要求迁移/链接到这个。另外,如果它没有真的属于这里,我很乐意删除它。)

我一直在为我的项目的下一阶段寻找以下NoSQL数据库:

elasticsearch 将自己定位为主要服务于高级搜索场景,而 RavenDB 将自己定位为面向文档的数据库。

该文档主要围绕视频展开。每个都有一个自然的id。这将是文件的关键。

围绕这一点,我在字段中添加了其他内容,这些内容不一定是标量或平面,因为信息将来自许多具有不同结构的不同来源。

例如,将有来自视频提供商的 Atom 提要的内容、嵌入了视频的博客文章以及来自数据仓库项目的其他数据

所有项目都没有固定的结构(实际上,每个项目都非常特定于领域),唯一将它们关联起来的是上述视频的自然关键。

也就是说,一旦我在上述解决方案之一中获得了这些信息,我就会想用它做很多事情:

  • 剔除它以帮助填充随机森林中的变量,以便对视频进行分类
  • 通过基于 Web 的前端(如果您必须知道 ASP.NET MVC)提供对视频的一般搜索(一般自由文本,不基于随机森林的结果)

有一些要求:

  • 我很可能会在 ASP.NET 共享 Web 托管环境中。这意味着我将拥有一台机器,并且无法设置服务。嵌入的东西将是非常有益的。

  • ASP.NET 环境将托管在 IIS 中,因此可嵌入方面必须能够经受住应用程序域回收

  • 我想根据统计分析的结果创建新的索引,我可以轻松地对这些索引进行分析,这将有助于在站点上进行搜索。

  • 支持自动完成功能(我知道这不是“开箱即用”的请求,但能够达到这一点很重要)。

  • 丰富的同义词支持(在我索引内容的视频类型中有很多)

我也对服务开放态度,例如Truffler,尽管我确实担心成本(在特鲁弗勒的情况下,有点担心数据中心之间的延迟,因为请求将来自西海岸的网络主机,或来自东海岸的后端进程)。

此外,我不认为一种解决方案需要满足所有要求。让一个服务于一个目的而让另一个服务于另一个目的,我觉得很好。当然,迁移很糟糕,但是在这两个文档存储之间迁移要容易一些(而且我不希望它们必然使用相同的文档结构)。

nosql

3
推荐指数
1
解决办法
1053
查看次数

当其中一个值的类型不同时,在复合键中使用的最佳类型

我正在为已抓取的多个博客站点的内容构建数据存储。这些站点中的每一个都将在Blog表中包含一个条目

BlogId                  Url                         Version
int, PK, identity       varchar(2500), not null     int, not null
-----------------       -----------------------     -------------
                1       'http://site1.com/                      1
                2       'http://site2.com/                      1
                3       'http://site2.com/                      2
Run Code Online (Sandbox Code Playgroud)

然后会有一张Post表:

BlogId                Url                        PostId
int, FK, not null     varchar(2500) not null     ?
Run Code Online (Sandbox Code Playgroud)

对于我正在查看的大多数博客,我可以轻松辨别出 PostId对它们来说独一无二价值。

对于所有博客,Url将是唯一的BlogId值。但是,Url经常可能发生变化

但是,有一些博客PostId在抓取 HTML 时我无法辨别出很好的价值。在这些情况下,我可以得到datetimeoffset发布帖子的信息。发布频率的准确性在分钟级别。

问题是,我需要使用BlogIdPostId但我不确定我应该输入什么PostId。我一直在想两个选择:

  • sql_variant- 我可以int对我的大多数网站使用 an ,这很好,然后datetimeoffset用于那些我无法轻易辨别唯一数字的网站PostId
  • bigint …

sql-server-2008 database-design sql-server unique-constraint

1
推荐指数
1
解决办法
390
查看次数