热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Mnesia文档】2、概述

ErlangOTPVersion:24MnesiaDocumentationVersion:4.20导航:Database-Mnesia-Overview翻译内容来自官方文档概述电

Erlang/OTP Version: 24

Mnesia Documentation Version: 4.20

导航:Database - Mnesia - Overview

翻译内容来自官方文档



概述

电信系统中的数据管理有许多方面,传统的数据库管理系统(DBMS)解决了其中的一些方面,但不是全部。特别是,许多不间断系统需要高水平的容错能力,再加上DBMS与应用程序在同一地址空间中运行的要求,使我们实现了一种新的DBMS,称为Mnesia。

Mnesia在中实现,并与Erlang紧密耦合。它提供了电信系统所必需实现的容错功能。

Mnesia是一种多用户分布式DBMS,专门为用Erlang编写的工业级电信应用程序而设计,Erlang也是预期的目标语言。Mnesia试图解决典型电信系统所需的所有数据管理问题,并具有许多传统DBMS中通常不具备的功能。

电信应用需要广泛的功能组合,这些功能通常不是传统DBMS提供的。Mnesia旨在满足以下要求:



  • 快速实时键值查找

  • 复杂的非实时查询(主要用于操作和维护任务)

  • 分布式数据(由于应用程序的分布式特性)

  • 高容错性

  • 动态重构

  • 复杂对象

Mnesia解决了电信应用所需的典型数据管理问题,使其与大多数其他DBMS不同。它结合了传统DBMS中的许多概念(如事务和查询)与电信应用数据管理系统中的概念,如:



  • 快速实时操作

  • 用于容错的可配置复制

  • 无服务中断的动态重构

Mnesia与Erlang的紧密耦合也是独一无二的。它几乎把Erlang变成了一种数据库编程语言,这带来了许多好处。最重要的是,DBMS使用的数据格式与用于操作数据的编程语言使用的数据格式之间不匹配的阻抗完全消失。


Mnesia数据库管理系统


特点

Mnesia具有以下特点,这些功能结合在一起可生成以Erlang编写的容错分布式数据库管理系统(DBMS):



  • 可以在运行时动态重新配置数据库架构。

  • 表可以声明为具有位置、复制和持久性等属性。

  • 可以将表移动或复制到多个节点以提高容错性。系统中的其他节点仍然可以访问表以读取、写入和删除记录。

  • 表位置对程序员来说是透明的。程序寻址表名,系统本身跟踪表位置。

  • 事务可以是分布式的,并且可以在单个事务中执行多个操作。

  • 多个事务可以并发运行,它们的执行由Mnesia完全同步,从而确保没有两个进程同时操作相同的数据。

  • 可以为事务分配在系统中的所有节点上执行的属性,也可以不在任何节点上执行。

  • 可以使用脏操作绕过事务,这样可以减少开销并快速运行。

下面几节将详细介绍上述所有特点。


查询列表理解

查询列表理解(QLC)可以与Mnesia一起使用,以生成增强其操作能力的专用函数。QLC有自己的文档作为OTP文档集的一部分。与Mnesia一起使用时,QLC的主要优势是:



  • QLC可以优化Mnesia的查询编译器,从本质上说,这使系统更加高效。

  • QLC可用作Mnesia的数据库编程语言。它包括一个称为列表理解的表示法,可用于对一组表执行复杂的数据库查询。

有关QLC的更多信息,请参阅STDLIB中的QLC手册页。


什么时候使用Mnesia

Mnesia非常适合以下应用:



  • 需要复制数据。

  • 执行复杂的数据查询。

  • 需要使用原子事务同时安全地更新多个记录。

  • 需要软实时特性。

Mnesia不适合以下应用:



  • 处理纯文本或二进制数据文件。

  • 只需要一个可以存储在光盘上的查找字典。此类应用程序可使用标准库模块dets,它是ets模块的基于光盘的版本。有关dets的更多信息,请参阅STDLIB中的dets手册页。

  • 需要光盘记录设备。此类应用程序可以使用模块disk_log。有关disk_log的更多信息,请参阅Kernel中的disk_log手册页面。

  • 需要硬实时性。



推荐阅读
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • 解决VS写C#项目导入MySQL数据源报错“You have a usable connection already”问题的正确方法
    本文介绍了在VS写C#项目导入MySQL数据源时出现报错“You have a usable connection already”的问题,并给出了正确的解决方法。详细描述了问题的出现情况和报错信息,并提供了解决该问题的步骤和注意事项。 ... [详细]
  • 自动轮播,反转播放的ViewPagerAdapter的使用方法和效果展示
    本文介绍了如何使用自动轮播、反转播放的ViewPagerAdapter,并展示了其效果。该ViewPagerAdapter支持无限循环、触摸暂停、切换缩放等功能。同时提供了使用GIF.gif的示例和github地址。通过LoopFragmentPagerAdapter类的getActualCount、getActualItem和getActualPagerTitle方法可以实现自定义的循环效果和标题展示。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • CentOS 6.5安装VMware Tools及共享文件夹显示问题解决方法
    本文介绍了在CentOS 6.5上安装VMware Tools及解决共享文件夹显示问题的方法。包括清空CD/DVD使用的ISO镜像文件、创建挂载目录、改变光驱设备的读写权限等步骤。最后给出了拷贝解压VMware Tools的操作。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • r2dbc配置多数据源
    R2dbc配置多数据源问题根据官网配置r2dbc连接mysql多数据源所遇到的问题pom配置可以参考官网,不过我这样配置会报错我并没有这样配置将以下内容添加到pom.xml文件d ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • IhaveconfiguredanactionforaremotenotificationwhenitarrivestomyiOsapp.Iwanttwodiff ... [详细]
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • Java学习笔记之面向对象编程(OOP)
    本文介绍了Java学习笔记中的面向对象编程(OOP)内容,包括OOP的三大特性(封装、继承、多态)和五大原则(单一职责原则、开放封闭原则、里式替换原则、依赖倒置原则)。通过学习OOP,可以提高代码复用性、拓展性和安全性。 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • ubuntu用sqoop将数据从hive导入mysql时,命令: ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
小朱-听听积
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有