- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
表格1:
一切,包括厨房水槽。日期格式错误(最后一年,因此您无法对该列进行排序),存储为 VARCHAR 的数字,“街道”列中的完整地址,名字列中的名字和姓氏,姓氏列中的城市,不完整的地址,行根据一些多年来发生变化的规则,重复记录,不完整记录,垃圾记录...通过将数据从一个字段移动到另一个字段来更新前面的行,您可以说出它...哦,当然不是时间戳或主要KEY 列就在眼前。
表2:
打开这个婴儿后,任何正常化的希望都破灭了。
我们为每个条目和表一中的行更新一行。所以重复像没有明天(值(value) 800MB)和像 Phone1 Phone2 Phone3 Phone4 ... Phone15 这样的列(它们不被称为电话。我用这个来说明) 外键是 .. 猜猜看。根据表 1 中行中的数据类型,有 3 个候选对象
表3:
会不会更糟。哦是的。
“外键是破折号、点、数字和字母的 VARCHAR 列组合!如果这不提供匹配(通常不提供),则应该使用第二列类似产品代码。名称带有与其中的数据没有相关性,并且是强制性的 Phone1 Phone2 Phone3 Phone3 Phone4... Phone15。有列 Duplicated from Table1 而不是 TIMESTAMP 或 PRIMARY KEY 列。
表 4:被描述为正在进行中的工作,随时可能发生变化。它本质上与其他类似。
在接近 1m 行时,这是一个大困惑。幸运的是,这不是我的大麻烦。不幸的是,我必须从中提取每个“客户”的复合记录。
最初,我设计了 Table1 的四步翻译,添加一个 PRIMARY KEY 并将所有日期转换为可排序的格式。然后再执行几个查询步骤,返回过滤后的数据,直到我将 Table1 放到可以使用它从其他表中提取以形成组合的位置。经过数周的工作,我使用一些技巧将其简化为一步。所以现在我可以将我的应用指向困惑并拉出一个漂亮的干净的合成数据表。幸运的是,我只需要一个电话号码就可以满足我的目的,因此标准化我的表格不是问题。
然而,这是真正的任务开始的地方,因为每天都有数百名员工以您不想想象的方式添加/更新/删除这个数据库,而且每晚我都必须检索新行。
由于任何表中的现有行都可以更改,并且由于没有 TIMESTAMP ON UPDATE 列,我将不得不求助于日志来了解发生了什么。当然,这假设有一个二进制日志,但没有!
引入这个概念就像铅气球一样下降。我还不如告诉他们,他们的 child 将不得不接受实验性手术。他们不是完全高科技......以防你没有聚集......
情况有点微妙,因为他们有一些我的公司非常想要的有值(value)的信息。我被一家大公司的高级管理人员(你知道他们是怎么做的)派下来“让它发生”。
除了使用另一个应用程序解析 bin 日志文件以找出他们在白天对该数据库执行的操作,然后相应地组合我的表之外,我想不出任何其他方法来处理夜间更新。我真的只需要查看他们的 table1 就可以弄清楚如何处理我的表。其他表仅提供用于清除记录的字段。 (使用 MASTER SLAVE 无济于事,因为我会有一个困惑的副本。)
另一种方法是为其 table1 的每一行创建一个唯一的哈希并构建一个哈希表。然后我会每晚检查整个数据库以查看哈希值是否匹配。如果他们没有,那么我会读取该记录并检查它是否存在于我的数据库中,如果存在,那么我会在我的数据库中更新它,如果它不存在,那么它是一个新记录,我会插入它。这很丑陋而且速度不快,但是解析二进制日志文件也不是很好。
我写这篇文章是为了帮助弄清楚这个问题。经常告诉其他人有助于澄清问题,从而使解决方案更加明显。在这种情况下,我只是有更大的头痛!
您的想法将不胜感激。
最佳答案
日志文件(二进制日志)也是我的第一个想法。如果你知道他们是如何做事的,你会不寒而栗。对于每一行,在添加和更改部分时,日志中有许多条目。它只是巨大的!
现在我决定采用 Hash 方法。通过一些巧妙的文件内存分页,这非常快。
关于mysql - MySQL 遗留数据库的终极噩梦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/101333/
我正在为一个站点构建 flexbox,而新版本非常棒——完全按预期工作。但是,因为我们使用 wkhtmltopdf 呈现为 PDF,所以看起来我们需要暂时支持遗留 (webkit-*) flexbox
我有一个遗留的 GDB 命令脚本,用于基于 Python 2.6 源代码附带的 GDB 脚本获取 Python 堆栈跟踪(所以不允许超链接,但这是 URL:http://#%20http ://svn
$ sudo apt-get 安装 nodejs-legacy阅读包裹 list ...完成构建依赖树 正在读取状态信息...完成E: 无法定位包 node-legacy 请提出解决方案... 最佳答
我最近有幸获准在中型遗留代码库(从 3.x 到 5.2)中更改 Hibernate 依赖项(以及其他)的版本。代码本身已有 10 多年的历史,但仍在日常使用中。 因此,即使在增加版本并将尽可能多的 A
我正在尝试在 Debian GNU/Linux 稳定系统上编译一些较旧的 C++ 代码(可能来自 2001-2002 年左右)。编译时出现错误: In file included from /usr/
为 unix 上的一些遗留 c/c++ 代码寻找代码分析工具专门用于识别对 的依赖 具体职能 特定(包括?)文件 文件/套接字 I/O 调用等 来自根等的函数依赖树 最佳答案 Doxygen 可能就是
已结束。此问题不符合 Stack Overflow guidelines .它目前不接受答案。 我们不允许提出有关书籍、工具、软件库等方面的建议的问题。您可以编辑问题,以便用事实和引用来回答它。 关闭
我必须从遗留的 Visual Basic 软件中复制一个算法,但有一点我不理解代码。 作者似乎使用了某种方式通过引用隐式传递整数等简单数据类型。第一次我认为它可能是原始软件中的错误,但第三次出现后它看
我需要以编程方式最小化和最大化全屏 16 位应用程序。不幸的是,DosBox 不是一个选项,因为这个应用程序与 DosBox 不支持的一些外围设备对话。 我能够编写可以设置焦点、发送 alt + en
我想拦截对遗留 Java servlet/JSP 应用程序的请求,并使用 OpenID Connect (OIDC) 协议(protocol)对用户进行身份验证。 我看过 Spring Securit
我有一个遗留的 tomcat Java 应用程序(Spring、Hibernate、MySQL) 在 Linux (Ubuntu) 上运行。我想(需要)利用现有应用程序的后端数据库构建一个 Andro
我刚刚更新了我们的应用程序以使用最新版本的遗留 NVP API,并发现提到了巴西显然需要的两个新字段(TAXIDTYPE、TAXID)。这些显然是在我们之前使用的 API 版本之后引入的。 我只是尝试
我正在使用 g++ 4.4.7 编译一段非常古老的遗留代码。关于这段代码,我真正知道的是它是在 Irix/Sun 系统上开发的,这意味着它具有 MIPS 体系结构。我在使用这段代码时发现的一件相当奇怪
我们正在考虑使用托管 C++ 为一些遗留 C++ 库编写 .Net 可调用包装器。 这一切看起来都很简单。有什么需要注意的吗? 最佳答案 我发现在 C++/CLI 中包装一些现有的 C++ 库通常很容
好的,我们有了这个庞大的裸机 php 项目,我们想慢慢将其转换为 Symfony3 这是一个不断变化和更新的项目,因此我们需要它是透明的,以确保不会干扰使用它的人。他们根本不应该注意到差异。 所以我们
我们有一个中型 Java 应用程序需要一些重构。 我们正在考虑迁移到 JRuby on Rails。主要是因为 Ruby on Rails 提供的生产力以及许多将重新实现 Web 逻辑的现有插件。 但
我的问题是关于经典 ASP,而不是 ASP.Net。我在这里询问专家,因为搜索引擎总是告诉我 ASP.Net 答案。我的困惑是, 如何在经典 ASP 代码中或通过配置设置 session 过期时间?
在十多年没有用 C++ 编程之后,我正在尝试向遗留的 C++ Win32 DLL 添加正确的错误报告。 这有力地提醒了我们在 C/C++ 中处理空终止字符串的令人难以置信的单调乏味——更不用说潜在的缓
我必须获得一些在 Windows 10 下运行的遗留 (XP) MFC 代码。它在 Windows 7 下运行良好。我没有尝试过任何其他版本。 想法是内存中有一个缓冲区,其中包含 RGB 格式的图像像
require('url').parse('someurl.com/page') 已仅在文档中被弃用,我们严格的 linter 对此感到不满...我尝试在我们的代码中将其替换为互联网建议的 new U
我是一名优秀的程序员,十分优秀!