Skip to content

空间和向量操作

sqala支持空间和向量方面的专用操作,为专业场景提供支持。

空间操作

sqala支持ISO/IEC 13249中定义的部分标准时间操作,支持MySQL和PostgreSQL的PostGIS插件。

函数对应的SQL函数
stGeomFromText(a, srid)ST_GeomFromText(a, srid)
stAsText(a)ST_AsText(a)
stAsGeoJson(a)ST_AsGeoJSON(a)
stGeometryType(a)ST_GeometryType(a)
stX(a)ST_X(a)
stY(a)ST_Y(a)
stArea(a)ST_Area(a)
stLength(a)ST_Length(a)
stDistance(a, b)ST_Distance(a, b)
stContains(a, b)ST_Contains(a, b)
stWithin(a, b)ST_Within(a, b)
stIntersects(a, b)ST_Intersects(a, b)
stTouches(a, b)ST_Touches(a, b)
stOverlaps(a, b)ST_Overlaps(a, b)
stCrosses(a, b)ST_Crosses(a, b)
stDisjoint(a, b)ST_Disjoint(a, b)
stIntersection(a, b)ST_Intersection(a, b)
stUnion(a, b)ST_Union(a, b)
stDifference(a, b)ST_Difference(a, b)
stSymDifference(a, b)ST_SymDifference(a, b)

向量操作

随着AI应用日渐火热,各种关系型数据库也陆续推出了向量运算功能,sqala也支持了向量运算符并做了一些数据库兼容工作,将字段类型设置成sqala.metadata.Vector即可应用此类运算符,方法名和转换规则如下:

方法含义PostgreSQL(pgvector插件)Oracle 23aiMySQL 9.0(HeatWave)
euclideanDistance(a, b)欧氏距离a <-> bL2_DISTANCE(a, b)DISTANCE(a, b, 'EUCLIDEAN')
cosineDistance(a, b)余弦距离a <=> bCOSINE_DISTANCE(a, b)DISTANCE(a, b, 'COSINE')
dotDistance(a, b)负内积a <#> bINNER_PRODUCT(a, b) * -1DISTANCE(a, b, 'DOT')
manhattanDistance(a, b)曼哈顿距离a <+> bL1_DISTANCE(a, b)