`
cryolite
  • 浏览: 581474 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

mnesia数据库表的id

阅读更多
对于mnesia数据库表有时候需要有一个id字段,就像关系数据库的主键.
最简单的办法是用uuid做id,但是我们希望此id是整数递增的.或者用{node(), erlang:now()} 做id也是不错的办法.

类似于一个set集合(意思是集合中不可能两个相同的键同时存在),每个键对应的值将作为id,

方法mnesia:dirty_update_counter(Tab, Key, Incr)的特点:
Tab: 某个存放Key对应的最新键值的mnesia数据库表,这个表保存key-value
Key: 键名
Incr: 键值递增量

这个方法的意义在于:
1.它的效率很高;
2.这个方法是原子操作,不管有没有在事务中使用,它总是一个原子操作
如果两个进程同时调用此方法,每个调用都会得到正确的更新值.


假设我们设计的feature表需要有一个id,这个id是唯一且递增的,

1.创建如下结构的mnesia数据库表
-record(unique_id, {item, uid})

2.每为feature表加入一条新记录时,需要得到新的id值:
mnesia:dirty_update_counter(unique_id, feature, 1)
这里我们把表名作为Key,通过此方法即得到这个表当前的id

以上暂时没有考虑集群的情况
分享到:
评论
1 楼 zdx3578 2010-11-20  
mnesia:dirty_update_counter     {aborted,{combine_error,unique_id,update_counter}  ,unique_id表类型应该为默认set。其他类型就出这个错。

相关推荐

    mnesia数据库文档

    5. **模式定义**:Mnesia允许用户定义数据库模式,包括表、索引和属性等,提供了一种结构化的方式来组织和访问数据。 6. **查询语言**:Mnesia提供了自己的查询语言,允许用户执行复杂的查询和数据操作,同时也有对...

    Mnesia用户手册 4.4.10版.rar

    Mnesia是一个分布式数据库管理系统(DBMS),适合于电信和其它需要持续运行和具备软实时特性的Erlang应用。 目 录 1 、介绍 . . .. . .. . . .. . 4 1.1 关于 Mnesia . . .. . .. . . .. . 4 1.2 Mnesia ...

    erlang mnesia 数据库基本查询

    Mnesia是一个分布式数据库管理系统,适合于电信和其它需要持续运行和具备软实时特性的Erlang应用,越来越受关注和使用,但是目前Mnesia资料却不多,很多都只有官方的用户指南。下面的内容将着重说明 如何做 Mnesia ...

    备忘录:Mnesia分布式数据库的简单+强大接口

    **Mnesia:分布式数据库的简单而强大的接口** Mnesia是一个高度可扩展的分布式数据库管理系统,主要为实时系统设计,尤其适用于Erlang和Elixir编程语言。它作为OTP(Open Telephony Platform)的一部分,提供了对高...

    mnesiam:Mnesiam使Mnesia数据库的群集变得容易

    Mnesiam使Mnesia数据库的群集变得容易。 可以在上找到模块文档。 安装 该软件包可以通过添加安装mnesiam你在依赖列表mix.exs : def deps do [{ :mnesiam , " ~> 0.1.1 " }] end 在您的应用程序之前,请确保已...

    Mnesia用户手册.zip

    《Mnesia用户手册》是专为理解和操作Erlang编程语言中的Mnesia数据库管理系统而编写的详尽指南。Mnesia是Erlang OTP (Open Telephony Platform) 库中的一个核心组件,它是一个强大的分布式数据库系统,特别适用于...

    Mnesia 用户手册中文版 pdf

    Mnesia的系统信息部分涵盖了数据库配置数据、内核转储、表转储、检查点、文件操作以及在启动时加载表等。Mnesia还具备从通信失败中恢复、事务恢复、备份、回滚和灾难恢复等功能。 除此之外,Mnesia支持与SNMP(简单...

    erlang——Mnesia用户手册.pdf

    1.2.Mnesia.数据库管理系统(DBMS 2、开始.Mnesia 2.1.首次启动.Mnesia 2.2.一个示例 3、构建.Mnesia.数据库 3.1.定义模式 3.2.数据模型 3.3.启动.Mnesia 3.4.创建新表 4、事务和其他上下文存取 ...

    cachet:Mnesia的内存光盘分派器

    [WIP]香气 cachet的健忘症。 前言 Mnesia数据库对于您的可用内存而言开始变... mnesia数据库,其中有许多disc_copies表要保留在内存中。 mnesia数据库,其中一些数据需要快速访问,而许多数据则需要通过慢速访问来保存

    Mnesia用户手册(docx版)

    - **启动 Mnesia**:启动数据库涉及到初始化Mnesia系统,配置所需的表和模式。 - **创建新表**:创建新表时,需要指定表的名称、表的类型(例如,是正交表还是ADT)、键的类型以及记录的结构。表的大小和内存分配...

    Mnesia用户手册(PDF版本)

    - **数据库模式动态重配置**:可以在运行时修改数据库模式,包括添加或删除表、更改表结构等。 - **表属性**:表可以被定义为具有不同的属性,例如位置(Location)、复制(Replication)和持久化(Persistence)。 ...

    Mnesia table fragmentation 过程及算法分析

    Linear Hashing 算法允许数据库表在运行时动态地增加或减少分片,而且每次只需要增加或减少一个分片。这为分片的扩展提供了便利。当需要扩充分片时,受影响的分片中将近一半的数据项会迁移到新的分片中;而缩减分片...

    Mnesia User's Guide

    • Mnesia provides an introduction to Mnesia. • Getting Started introduces Mnesia with an example database. Examples are included how to start an Erlang session, specify a Mnesia database directory, ...

    ecto_mnesia:Mnesia Erlang术语数据库的Ecto适配器

    **ecto_mnesia:Ecto适配器与Mnesia Erlang术语数据库** ecto_mnesia是Ecto框架的一个适配器,它允许开发者在Elixir应用中使用Mnesia,一个内置在Erlang虚拟机(VM)中的分布式、事务性的术语数据库。Mnesia以其高...

    Erlang Mnesia

    ### Erlang Mnesia:分布式数据库管理系统 #### 一、引言与概述 Mnesia是一款由爱立信(Ericsson)开发并维护的分布式数据库管理系统(DBMS),它被设计用于支持电信应用以及其他需要持续运行和具备软实时特性的...

    Mnesia Overview

    #### 一、Mnesia数据库管理系统简介 Mnesia是一个专为电信应用设计的分布式、容错数据库管理系统(DBMS)。它由爱立信公司的计算机科学实验室开发,旨在解决传统商用数据库管理系统无法满足的特定需求。在电信系统...

    mnesia_pg:Postgres后端通过mnesia_ext到Mnesia

    “mnesia_pg:Postgres后端通过mnesia_ext到Mnesia” 这个标题揭示了一个项目,它的目标是将PostgreSQL数据库作为Erlang的Mnesia分布式数据库系统的一个后端。Mnesia_ext是Mnesia的一个扩展,它允许添加自定义的数据...

Global site tag (gtag.js) - Google Analytics