标签: legacy-database

遗留数据库这个术语是什么意思?

我读了很多这个词.什么是遗留数据库?我问,因为我认为它意味着像dbase或rdb这样的旧数据库,但我不认为我是对的.

在查看RoR或Django以及"遗留数据库"集成时,遗留数据库的真正含义是什么?它是否与通用术语"遗留数据库"不同?

definition legacy-database

29
推荐指数
3
解决办法
3万
查看次数

处理遗留数据库时,Hibernate会对丢失的行进行扼流

我试图在遗留数据库(仍然有遗留的PHP客户端)上实现hibernate,并且遇到了一些问题,因为编写原始应用程序的人不知道他们在做什么.

设置数据库以使任何列都不可为空,因此如果没有记录,则将外键默认为0.此外,它们在表上没有正确的外键,因此有一些具有无效ID.我没有选项来更改架构或null相应的列.

这是我从hibernate得到的错误:

Caused by: org.hibernate.ObjectNotFoundException: No row with the given identifier exists: [com.tv.platform.domain.Program#0]
Run Code Online (Sandbox Code Playgroud)

我想要的是一种优雅的方式来处理这个问题,如果该行无效或不存在,该字段将为空,但我没有运气找到如何在文档中处理这个问题.

有小费吗?

java mysql hibernate legacy-database

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

使用MS-SQL Server设置Liquibase

我正在利用Liquibase(www.liquibase.org)进入我们的MVC3 SQL Server 2008项目来管理数据库迁移/更改.但是我遇到了第一个障碍:连接到Microsoft SQL Server实例.

我正在查看liquibase站点上的快速入门教程,但是为sql server DB交换了mysql

我运行这个命令:

liquibase --driver=sqljdbc.jar  --changeLogFile="C:\Temp\ChangeLog.xml"  --url="jdbc:sqlserver://localhost;databaseName=test"  --username=user --password=pass   migrate
Run Code Online (Sandbox Code Playgroud)

并收到此错误:

Liquibase Update Failed: Cannot find database driver: sqljdbc.jar
Run Code Online (Sandbox Code Playgroud)

我试过添加--classpath指向sqljdbc驱动程序没有运气.

如何使用liquibase创建或更新MS-SQL Server数据库?

legacy jdbc legacy-database liquibase sql-server-2008

10
推荐指数
1
解决办法
2万
查看次数

CQRS与Legacy Systems

我正在寻找将具有清晰域模型的相对较新的基于Web的应用程序转换为更多CQRS样式系统.我的新应用程序本质上是旧的现有系统的增强替代品.

我组织中的现有系统共享一组公共数据库,这些数据库由遍布公司的孤岛中的无数应用程序(通过混沌方法开发)进行更新.(就目前而言,我相信公司中没有任何一个人可以识别所有人.)

因此,我的问题是关于我的应用程序的读取模型.由于各种状态更改,一般用户数据等由我控制之外的其他应用程序更新,处理构建读取模型的最佳方法是什么,以便我可以处理外部更新,但仍然保持相对简单的事情?

到目前为止我考虑过以下几点:

  1. 在数据库中为读取模型创建视图,读取所有表,旧表和新表
  2. 将触发器添加到现有表以更新新的读取模型表
  3. 将一些代码添加到数据库(CLR Stored proc/etc [sql server])以更新读取模型的外部数据存储区
  4. 抛弃希望

关于如何处理这个问题的一般共识是什么?认为如果不从头开始完全重写所有内容,我可以为遗留系统带来秩序,这是愚蠢的吗?

legacy-code legacy-database cqrs

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

在Rails 3应用程序中使用原始SQL查询?

我正在努力将遗留数据库迁移到我的Rails应用程序(3.2.3).原始数据库附带了很多用于报告的长SQL查询.现在,我想做的是在Rails应用程序中使用sql查询,然后逐个(当时间允许时)将sql查询交换为"正确的"Rails查询.

我有一个临床模型,控制器有以下代码:

 @clinical_income_by_year = Clinical.find_all_by_sql(SELECT date_format(c.transactiondate,'%Y') as Year, 
                                                 date_format(c.transactiondate,'%b') as Month,
                                                 sum(c.LineBalance) as "Income"
                                                 FROM clinical c
                                                 WHERE c.Payments = 0 AND c.LineBalance <> 0
                                                 AND c.analysiscode <> 213
                                                 GROUP BY c.MonthYear;)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行该代码时,我得到一些与格式有关的错误.

Started GET "/clinicals" for 127.0.0.1 at 2012-04-29 18:00:45 +0100

SyntaxError (/Users/dannymcclelland/Projects/premvet/app/controllers/clinicals_controller.rb:6: syntax error, unexpected tIDENTIFIER, expecting ')'
...rmat(c.transactiondate,'%Y') as Year, 
...                               ^
/Users/dannymcclelland/Projects/premvet/app/controllers/clinicals_controller.rb:7: syntax error, unexpected tIDENTIFIER, expecting keyword_end
...rmat(c.transactiondate,'%b') as Month,
...                               ^
/Users/dannymcclelland/Projects/premvet/app/controllers/clinicals_controller.rb:8: syntax error, unexpected tIDENTIFIER, expecting keyword_end
...          sum(c.LineBalance) as "Income"
...                               ^ …
Run Code Online (Sandbox Code Playgroud)

sql model legacy-database ruby-on-rails-3 rails-activerecord

7
推荐指数
1
解决办法
2万
查看次数

NHibernate导航器映射到复合键问题的一部分 - 遗留数据库使用

我们有一个我们无法改变的遗留数据库.我们正试图转移到NHibernate而不是旧的DataAccess层,这是一个垃圾,而且速度太慢.

它有这样的表:

GPI表有(PU_ID,PAR_ID,Data,Data2)列
BLOCK表有(GA_ID,Data,PAR_ID)列
COMPANY表有(PU_ID,Data)列

我为上面的表创建了这些映射:

GPI

<class name="GroupPartnerInterest" table="[GPI]">
    <composite-id >
        <key-property name="GroupId" column="PAR_ID" />
        <key-property name="CompanyId" column="PU_ID" />
    </composite-id>
    <property name="data" column="Data"/>
    <property name="data2" column="Data2"/>
    <many-to-one name="Company" fetch="select" cascade="none">
        <column name="PU_ID"/>
    </many-to-one>
    <set name="Blocks" cascade="none" inverse="true" fetch="select">
        <key property-ref="GroupId">
            <column name="PAR_ID"/>
        </key>
        <one-to-many class="Block"/>
    </set>
</class>
Run Code Online (Sandbox Code Playgroud)

<class name="Block" table="[BLOCK]" >
    <id name="BlockId" column="GA_ID" >
        <generator class="assigned"/>
    </id>
    <property name="data" column="Data"/>
    <property name="GroupId" column="PAR_ID"/>
    <set name="GroupPartnerInterests" cascade="all-delete-orphan" fetch="select">
        <key property-ref="GroupId">
            <column name="PAR_ID"/>
        </key>
        <one-to-many class="GroupPartnerInterest"/>
    </set>
</class>
Run Code Online (Sandbox Code Playgroud)

公司 …

nhibernate nhibernate-mapping legacy-database composite-id

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

Django 自动为现有数据库表创建主键

我有一个现有的数据库,我试图用 Django 访问它。我曾经python manage.py inspectdb为数据库创建模型。目前我能够将模型导入 python shell 但是当我尝试以任何方式访问任何实际对象时,我收到此错误OperationalError: (1054, "Unknown column 'some_table.id' in 'field list'")。我看到数据库中的表实际上没有id字段。我怎样才能解决这个问题?我是否需要更新Meta类中的托管字段并运行迁移以便它可以自动创建此字段?

python mysql django legacy-database

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

对遗留数据应用XSS策略

我们的遗留应用程序最初设计为允许为可自定义的页面存储任何html标记.这些页面的想法是存储客户需要的任何HTML,然后在某些时候有可能呈现这个HTML数据.

这种方法允许用户存储任何XSS.我们当前的目标是定义和实施不允许存储任何XSS的策略.

基于一些预定义的规则,我们已经研究了几种能够清理html的方法:

但这两种方法都是基于卫生而非验证.所以基本情况可能如下所示:

  1. 用户输入一些要输入的数据
  2. 用户输入被清理并检查与原始(初始 - 步骤1)用户输入的相等性.
  3. 如果有任何差异,则认为验证失败.

这种方法适用于新数据.对于遗留数据,我们会遇到几个问题:

  1. 如果用户遗留数据包含禁用元素,则用户将无法保存稍微修改过的html内容版本.
  2. 以下流程会让用户感到困惑:
    1. 用户编辑包含有关新定义的策略的禁止标记/内容的旧数据.
    2. 用户替换所有内容并保存.
    3. 用户出于某种原因决定恢复旧版本
    4. 用户不允许保存以前的版本,因为它包含禁止的标签/内容.

所以出现以下问题:

  1. 验证恶意html元素和XSS向量的用户输入的最佳方法是什么?
  2. 哪种方法可用于修复遗留数据中提到的问题?

java xss legacy-database

6
推荐指数
0
解决办法
74
查看次数

在Django中将两个不相关的表/模型与相同的主键合并

我有两个具有相同主键的不相关表。

ip            mac
11.11.11.11   48-C0-09-1F-9B-54
33.33.33.33   4E-10-A3-BC-B8-9D
44.44.44.44   CD-00-60-08-56-2A
55.55.55.55   23-CE-D3-B1-39-A6

ip            type     owner
22.22.22.22   laptop   John Doe
33.33.33.33   server   XYZ Department
44.44.44.44   VM       Mary Smith
66.66.66.66   printer  ZWV Department
Run Code Online (Sandbox Code Playgroud)

第一个表每分钟自动刷新一次。我无法更改数据库结构或填充它的脚本。

两个表都有ip作为主键。

在视图中,我想显示一个这样的表:

ip           mac               type    owner          Alert
11.11.11.11  48-C0-09-1F-9B-54                        Unauthorized
55.55.55.55  23-CE-D3-B1-39-A6                        Unauthorized
22.22.22.22                    laptop  John Doe       Down
66.66.66.66                    printer ZWV Department Down
33.33.33.33  4E-10-A3-BC-B8-9D server  XYZ Department OK
44.44.44.44  CD-00-60-08-56-2A VM      Mary Smith     OK
Run Code Online (Sandbox Code Playgroud)

我该如何建模?我是否应该将两个主键中的一个作为外键?

代码运行后,将有大量数据,因此我想确保它足够快。

检索数据最快的方法是什么?


更新:

我尝试OneToOneField用于第二张桌子。

这有助于我获得两个表中的记录以及未授权设备的记录(第二个表中缺少IP):

ip           mac               type    owner …
Run Code Online (Sandbox Code Playgroud)

django django-models legacy-database

6
推荐指数
2
解决办法
845
查看次数

Entity Framework是否支持模型中的不同数据类型?

我正在考虑使用EF访问客户系统上安装的旧版SQL Server数据库.

问题是数据库模式不是100%一致的:虽然它们都具有相同(相关)的表和字段,但某些数字字段可能具有不同的数据类型.

据我所知,从应用程序的角度来看,类型是"兼容的":例如,包含小数字的字段可能是smallint客户A的数据库,但int客户B的数据库或包含价格的字段可能是decimal(10,2)在A的数据库上,但float在B的数据库上(是的,这意味着B可能会遇到浮点问题 - 毕竟它是一个遗留数据库).

由于我们不是唯一访问数据库的人,因此更改(并因此统一)模式不是一种选择.实体框架是否能够应对这种情况(即,double如果模型定义声称它是a ,它会优雅地接受SQL Server表中的a decimal(10,2))还是会崩溃?

c# sql-server entity-framework legacy-database

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