我一直在使用PostgreSQL一点最近的一件事情我认为是很酷的是你可以使用其他语言SQL脚本功能,诸如此类的东西。但是,当这是真的有用吗?

例如,该文件说,主要用于PL/Perl是,这是很好的文本操纵。但是,这不是更多的东西,应该是编入应用程序?

第二,是否有任何有效理由使用不可信的语言?这似乎是作出这样,任何用户都可以执行任何操作将是一个糟糕的想法在一个生产系统。

PS。奖励点,如果有人可以让 PL/LOLCODE 似乎是有用的。

有帮助吗?

解决方案

"不,[文本操纵的]更多的东西,应该是编入应用程序?"

通常,是的。普遍接受的"三层"应用程序的设计数据库的说,你的逻辑应该在中间层之间的客户和数据库。然而,有时你需要一些逻辑中的一个触发或需要索引的功能,要求一些代码被放入数据库。在这种情况下,所有通常的"的语言应该使用吗?"的问题上来。

如果你只需要一点点的逻辑,大多数-便携式语言应该使用(pl/pgSQL).如果你需要做一些严重的程虽然,你可能会更好使用更多的语言表(也许pl/红宝石).这将永远是一个判断的呼吁。

"是否有任何有效理由使用不可信的语言?"

如上所述,是的。再次,把直接的文件访问的(例如)进入你的中间层是最好的时候可能的,但是如果你需要火的东西基于触发(可能需要访问的数据不可直接到你的中间层次),然后你需要的不信任的语言。这不是理想,并且一般应当是可以避免的。和你绝对需要保护的访问。

其他提示

@Mike:这种想法让我紧张。我听说过很多次"这应该是无限的便携式",但是当问题是问:你实际上预见将有任何移植?答案是:没有。

坚持到最低的共同标准可以真正损害性能,可以介绍的抽象层(奥姆的,PHP公设辩护人等)。我的意见是:

  • 评估实际上如果有一个需要支持多个数据库。例如,如果你正在写一个开放源码网络应用程序,有机会,你需要支持MySQL and PostgreSQL至少(如果不MSSQL和Oracle)
  • 后评价,作出最大的平台,你决定

并且顺便说一句:你是混合的关系与非相关数据库(CouchDB是 一个关系数据库的可比较Oracle例如),进一步彰显的一点,认为需要便携性是许多时间大大估计过高。

这些天,任何"唯一"或"酷"功能在DBMS让我非常紧张。我打破了皮疹,必须停止工作,直到瘙痒。

我只是不想被锁定在一个平台不必要的。假设你在建造一个大块的系统在PL/Perl内部数据库。或C#内SQL服务器,或PL/SQL内Oracle,有很多例子*.

现在你突然发现你选择的平台,无法扩展。或者是不够快。或者什么的。更糟糕的是,有一个新的孩子数据库块(喜欢的东西MonetDB,CouchDB,缓存,说但是,冷得多),会解决你所有的问题(甚至如果你唯一的问题,像我这样的,是具有一个酷数据库平台)。你不能换到它没有重新编码的一半应用程序。

(*无可否认,支付的产品都在一定程度上寻求把你锁在通过说服你利用其独特的特征,这不是一个指控可以直接提出的免费提供的,但效果是相同)。

所以这是一个夸夸其谈的第一部分的问题。心脏的感觉,虽然。

是否有任何有效理由使用 不可信的语言?它似乎喜欢 使这样,任何用户都可以执行 任何操作将是一个坏主意

我的天啊,是的,它不!一种"Perl注的攻击"?几乎值得这样做只是为了看看会发生什么,我有想法。

为哲学的原因,以上概述的我想我会通过在PL/LOLCODE的挑战。虽然我有点惊讶地发现这是一个链接到现存的东西.

从我的角度看,我猜答案是这取决于'.

有一种论点,即操作的数据所属的层数据库,使得业务的逻辑不需要过度关注如何操纵事情发生,它只知道它拥有的。

另一个非常好的理由来处理数据的数据库层是如果数据的数量正在嘎吱嘎吱意味着网络带宽,将成为一个问题。我曾经有进行分类非常大量的数据。处理这在应用层严重限制所需的时间将所有数据在整个网络进行处理。

然后我写了一个分算法在PL/pgSQL和它的工作快得多。

关于不信任的种语言,我听到了一个播客从Josh孙磊巴克斯(a postgres倡导者)他们讨论了一个应用程序的postgresql把数据从MySQL作为其一部分的处理,以便通信本身是由postgres服务器。我不记得的全部细节,我认为这是对的 牙线每周播客 这是一个相当有趣的讨论的历史PostGRESQL及的一些问题则是投入。

不信任的版本的程序的语言能让你访问I/O系统。这能派上用场,如果你需要一个触发或东西发送电子邮件或连接一个插座服务器发送一个弹出通知。有大量的使用这种类型的事情,因为postgresql隔离水平,你罐安全地做这样的事情。你可以把检查站的功能,所以如果交易失败的电子邮件或任何不出去。美好的事情,这样做是它消除了逻辑从客户,并把它放在服务器上。

我想大多数其他语言提供所以,如果你开发的在于语言上的一个定期的基础上,你可以感觉到舒服写db功能,触发器,等等。用这些功能是提供一个控制的数据如接近的数据成为可能。

一个例子的有用的存储程序,我最近写了在一个外部的语言,就不可能在pl/sql是一个版本的'f'允许SQL表的发电机,以挑选一个空间的大多数可用空间在运行时间。

我用plperlu,这是比较简单,虽然我必须小心数据输入。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top