我读了很多这个词.什么是遗留数据库?我问,因为我认为它意味着像dbase或rdb这样的旧数据库,但我不认为我是对的.
在查看RoR或Django以及"遗留数据库"集成时,遗留数据库的真正含义是什么?它是否与通用术语"遗留数据库"不同?
我试图在遗留数据库(仍然有遗留的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)
我想要的是一种优雅的方式来处理这个问题,如果该行无效或不存在,该字段将为空,但我没有运气找到如何在文档中处理这个问题.
有小费吗?
我正在利用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数据库?
我正在寻找将具有清晰域模型的相对较新的基于Web的应用程序转换为更多CQRS样式系统.我的新应用程序本质上是旧的现有系统的增强替代品.
我组织中的现有系统共享一组公共数据库,这些数据库由遍布公司的孤岛中的无数应用程序(通过混沌方法开发)进行更新.(就目前而言,我相信公司中没有任何一个人可以识别所有人.)
因此,我的问题是关于我的应用程序的读取模型.由于各种状态更改,一般用户数据等由我控制之外的其他应用程序更新,处理构建读取模型的最佳方法是什么,以便我可以处理外部更新,但仍然保持相对简单的事情?
到目前为止我考虑过以下几点:
关于如何处理这个问题的一般共识是什么?认为如果不从头开始完全重写所有内容,我可以为遗留系统带来秩序,这是愚蠢的吗?
我正在努力将遗留数据库迁移到我的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
我们有一个我们无法改变的遗留数据库.我们正试图转移到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)
公司 …
我有一个现有的数据库,我试图用 Django 访问它。我曾经python manage.py inspectdb为数据库创建模型。目前我能够将模型导入 python shell 但是当我尝试以任何方式访问任何实际对象时,我收到此错误OperationalError: (1054, "Unknown column 'some_table.id' in 'field list'")。我看到数据库中的表实际上没有id字段。我怎样才能解决这个问题?我是否需要更新Meta类中的托管字段并运行迁移以便它可以自动创建此字段?
我们的遗留应用程序最初设计为允许为可自定义的页面存储任何html标记.这些页面的想法是存储客户需要的任何HTML,然后在某些时候有可能呈现这个HTML数据.
这种方法允许用户存储任何XSS.我们当前的目标是定义和实施不允许存储任何XSS的策略.
基于一些预定义的规则,我们已经研究了几种能够清理html的方法:
但这两种方法都是基于卫生而非验证.所以基本情况可能如下所示:
这种方法适用于新数据.对于遗留数据,我们会遇到几个问题:
所以出现以下问题:
我有两个具有相同主键的不相关表。
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) 我正在考虑使用EF访问客户系统上安装的旧版SQL Server数据库.
问题是数据库模式不是100%一致的:虽然它们都具有相同(相关)的表和字段,但某些数字字段可能具有不同的数据类型.
据我所知,从应用程序的角度来看,类型是"兼容的":例如,包含小数字的字段可能是smallint客户A的数据库,但int客户B的数据库或包含价格的字段可能是decimal(10,2)在A的数据库上,但float在B的数据库上(是的,这意味着B可能会遇到浮点问题 - 毕竟它是一个遗留数据库).
由于我们不是唯一访问数据库的人,因此更改(并因此统一)模式不是一种选择.实体框架是否能够应对这种情况(即,double如果模型定义声称它是a ,它会优雅地接受SQL Server表中的a decimal(10,2))还是会崩溃?
legacy-database ×10
django ×2
java ×2
mysql ×2
c# ×1
composite-id ×1
cqrs ×1
definition ×1
hibernate ×1
jdbc ×1
legacy ×1
legacy-code ×1
liquibase ×1
model ×1
nhibernate ×1
python ×1
sql ×1
sql-server ×1
xss ×1