问题标签 [legacy-database]

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 投票
1 回答
413 浏览

django - 带有遗留数据库的 Django

我需要在现有数据库之上构建一个 django 项目。我将按照 django 文档中的说明使用 inspectdb,然后使用 syncdb 创建 django 所需的表。

有没有办法跟踪 django 特定的表(管理员权限、内容类型......)?如果需要,我希望将来能够完全删除 django。

谢谢

0 投票
2 回答
201 浏览

nhibernate - NHibernate Legacy 数据库映射不可能?

我希望有人可以帮助我映射遗留数据库。我在这里描述的问题一直困扰着其他人,但我无法在网络上找到真正好的解决方案。

免责声明:这是一个遗留数据库。我无法控制复合键。他们很烂,无论你告诉我他们很烂,都无法改变。我也无法添加代理键。请不要建议其中任何一个,因为它们不是选项。

我有 2 个表,都带有复合键。一个表中的一个键用作从另一个表中获取集合的键的一部分。简而言之,表之间的键不完全匹配。ClassB 在任何地方都使用,如果可能的话,我想避免为这个映射添加属性。

我想获取 ClassA 的实例并获取与 PolicyNumber 匹配的所有 ClassB 行。我试图让一对多的事情发生,但我意识到这在技术上可能是一个多对多,我只是将其视为一对多。

我尝试过使用关联类,但还不够远,无法查看它是否有效。我对这些更复杂的映射不熟悉,正在寻求建议。我对几乎任何想法都持开放态度。

谢谢,科里

0 投票
2 回答
713 浏览

ruby-on-rails - 将旧数据库与新的 Rails 应用程序一起使用时出现问题

将旧数据库与新的 Rails 应用程序一起使用时,常见的问题/绊脚石/问题/缺点是什么?

我们必须在使用旧数据库或编写迁移脚本以按照 Rails 约定将数据从旧数据库带到新数据库之间做出决定。你有什么建议?

0 投票
3 回答
55 浏览

ruby-on-rails - 将预先完成的 SQL 转换为 Rails 的样式模块

我是 Rails 新手,如果有人将这些 SQL 转换为完整的 Rails 模块,我将不胜感激。我知道有很多问题要问,但我不能只对所有这些都使用 find_by_sql。或者我可以吗?

这些是 SQL(它们在 MS-SQL 上运行):

SELECT STANJA_NA_DAN_POSTAVKA.STA_ID, STP_DATE, STP_TIME, STA_OPIS, STA_SIFRA, STA_POND FROM STANJA_NA_DAN_POSTAVKA INNER JOIN STANJA_NA_DAN ON(STANJA_NA_DAN.STA_ID=STANJA_NA_DAN_POSTAVKA.STA_ID) WHERE ((OSE_ID=10)AND (STANJA_NA_DAN_POSTAVKA.STP_DATE>={d '2010-03-30'}) AND (STANJA_NA_DAN_POSTAVKA.STP_DATE<={d '2010-03-30'}))

SELECT ZIGI_OBDELANI.OSE_ID,
ZIGI_OBDELANI.DOG_ID AS DOG_ID,
ZIGI_OBDELANI.ZIO_DATUM AS DATUM,
ZIGI_PRICETEK.ZIG_TIME_D AS ZIG_PRICETEK,
ZIGI_KONEC.ZIG_TIME_D AS ZIG_KONEC
FROM (ZIGI_OBDELANI INNER JOIN ZIGI ZIGI_PRICETEK ON ZIGI_OBDELANI.ZIG_ID_PRICETEK = ZIGI_PRICETEK.ZIG_ID )
INNER JOIN ZIGI ZIGI_KONEC ON ZIGI_OBDELANI.ZIG_ID_KONEC = ZIGI_KONEC.ZIG_ID
WHERE (ZIGI_OBDELANI.OSE_ID = 10) AND (ZIGI_OBDELANI.ZIO_DATUM >= {d '2010-03-30'}) AND (ZIGI_OBDELANI.ZIO_DATUM <= {d '2010-03-30'}) AND (ZIGI_PRICETEK.ZIG_VELJAVEN <> 0) AND (ZIGI_KONEC.ZIG_VELJAVEN <> 0)
ORDER BY ZIGI_OBDELANI.OSE_ID, ZIGI_PRICETEK.ZIG_TIME ASC

