热门标签 | 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手册页面。

  • 需要硬实时性。



推荐阅读
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文详细介绍了MySQL数据库的基础语法与核心操作,涵盖从基础概念到具体应用的多个方面。首先,文章从基础知识入手,逐步深入到创建和修改数据表的操作。接着,详细讲解了如何进行数据的插入、更新与删除。在查询部分,不仅介绍了DISTINCT和LIMIT的使用方法,还探讨了排序、过滤和通配符的应用。此外,文章还涵盖了计算字段以及多种函数的使用,包括文本处理、日期和时间处理及数值处理等。通过这些内容,读者可以全面掌握MySQL数据库的核心操作技巧。 ... [详细]
  • C# 中 SQLite 报错:在 "\\s\\" 附近出现语法错误,如何解决? ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 您的数据库配置是否安全?DBSAT工具助您一臂之力!
    本文探讨了Oracle提供的免费工具DBSAT,该工具能够有效协助用户检测和优化数据库配置的安全性。通过全面的分析和报告,DBSAT帮助用户识别潜在的安全漏洞,并提供针对性的改进建议,确保数据库系统的稳定性和安全性。 ... [详细]
  • PTArchiver工作原理详解与应用分析
    PTArchiver工作原理及其应用分析本文详细解析了PTArchiver的工作机制,探讨了其在数据归档和管理中的应用。PTArchiver通过高效的压缩算法和灵活的存储策略,实现了对大规模数据的高效管理和长期保存。文章还介绍了其在企业级数据备份、历史数据迁移等场景中的实际应用案例,为用户提供了实用的操作建议和技术支持。 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • 为了确保数据库的高效运行,本文介绍了一种方法,通过编写定时任务脚本来自动清理 `order` 表中状态为 0 或为空的无效订单记录。该脚本使用 PHP 编写,并设置时区为中国标准时间,每 10 分钟执行一次,以保持数据库的整洁和性能优化。此外,还详细介绍了如何配置定时任务以及脚本的具体实现步骤。 ... [详细]
  • 在Linux系统中避免安装MySQL的简易指南
    在Linux系统中避免安装MySQL的简易指南 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
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社区 版权所有