【问题标题】:Extensibility on PostgreSQLPostgreSQL 上的可扩展性
【发布时间】:2016-01-03 17:17:17
【问题描述】:

我创建了自己的 R-tree:“rtree.h”

我想用我自己的数据结构(使用 PostGis)在 postgres 中创建一个扩展,我已经阅读了有关 Interfacing Extensions To Indexes 的信息,现在我正在阅读一些示例 here,但老实说,我不明白完全不知道如何使用自己的 R-Tree 创建可扩展性,我了解运算符、索引等的概念,但我不知道该怎么做。

那么,如何将我的文件连接到 PostGis,然后在 PostgreSQL 上创建可扩展性?

既然可扩展性是函数,就拿 PostgreSQL 网站上的一个例子来说吧:

CREATE OR REPLACE FUNCTION my_consistent(internal, data_type, smallint, oid, internal)
RETURNS bool
AS 'MODULE_PATHNAME'
LANGUAGE C STRICT;

它究竟是如何工作的? MODULE_PATHNAME 等于 /path/rtree.h?

【问题讨论】:

    标签: database postgresql data-structures postgis


    【解决方案1】:

    关于如何在 postgres 中定义用 C 编写的函数,您必须首先编译对象,因此在 Linux 系统上'MODULE PATHNAME' 将是rtree.so,在 Windows 上可能是一个 dll。函数目录here 中的代码提供了 C 中函数定义的概要,以及用于在 Postgres 中声明函数的 SQL 函数。

    就如何实现 R-Tree 而言,我将使用您已经找到的 GIST 资源。我不认为你可以只编译你的R-Tree.c 程序,它就可以工作,你必须使用 GIST 结构。看起来 was once 在 Postgres 主干中有一个 r-tree 实现,您可以找到它,或者您可以查看当前主干中的这个 B-tree gist 扩展:https://github.com/postgres/postgres/tree/master/contrib/btree_gist


    【讨论】:

    猜你喜欢
    • 2010-09-18
    • 2012-12-08
    • 2017-09-25
    • 2015-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多