查看源代码 snmpa_local_db (snmp v5.18)

SNMP 内置数据库

模块 snmpa_local_db 包含使用 SNMP 内置数据库实现表(和变量)的函数。数据库存在两个实例,一个易失性实例和一个持久性实例。易失性数据库使用 ets 实现。持久性数据库使用 dets 实现。

此数据库存在一个伸缩性问题。

  • 对于大型表,插入和删除效率低下。

这个问题最好使用 Mnesia 来解决。

以下函数描述了 snmpa_local_db 的接口。每个函数都有一个 Mnesia 等效项。参数 NameDb 是一个元组 {Name, Db},其中 Name 是被管理对象的符号名称(如 MIB 中定义),Dbvolatilepersistentmnesia 是不可能的,因为所有这些函数都是 snmpa_local_db 特有的。

常用数据类型

在下面定义的函数中,适用以下限制

  • Db = volatile | persistent

另请参阅

ets(3), dets(3), snmp_generic(3)

摘要

函数

此函数可用于手动将数据库转储到文件。

对表执行 ets/dets 匹配。

等效于 print/2

等效于 print/2

在屏幕上打印数据库的内容。这对于调试很有用,因为 STANDARD-MIBOTP-SNMPEA-MIB(以及可能您自己的 MIB)存储在 snmpa_local_db 中。

创建表。如果表已存在,则旧副本将被销毁。

在表中创建一行。Row 是一个元组,包含所有列的值,包括索引列。

删除表。

删除表中的行。

检查表是否存在。

从表的行中获取列值(元素)。

Row 是一个元组,包含所有列的值,包括索引列。

更新此表中指定行的列对象。

函数

-spec dump() -> ok | {error, Reason} when Reason :: term().

此函数可用于手动将数据库转储到文件。

-spec match(Table, Pattern) -> [Match]
               when
                   Table :: snmpa:name_db() | snmpa:name(),
                   Pattern :: ets:match_pattern(),
                   Match :: term().

对表执行 ets/dets 匹配。

有关 Pattern 和返回值的说明,请参阅 ets:match/2

-spec print() -> term().

等效于 print/2

-spec print(Table) -> term() when Table :: snmpa:name().

等效于 print/2

-spec print(Table, Db) -> term() when Table :: snmpa:name(), Db :: volatile | persistent.

在屏幕上打印数据库的内容。这对于调试很有用,因为 STANDARD-MIBOTP-SNMPEA-MIB(以及可能您自己的 MIB)存储在 snmpa_local_db 中。

Table 是数据库中表的原子。当未提供名称时,将显示整个数据库。

请注意,这些函数实际上不使用 io:format/2 打印,而是(仅)返回信息。如果在 shell 中执行,则信息将显示(可能会被截断)在那里。

更好的用法是

	  io:format("~p~n", [snmpa_local_db:print()]).
-spec table_create(Table) -> boolean() when Table :: snmpa:name_db() | snmpa:name().

创建表。如果表已存在,则旧副本将被销毁。

如果 NameDb 参数指定不正确,则返回 false,否则返回 true

数据库(仅指定表名)默认为 volatile

链接到此函数

table_create_row(Table, RowIndex, Row)

查看源代码
-spec table_create_row(Table, RowIndex, Row) -> boolean()
                          when
                              Table :: snmpa:name_db() | snmpa:name(),
                              RowIndex :: snmp:row_index(),
                              Row :: tuple().

在表中创建一行。Row 是一个元组,包含所有列的值,包括索引列。

数据库(仅指定表名)默认为 volatile

-spec table_delete(Table) -> true when Table :: snmpa:name_db() | snmpa:name().

删除表。

数据库(仅指定表名)默认为 volatile

链接到此函数

table_delete_row(Table, RowIndex)

查看源代码
-spec table_delete_row(Table, RowIndex) -> boolean()
                          when Table :: snmpa:name_db() | snmpa:name(), RowIndex :: snmp:row_index().

删除表中的行。

数据库(仅指定表名)默认为 volatile

-spec table_exists(Table) -> boolean() when Table :: snmpa:name_db() | snmpa:name().

检查表是否存在。

数据库(仅指定表名)默认为 volatile

链接到此函数

table_get_element(Table, RowIndex, Col)

查看源代码 (自 OTP 27.0 起)
-spec table_get_element(Table, RowIndex, Col) -> {value, Value} | undefined
                           when
                               Table :: snmpa:name_db() | snmpa:name(),
                               RowIndex :: snmp:row_index(),
                               Col :: snmp:column(),
                               Value :: term().

从表的行中获取列值(元素)。

数据库(仅指定表名)默认为 volatile

此函数已经存在很长时间,但没有正确的 since 标签,因此为了简化,我们将 since 标签设置为记录它的时候。

链接到此函数

table_get_row(Table, RowIndex)

查看源代码
-spec table_get_row(Table, RowIndex) -> Row | undefined
                       when
                           Table :: snmpa:name_db() | snmpa:name(),
                           RowIndex :: snmp:row_index(),
                           Row :: tuple().

Row 是一个元组,包含所有列的值,包括索引列。

数据库(仅指定表名)默认为 volatile

链接到此函数

table_set_elements(Table, RowIndex, Cols)

查看源代码 (自 OTP 27.0 起)
-spec table_set_elements(Table, RowIndex, Cols) -> boolean()
                            when
                                Table :: snmpa:name_db() | snmpa:name(),
                                RowIndex :: snmp:row_index(),
                                Cols :: [{Col, Value}],
                                Col :: snmp:column(),
                                Value :: term().

更新此表中指定行的列对象。

数据库(仅指定表名)默认为 volatile

此函数已经存在很长时间,但没有正确的 since 标签,因此为了简化,我们将 since 标签设置为记录它的时候。