我正在寻找类似MySQL Proxy的东西.目的是修改服务器上的传入查询.我不是在寻找其他方法来实现同样的目标.我目前最好的猜测是修改GridSQL,但这增加了复杂性并且需要时间.我之前以一种截然不同的方式问过这个问题并且没有得到相关的结果,所以我删除了这个问题并添加了这个问题.
编辑:客户端可以继续使用PostgreSQL协议非常重要,因此我正在寻找的软件包需要使用它进行通信.
我需要知道PostgreSQL中的列类型(即varchar(20)).我知道我可能会\d在psql中使用某些内容找到它,但我需要使用select查询来完成它.
这在PostgreSQL中是否可行?
我需要将单行写入文件服务器上的文件.我正在考虑使用SQLite来确保该行的写入成功而不仅仅是部分完成.但是,因为插入性能非常重要.我的问题是,SQLite在向表中插入行时会经历的确切过程(读取此内容,写入,读取此内容等)是什么.该表没有任何索引,也没有主键,约束或任何东西.
从没有存储varchar或其他可变长度数据的表中读取通常会更快吗?在MySQL中,这更快,因为它可以准确计算磁盘上存储行的位置.
想象一下PostgreSQL 9.0上具有以下结构的表:
create table raw_fact_table (text varchar(1000));
Run Code Online (Sandbox Code Playgroud)
为了简化起见,我只提到一个文本列,实际上它有十几个.该表有100亿行,每列有很多重复.该表是使用COPY FROM从平面文件(csv)创建的.
为了提高性能,我想转换为以下星型模式结构:
create table dimension_table (id int, text varchar(1000));
Run Code Online (Sandbox Code Playgroud)
然后将事实表替换为如下事实表:
create table fact_table (dimension_table_id int);
Run Code Online (Sandbox Code Playgroud)
我当前的方法是基本上运行以下查询来创建维度表:
Create table dimension_table (id int, text varchar(1000), primary key(id));
Run Code Online (Sandbox Code Playgroud)
然后创建填充我使用的维度表:
insert into dimension_table (select null, text from raw_fact_table group by text);
Run Code Online (Sandbox Code Playgroud)
之后我需要运行以下查询:
select id into fact_table from dimension inner join raw_fact_table on (dimension.text = raw_fact_table.text);
Run Code Online (Sandbox Code Playgroud)
想象一下,通过多次将所有字符串与所有其他字符串进行比较,我获得了可怕的性能.
在MySQL上,我可以在COPY FROM期间运行存储过程.这可以创建字符串的哈希值,并且所有后续字符串比较都是在哈希而不是长原始字符串上完成的.这似乎不可能在PostgreSQL上,我该怎么办?
样本数据将是包含类似内容的CSV文件(我也使用整数和双精度的引号):
"lots and lots of text";"3";"1";"2.4";"lots of text";"blabla"
"sometext";"30";"10";"1.0";"lots of text";"blabla"
"somemoretext";"30";"10";"1.0";"lots of text";"fooooooo"
Run Code Online (Sandbox Code Playgroud) 我正在考虑创建一个具有Facebook复杂性的网站,该网站应该可以扩展到数百万用户.我的问题是:除了明显要求每个人都安装Flash并且不必依赖Adobe之外,是否有任何理由不将Adobe Flex用于这样的大型项目?在我看来,Adobe Flex会减少Facebook的服务器负载,因为我可以在客户端完成更多的工作.你同意吗?
我有以下代码从pl/python返回多个值:
CREATE TYPE named_value AS (
name text,
value integer
);
CREATE or replace FUNCTION make_pair (name text, value integer)
RETURNS named_value
AS $$
return [ name, value ]
$$ LANGUAGE plpythonu;
select make_pair('egg', 4) as column;
Run Code Online (Sandbox Code Playgroud)
输出是:
column
(egg,4)
Run Code Online (Sandbox Code Playgroud)
我想要做的是将输出分成两个单独的列.像这样:
column, column2
egg, 4
Run Code Online (Sandbox Code Playgroud)
我该怎么做呢?用Google搜索了1个小时让我无处可去.所以我希望我最后会添加一些搜索关键字:多个返回值多个结果多个列不需要列表不需要设置
使用标准调试器调试性能问题几乎没有用,因为细节级别太高.其他方式使用分析器,但它们很少给我提供良好的信息,特别是当涉及GUI和后台线程时,因为我从来不知道用户是否实际上在等待计算机.另一种方法是使用Control + C并查看它停止的代码中的位置.
我真正想要的是快速前进,播放,暂停和倒带功能以及代码的一些视觉代表.这意味着我可以将代码设置为在Fast Forward上运行,直到我将GUI导航到关键位置.然后我将代码设置为以慢速模式运行,同时我得到一些视觉表示,正在执行哪些行(可能是某种缩小的代码视图).例如,我可以将执行速度设置为0.0001x.我相信我会以这种方式获得非常好的可视化,无论问题是在特定模块内部,还是在模块之间的通信中.
这存在吗?我的具体需求是在Python中,但我有兴趣在任何语言中看到这样的功能.
我只是练习了一些愉快的工程并编写了大量代码,而没有像往常一样测试每一步。
所以现在我有几百行代码在某处有错误......我正在使用 pgAdmin III 编写 Python 并在他们的查询工具中编写它,该工具用于正常的 SQL 查询。我不会通过我的 Python 代码,因为我不需要这个特定问题的帮助。相反,我在寻找一个工具,该工具将为我提供发生错误的 PL/Python 函数中的确切位置。要查看我想要这个的原因,以下是我收到的错误消息,并且我有调试发生错误的方法:
********** Error **********
ERROR: invalid input syntax for integer: "atextstring"
SQL state: 22P02
Run Code Online (Sandbox Code Playgroud) 我有一张“收据”表。我有列customer_id(谁有收据)和receipt_number。对于每个客户,receipt_number 应该从 1 开始,并且是一个序列。这意味着customer_id 和receipt_number 将是唯一的。我怎样才能优雅地做到这一点。我可以将内置序列功能与 CREATE SEQUENCE 或类似功能一起使用吗?似乎我必须为每个客户创建一个序列,这当然不是一个优雅的解决方案。
编辑:必须有一种线程安全和白痴安全的方式来做到这一点。这应该是一个非常简单/常见的需求。
postgresql ×6
debugging ×2
plperl ×2
plpgsql ×2
sqlite ×2
apache-flex ×1
database ×1
dynamic-sql ×1
etl ×1
facebook ×1
fact-table ×1
flex3 ×1
flexbuilder ×1
java ×1
mysql-proxy ×1
performance ×1
python ×1
rewrite ×1
star-schema ×1
types ×1