目前从SQL Server迁移到PostgreSQL和试图改善在路上几个关键领域:SQL服务器到PostgreSQL - 迁移和设计涉及
我有一个文章表:
CREATE TABLE [dbo].[Articles](
[server_ref] [int] NOT NULL,
[article_ref] [int] NOT NULL,
[article_title] [varchar](400) NOT NULL,
[category_ref] [int] NOT NULL,
[size] [bigint] NOT NULL
)
数据(以逗号分隔的文本文件)每天在输入服务器上转储大约500(超出〜1000)个服务器。
导入:
- 索引是对本刊表禁用。
- 对于每个倾销的文本文件
- 数据被BULK复制到临时表中。
- 临时表已更新。
- 服务器的旧数据从文章表中删除。
- 临时表数据被复制到Articles表中。
- 临时表丢失。
一旦这个过程完成的指标构建的所有服务器和新的数据库复制到Web服务器。
我对这个过程非常满意,但是在争取实时(哈哈!)系统时总会有改进的空间。我所做的是正确的?文章表包含约5亿条记录,预计会增长。在这张桌子上搜索是可以的,但可能会更好。即SELECT * FROM Articles WHERE server_ref=33 AND article_title LIKE '%criteria%'
已经令人满意,但我想提高搜索速度。显然,“喜欢”是我的问题。建议? SELECT * FROM Articles WHERE article_title LIKE '%criteria%'
是可怕的。
分区是SQL Server Enterprise的一个功能,但$$$是PostgreSQL许多令人兴奋的前景之一。导入过程(丢弃数据,插入数据)和建立索引会产生什么性能影响?数据库会增长很多吗?
该数据库目前在200 GB,并将增长。在网络上复制这个并不理想,但它起作用。我正在考虑改变系统的硬件结构。有一个导入服务器和一个Web服务器的思想过程是这样的,即导入服务器可以在Web服务器(WITH索引)可以显示报告的同时执行肮脏的工作(无索引)。也许将系统缩小到一台服务器可以避免在整个网络阶段进行复制。这一台服务器将有两个版本的数据库:一个用于传递报告的索引,另一个用于导入新数据。数据库将每天交换。思考?
这是一个梦幻般的系统,并且相信它有没有一些方法可以让我的疯狂产生巨大的变化。
更新:我不是在寻找关系型数据库的帮助,而是希望能够与数据仓库专家们一起反弹。
而不是使用LIKE,查看全文索引(postgres和mysql支持,在某种程度上)或者像lucene这样的完全外部搜索解决方案。 – 2009-10-26 20:29:02
我意识到这两种技术,但几年来一直没有触及它们。我会做一些阅读。 – youwhut 2009-10-27 09:53:23