这些 SQL 是每天的工作时间,我按原样得到它们。我也得到了数据库,它(从 SQL-s 中可以看出)不在 Rails 约定中。作为 PS:

  1. 像 STP_DATE>={d'2010-03-30'}) 这样的东西当然是日期(斯洛文尼亚日期表示法),将被替换为变量(日期),以便用户可以选择日期和日期。

  2. 所有这些数据都将显示在表格的同一页面中,所以也许都在一个模块中?还是很多?如果这有帮助,也许。

那么有人可以帮助我吗?它是为了我的工作和我的第一个项目,我是 Rails 新手,老板们正在耐心等待(实际上他们变得非常响亮)

非常非常感谢你!

因此,如果有人可以为至少一个复杂的 SQL 做一个相关的模型部分,我真的很感激。我将在一个控制器和一个动作中读取所有数据。一切都将在一次运行中完成。

0 投票
10 回答
501 浏览

database - 如何对庞大的遗留数据库进行现代化改造?

我有一个问题,只是在这里寻找建议。

因此,我的应用程序通过将桌面应用程序转换为 Web 来“现代化”桌面应用程序,并使用 Java 编写的 ICEFaces UI 和服务器端。然而,他们保持着相同的 Oracle 数据库,目前该数据库有大约 700-900 个表,并且表中可能有 10 亿条记录。一些单独的表有 2.5 亿行,许多有超过 2500 万行。

不用说,数据库的扩展性不好。结果,应用程序的性能看起来很糟糕。架构师/未来的决策者要么拒绝要么不愿意重构持久性。因此,基本上我们正在为目前满足大多数用户需求并且相对轻松的功能性桌面应用程序涂上一层新油漆。现在桌面应用程序中的实际数据库性能非常慢。我之前提到的快速性能是与数据库无关的东西(对不起,我在那儿说错了)。我晚上难以入睡,想着这个应用程序的性能有多差,以及日常用户完成他们的工作会有多困难。

所以,我的问题是,我有哪些选择来减轻这场迫在眉睫的灾难?我可以在数据库和 Java 代码之间放置某种类型的中间层来提高性能,同时保持数据库结构完整吗?缓存显然是一种选择,但我不认为这是万灵药。是否可以在两者之间分层 NoSQL DB 或其他什么?

0 投票
1 回答
1321 浏览

ruby-on-rails - Rails 使用 primary_key+foreign_key 选项的关联问题

我想从 Rails 访问旧数据库模式。我有一个带有主键 OBJECT_ID 的表 NAGIOS_OBJECTS 和一个带有 HOST_OBJECT_ID 列的 NAGIOS_HOST_CHECKS 表。因此,我将关系定义如下:

但是,当调用 a_nagios_object.nagios_host_check 或 a_nagios_host_check.nagios_object 时,我总是得到 nil。

知道我的代码有什么问题吗?

0 投票
1 回答
145 浏览

nhibernate - 在正在进行的项目中为遗留数据库引入 nHibernate 是否很好?

我正在开展一个当前正在进行的项目,其中有两个数据库实例,其中一些表具有不同的架构,并且用于从一个到另一个的传输。

数据库模式定义不明确,例如,

  • 某些表没有主键
  • 主键作为复合键
  • 复合主键中的外键
  • 外键约束引用同一张表的主键列
  • 复合主键已被引用为另一个表中的外键
  • 拥有超过 400 张桌子并将增加

