我想在PostgreSQL中创建一个新的数据类型和新的运算符。 我在文档中看到,可以在C中合并新的源文件(例如)并创建新的数据类型和运算符。 PostgreSQL可以在这个方向上扩展。有关更多信息,请访问:documentation
但PostgreSQL也有开源,我可以改变源代码并添加新的数据类型,编译新版本。
有了这个,我想知道在PostgreSQL中包含新数据类型的每种方法的区别,优缺点。我非常关心查询处理的性能。 谢谢。
答案 0 :(得分:8)
如果您修改PostgreSQL,则必须维护整个代码库,并且每次要在次要版本之间进行升级时都必须进行修补。如果你进行了扩展,你只需要维持一点延伸。如果您想要这样做,那么分发小型扩展程序也会轻松得多。
答案 1 :(得分:0)
我完全同意Jachim的回答。 另一件事是:
在PostgreSQL中开发自己的C语言扩展(相当)有很好的文档记录 - 只需编译一个代码函数并编写相应的函数即可完成简单的程序。添加自定义数据类型有点复杂,但仍然可行。我开发的扩展甚至用C ++编写,在PostgreSQL的普通C之间只有一些包装胶水 - 这使得开发变得更加灵活。
然而,改变PostgreSQL核心在如何开始和你做什么方面更复杂。最后,你归档了相同的内容。
总结一下:C语言功能为您提供了所有优势:
我看不到改变PostgreSQL核心的任何优点,但有许多缺点:
如果您需要使用C语言界面的许多不同方法的示例,请查看PostGis源代码 - 它们几乎使用所有函数类型并且在代码中有很多花哨的技巧。
答案 2 :(得分:0)
内部运算符和数据类型以及自定义运算符和数据类型之间没有区别 - 然后它具有相同的性能。外部和内部实现遵循相同的规则和模式。所以没有理由为它进行黑客攻击。
我们已经在GoodData中修补了PostgreSQL - 我们也有自己的扩展 - 在任何可能和实用的地方,我们使用自定义扩展 - 如果不可能,我们使用自己的黑客 - 从9.2,9.3的后端,一些增强pg_dump和psql,统计 - 但我们公司有一个活跃的PostgreSQL黑客。这不常见。对于没有PostgreSQL黑客经验的用户来说,正在创建扩展安全且性能良好的解决方案。