【问题标题】:PostgreSQL procedural languages: to choose?PostgreSQL 过程语言:选择?
【发布时间】:2010-10-03 06:47:28
【问题描述】:

2 年来,我一直在使用 PostgreSQL,玩弄 Wikipedia 的数百万超链接等。我要么直接通过发送 SQL 命令来做我的事情,要么我在 python 中编写一个客户端脚本来管理一百万个查询,当这不能有效地(高效且有效地)手动完成时。

我会在我的 32 位笔记本电脑上运行我的 python 脚本,并让它与运行 PostgreSQL 的 6000 美元的 64 位服务器通信;因此,我将拥有额外的 2.10 Ghz、3 GB RAM、psyco 和多线程 SQL 查询管理器。

我现在意识到是时候升级了。我需要学习使用过程语言(PL)的服务器端脚本;我真的需要减少网络流量及其固有的序列化开销。

现在,我真的不想研究所有的 PL。知道我已经了解 python,并且我正在寻找努力和语言效率之间的方法,你们认为我应该安装、学习和使用什么 PL,为什么以及如何?

【问题讨论】:

    标签: python postgresql


    【解决方案1】:

    既然您已经了解 python,那么 PL/Python 应该值得一看。而且您听起来像是为数据库查询编写 SQL,所以 PL/SQL 是它的自然扩展。

    PL/SQL 感觉就像 SQL,只是包含了您对 SQL 所期望的所有东西,比如整行的变量和过程语言的常用控制结构。它适合您通常与数据库交互的方式,但它并不是有史以来最优雅的语言。关于 PL/Python 我不能说什么,因为我从未使用过它,但既然你知道 python,它应该很容易翻阅 some examples 看看你是否喜欢它。

    【讨论】:

    • 是的。我在 PL/Python 或简单的 PL\pgSQL 之间犹豫不决。我知道 python 很慢;我想知道 PL/pgSQL 是否更快?我还想知道如何找出哪些 PL 已经集成到我的 postgresql 服务器中?感谢您的快速答复!
    • 与您通过网络在笔记本电脑上编写脚本相比,这两种变体都应该非常快:)。使用 debian,应该已经安装了 PL/pgSQL,并且对于其他语言,有可用的软件包。
    • 我没有尝试过 PL/Python,但我想它的速度与 PL/pgSQL 非常相似。毕竟它们都是解释型语言。如果您真的需要速度(而且您可能不需要),您需要用 C 或 C++ 编写函数并构建 DLL/共享对象。
    • SELECT * FROM pg_language 将显示您当前数据库中安装的语言。检查 pg_pltemplate 以获取您可以安装的列表。
    • 谢谢各位!我确实决定使用 PL/Python。我希望有一天有人会 meke psyco64!至于网络开销,我不确定它是否真的那么糟糕,因为网络似乎只会导致更多延迟。如果客户端是多线程的,它真的不关心延迟和+2.1Ghz?
    【解决方案2】:

    为什么不能在数据库服务器上运行 Python?这具有最少的复杂性——您可以运行已有的程序。

    【讨论】:

      【解决方案3】:

      我和你的情况完全一样,在一段时间后放弃 PL/SQL 后选择了 PL/Python。这是一个很好的决定,回顾过去。有些事情让我觉得 unicode 问题(客户端编码、字节序列)和特定的 postgres 数据类型(bytea)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-19
        • 1970-01-01
        • 2023-04-07
        相关资源
        最近更新 更多