应用程序实现的 OOPS 概念非常少,或者说使用的对象更少。

所以,如果有的话,寻找一些答案,我们在这个特定的时间引入 NHibernate 和 Repository 模式,以加快开发过程。

干杯。

0 投票
1 回答
236 浏览

paging - 具有自定义数据层的 RIA 分页

我们使用自定义数据访问层从数据库中读取我们的域对象(客户、订单等)。此数据访问层不支持分页或排序。

我们希望使用 WCF RIA 服务将部分数据(例如客户)发布到 Silverlight 客户端。在客户端中,我们想要显示一个带有分页的数据网格。

现在,在我们的 RIA DomainService 中,我们将有一个函数,例如

此函数将从数据库中读取所有客户记录。我假设 RIA 在这种情况下无法进行任何形式的服务器端分页 - 当调用该函数时,我们将始终读取所有客户。

我的问题是:

RIA 会在客户端缓存客户列表(并且只调用一次 GetCustomers),还是会在每次用户移动到数据网格中的下一页时执行操作?

在我的场景中,执行该操作可能需要 5 秒,如果执行一次是可以接受的,但如果每次用户想要移动到数据网格中的新页面时需要 5 秒,则不是。

在使用 RIA 访问遗留数据访问层并且您想使用分页时,是否有一些好的解决方案/模式/方法可以使用?

0 投票
1 回答
1664 浏览

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

我们有一个无法更改的遗留数据库。我们正试图转移到 NHibernate 而不是旧的 DataAccess 层,它是垃圾而且太慢了。

它有这样的表格:

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

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

GPI

堵塞

公司

这些课程非常简单明了。都实现了 Equals 和 GetHashCode 方法。

以下是可用的导航器列表:

  • GroupPartnerInterest.Company - 效果很好
  • Company.GroupPartnerInterests - 效果很好
  • GroupPartnerInterest.Company - 效果很好

这两个失败了:

  • Block.GroupPartner兴趣:

我有一个单元测试:

如果我在 GPI 映射测试中注释掉块导航映射并输出一些数据:

Block #1
公司 'LALA':
公司 'LALA SA':
Block #2 公司
'BG PO':
公司 'LIMPOPO': 公司 'HAHA': 公司'Other partner(s)' 公司: Block #4




但是测试失败并出现以下错误:

NHibernate.LazyInitializationException: Initializing[Model.EntityClasses.Block#999] - 无法延迟初始化角色集合:Model.EntityClasses.Block.GroupPartnerInterests,没有会话或会话已关闭。

'999' 是现有的 PAR_ID - 数据是一致的:有两个具有此 PAR_ID 的块和 GPI 中的一些记录。

为什么它会在某个时候关闭会话?

  • GroupPartnerInterest.Blocks:

单元测试与我上面提到的几乎相同,只是使用了不同的属性。错误如下:

NHibernate.MappingException:NHibernate.MappingException:找不到属性:实体 Model.EntityClasses.GroupPartnerInterest 上的 GroupId。

如果我从 GPI 映射中 Blocks navigator 的元素中删除“property-ref=GroupId”,我将得到以下异常:

NHibernate.FKUnmatchingColumnsException: NHibernate.FKUnmatchingColumnsException: 外键 (FKA3966498349694F:[BLOCK] [PAR_ID])) 的列数必须与引用的主键 ([GPI] [PAR_ID, PU_ID]) 的列数相同。

有没有办法将块映射到 GPI,以便 GroupPartnerInterest.Blocks 导航器可以工作?

谢谢,亚历克斯

0 投票
2 回答
618 浏览

hibernate - 将休眠与现有数据库一起使用

我想对现有数据库使用休眠。我主要需要从数据库中读取数据,并且偶尔会修改一个字段。

我希望能够更新行中的单个字段,但我需要确保不触及所有其他字段。

hibernate 是否保证字段将被写回与写入时相同(假设我没有修改对象)