词条 | Mnesia |
释义 |
| name = Mnesia | logo = | screenshot = | caption = | author = Joe Armstrong, Robert Virding, Dan Gudmundsson and others | developer = Ericsson | released = | latest release version = 4.15.4 | latest release date = {{release date|2018|06|19}} | operating system = Cross-platform | platform = Cross-platform | language = | programming language = Erlang | genre = Relational Database Management System | license = Apache License 2.0 (since OTP 18.0) | website = {{URL|http://www.erlang.org/doc/man/mnesia.html}} }} Mnesia is a distributed, soft real-time database management system written in the Erlang programming language.[1] It is distributed as part of the Open Telecom Platform. DescriptionAs with Erlang, Mnesia was developed by Ericsson for soft real-time distributed and high-availability computing work related to telecoms. It was not intended as a general office-based data processing database management system, nor to replace SQL-based systems. Instead Mnesia exists to support Erlang, where DBMS-like persistence is required.[2] It has more in common with embeddable DBMS such as Berkeley DB than with any SQL database server. Database model"Rows" in tables are represented as records that contain a key value and a data field. This data field may in turn be a tuple containing an Erlang data structure of any complexity. Relational featuresThe database model is relational, but isn't what someone familiar with SQL might expect. A database contains tables. Relationships between them are modelled as other tables.[3] A key feature of Mnesia's high-availability approach is that tables can be reconfigured within a schema and relocated between nodes, not only while the database is still running, but even while write operations are still going on. CodingThe query language of Mnesia is Erlang itself, rather than SQL.[4] It permits easy representation of transactions as a natural feature of Erlang by allowing developers to utilize a single language throughout an application. TransactionsErlang is a functional language. Mnesia builds on this to obtain ACID transaction support. The functional block which is run as a transaction is a commonplace Erlang construct called a Functional Object (or Fun)[5] and is called by the single Mnesia statement Again as a result of the functional nature of Erlang, nesting transactions is simple. It's also possible to distribute transactions across multiple nodes (i.e. separate servers). The semantics of using transactions in this way remains consistent, making it easy to write library code that works equally in either context. General coding style for Mnesia will always use transactions. For performance reasons, it also supports deliberate "dirty operations" which avoid transactions. These compromise the atomicity and the isolation properties of ACID, but offer around 10× more throughput.[6] In addition there are also in-memory alternatives, although these lose the durability property of ACID. Efficient executionMnesia forms part of the LYME web application stack. This is akin to LAMP, but based on Erlang. Implementation in Erlang confers an efficiency benefit because of the use of a single virtual machine throughout an application. LYME makes use of this, since the Yaws web server is also implemented in Erlang. Address space is shared (although safely so, under Erlang) between code and data, including Mnesia's table data.[1][7]Origins and licensingMnesia and Erlang were developed by the Ericsson Computer Science Laboratory. They have been released as open source software. Mnesia is released under a derivative of the Mozilla Public License.[8] Since OTP 18.0 they are published according to the open source Apache License 2.0. Versions before OTP 18.0 were published under the open source Erlang Public License.[9] ejabberdMnesia is also an option embedded within the Erlang-based Jabber daemon, ejabberd.[10] See also{{Portal|Free Software}}
References1. ^1 {{cite web |title=Mnesia - A Distributed Robust DBMS for Telecommunications Applications |url=http://www.erlang.se/publications/mnesia_overview.pdf |format=PDF |year=1999 |author1=Håkan Mattsson |author2=Hans Nilsson |author3=Claes Wikstrom }} 2. ^{{cite web |title=Purpose of Mnesia |url=http://www.erlang.org/doc/apps/mnesia/Mnesia_chap1.html#1 |publisher= Open-source Erlang project}} 3. ^{{cite web |title=Mnesia Getting Started guide |url=http://www.erlang.org/doc/apps/mnesia/Mnesia_chap2.html#2 |publisher= Open-source Erlang project}} 4. ^{{cite web |title=Mnesia Reference Manual (v 4.4.5) |url=http://www.erlang.org/doc/apps/mnesia/ |publisher= Open-source Erlang project}} 5. ^{{cite web |title=6.17 Fun Expressions |url=http://www.erlang.org/doc/reference_manual/expressions.html#6.17 |publisher= Open-source Erlang project}} 6. ^{{cite journal |title=Erlang's Mnesia - a distributed DBMS for highly scalable apps |url=http://www.infoq.com/news/2007/08/mnesia |author=Gavin Terrill |date=20 August 2007 |journal= InfoQ}} 7. ^{{cite web |title=Mnesia performance basics |url=http://blog.ciarang.com/posts/mnesia-performance-basics/}} 8. ^{{cite web |title=About Erlang |url=http://www.erlang.org/about.html |publisher= Open-source Erlang project}} 9. ^{{cite web |title=Erlang Public License, V 1.1 |url=http://www.erlang.org/EPLICENSE |publisher= Open-source Erlang project}} 10. ^{{cite web |title=ejabberd project homepage |url=http://www.ejabberd.im}} 3 : Erlang (programming language)|Free database management systems|Structured storage |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。