snmpa_local_db
snmpa_local_db
模块
snmpa_local_db
模块摘要
SNMP内置数据库
描述
该模块snmpa_local_db
包含使用SNMP内置数据库实现表(和变量)的功能。数据库存在两个实例,一个是volatile,一个是persistent。易失性数据库是用ets实现的。持久性数据库使用dets实现。
这个数据库存在缩放问题。
- 对于大型表格,插入和删除效率不高。 这个问题最好通过使用Mnesia来解决。 以下函数描述了snmpa_local_db的接口。 每个函数都有一个Mnesia等价物。 参数NameDb是一个元组{Name,Db},其中Name是被管理对象的符号名称(在MIB中定义),Db可以是volatile或persistent。 mnesia是不可能的,因为所有这些函数都是snmpa_local_db特定的。 常用数据类型在下面定义的函数中,使用以下类型:
NameDb = {Name, Db}
Name = atom(), Db = volatile | persistent
RowIndex = [int()]
Cols = [Col] | [{Col, Value}], Col = int(), Value = term()
其中,RowIndex
表示OID的最后部分,用于指定表中行的索引。Cols
是获取操作时的列号列表,以及设置操作时的列号和值列表。
输出
dump() -> ok | {error, Reason}
类型
此函数可用于手动将数据库转储到文件中。
match(NameDb, Pattern)
在表上执行ETS/Dets匹配。有关Pattern
以及返回值。
print()print(TableName)print(TableName, Db)
类型
在屏幕上打印数据库的内容。这对于调试很有用,因为STANDARD-MIB
和OTP-SNMPEA-MIB
(也可能是你自己的MIB)存储在snmpa_local_db
中。
TableName
是数据库中表的原子。当不提供名称时,将显示整个数据库。
table_create(NameDb) -> bool()
创建一个表。如果表已经存在,则旧副本将被销毁。
如果NameDb参数指定不正确,则返回false,否则返回true。
table_create_row(NameDb, RowIndex, Row) -> bool()
类型
在表中创建一行。Row
是包含所有列(包括索引列)的值的元组。
table_delete(NameDb) -> void()
删除一个表。
table_delete_row(NameDb, RowIndex) -> bool()
删除表中的行。
table_exists(NameDb) -> bool()
检查表是否存在。
table_get_row(NameDb, RowIndex) -> Row | undefined
类型
Row
是包含所有列(包括索引列)的值的元组。
另见
ets(3), dets(3), snmp_generic(3)