Apache Age Intro-2
#postgres #database #apacheage #agedb

在本文中,我讨论了Apache Age中的数据类型。 Age使用称为AgType的自定义数据类型,这是唯一按年龄返回的数据类型。下面我们将年龄分类为简单数据类型:

1. Null:

在Cypher中,NULL用于表示缺失或未定义值。从概念上讲,零是指缺失的未知值',并且与其他值的对待有所不同。例如,从顶点获取属性的财产没有说会产生无效的财产。
不知道两个值并不意味着它们是相同的值。因此表达式null = null产生无效,而不是真实。

SELECT *
FROM cypher('graph_name', $$
    RETURN NULL
$$) AS (null_result agtype);
A null will appear as an empty space.

Result:

null_result

2. Integer:

整数类型存储了整数,即没有分数组件的数字。整数数据类型是一个64位字段,可存储-9,223,372,036,854,775,808至9,223,372,036,854,775,807。试图将值存储在此范围之外将导致错误。

类型整数是共同的选择,因为它在范围,存储尺寸和性能之间提供了最佳的平衡。通常仅在磁盘空间高度时才使用小型类型。 bigint类型的设计用于当整数类型的范围不足时使用。

SELECT *
FROM cypher('graph_name', $$
    RETURN 1
$$) AS (int_result agtype);
Result:

int_result
1

3. Float:

数据类型Float是一种不精确的,可变的精确数字类型,符合IEEE-754标准。

不精确意味着某些值不能精确地转换为内部格式并作为近似值存储,因此存储和检索值可能会显示出轻微的差异。管理这些错误及其如何通过计算传播是数学和计算机科学整个分支的主题,除了以下几点:

如果您需要精确的存储和计算(例如货币金额),请改用数字类型。

如果您想对这些类型进行复杂的计算,尤其是在边界案例(Infinity,Underflow)中依靠某些行为,则应仔细评估实现。

SELECT *
FROM cypher('graph_name', $$
    RETURN 1.0
$$) AS (float_result agtype);
Result:

float_result
1.0

4. Numeric:

类型数字可以用大量数字存储数字。特别建议存储需要精确性的货币金额和其他数量。用数字值计算在可能的情况下产生精确的结果,例如加法,减法,乘法。但是,与整数类型或浮点类型相比,数字值的计算非常慢。

我们在下面使用以下术语:数字的精度是整数中有显着数字的总数,即小数点两侧的数字数。数字的比例是小数点右侧的小数位数中的小数位数计数。因此,数字23.5141的精度为6,刻度为4。整数可以视为零。

除了普通数字值外,数字类型允许特殊值NAN,这意味着不是数字。 NAN上的任何操作都会产生另一个NAN。在SQL命令中将此值写为常数时,您必须在其周围列出引号,例如更新表集x =ânanâ。

SELECT *
FROM cypher('graph_name', $$
    RETURN 1.0::numeric
$$) AS (numeric_result agtype);
Result:

numeric_result
1.0::numeric

5. Bool:

年龄提供标准的Cypher型布尔值。布尔类型可以具有多种状态:true,false和第三状态,未知状态,以agtype null值表示。

布尔常数可以通过关键字为true,false和null中的Cypher查询表示。

SELECT *
FROM cypher('graph_name', $$
    RETURN TRUE
$$) AS (boolean_result agtype);
Unlike Postgres, AGE’s boolean outputs as the full word, ie. true and false as opposed to t and f.

Result:

boolean_result

6. String:

agtype字符串字符串字符串可以包含以下逃生序列:

Escape Sequence Character
\t  Tab
\b  Backspace
\n  Newline
\r  Carriage Return
\f  Form Feed
\’    Single Quote
\”    Double Quote
\\  Backslash
\uXXXX  Unicode UTF-16 code point (4 hex digits must follow the \u)

输入/输出格式

SELECT *
FROM cypher('graph_name', $$
    RETURN 'This is a string'
$$) AS (string_result agtype);
Result:

string_result
“This is a string”

✔️ References:

  1. https://age.apache.org/
  2. https://github.com/apache/age
  3. https://www.interdb.jp/pg/index.html
  4. https://joefagan.github.io/age_docs/