ActorDB 是一个使用 Erlang 编写的分布式 SQL 数据库,有 KV (键值存储) 的线性伸缩特性,也有关系型数据库的查询功能。
ActorDB 是一些应用理想的服务端数据库,比如 Dropbox,Evernote 等等,这些应用都需要在服务端存储用户数据,但是他们绝大部分的查询都是针对一个特定的用户。由于用户量巨大,服务端数据库非常大。使用 ActorDB 可以为每个用户使用一个完整的关系型数据库,但又不需要关心伸缩性策略,能完美发挥关系型数据库的威力。
主页:http://www.actordb.com/
ActorDB 是:
一个分布式关系型 SQL 数据库
一致性 (并不是最终一致)
分布式
冗余
大量并发
无单点故障
ACID
可连接 MySQL 协议和 Thrift
复制安全,使用 Raft 分布式一致算法
优势:
完全横向可伸缩
全功能 ACID 数据库
适用于基于 actors 和服务器的超大型数据集
无需特殊驱动器
容易配置和管理
无全局锁
使用稳定可靠的 SQL 和存储引擎:基于 LMDB 的 SQLite
继承 SQLite 特性,比如 JSON 支持和常用表表达式
ActorDB 从 2014 年一直发展到现在,当前版本是 0.10.20,遵循 MPL 2.0 开源授权协议。
GitHub 地址:https://github.com/biokoda/actordb
------------------------------------------------------------
ActorDB is a distributed SQL database...
with the scalability of a KV store, while keeping the query capabilities of a relational database.
ActorDB is ideal as a server side database for apps. Think of running a large mail service, dropbox, evernote, etc. They all require server side storage for user data, but the vast majority of queries is within a specific user. With many users, the server side database can get very large. Using ActorDB you can keep a full relational database for every user and not be forced into painful scaling strategies that require you to throw away everything that makes relational databases good.
ActorDB is a database that does not hide sharding from you. It makes it explicit, so you can keep fully relational chunks (i.e. actors) for the 99% of your database queries.
Even if your data model is not easily partitioned, ActorDB has a powerful KV data type that you can use instead. An ActorDB KV type is an sql table that is partitioned across all servers. That table can have sub tables linked to it using foreign keys.
You can run queries or transactions on a single actor or across any number of actors. ActorDB can run on a single server or many servers. Writing to one actor is completely independent of writes to another actor, unless they are participating in the same transaction.
Servers can be added and schema can be updated at any time while the database is running.
Homepage: http://www.actordb.com/
For any questions you can use: https://gitter.im/actordb/
ActorDB is:
- A distributed relational SQL database.
- Consistent (not eventually consistent).
- Distributed.
- Redundant.
- Massively concurrent.
- No single point of failure.
- ACID.
- Connectable over MySQL protocol and Thrift.
- Replicated safely using the Raft distributed consensus algorithm.
Advantages
- Complete horizontal scalability. All nodes are equivalent and you can have as many nodes as you need.
- Full featured ACID database.
- Suitable for very large datasets over many actors and servers.
- No special drivers needed. Use the mysql driver of your language of choice.
- Easy to configure and administer.
- No global locks. Only the actors (one or many) involved in a transaction are locked during a write. All other actors are unaffected.
- Uses stable reliable SQL and storage engines: SQLite on top of LMDB.
- Inherits SQLite features like JSON support and common table expressions.
Would you like to contribute?
What we would most like to see is more client libraries on top of Thrift. Thrift generated code can be a bit verbose. Generally it is much nicer to implement an interface to it that hides some boilerplate code and uses nicer types.
Also if you have any ideas, thoughts on possible improvements or bugs to report, contact us using github issues.
So if you're interested in contributing. Use your language of choice. Generate a thrift interface using our adbt.thrift, then write a clean interface to it.
We will list any outside contributions here.
Learn more
Documentation: http://www.actordb.com/docs-about.html
Story: http://blog.biokoda.com/post/112206754025/why-we-built-actordb
How SQLite runs on top of LMDB: http://blog.biokoda.com/post/133121776825/actordb-how-and-why-we-run-sqlite-on-top-of-lmdb
How to configure and run: http://www.actordb.com/docs-configuration.html
Change log: https://github.com/biokoda/actordb/blob/master/CHANGES.md
Client libs
Erlang: https://github.com/biokoda/actordb_client
.NET 2.0: https://github.com/hq-io/actordb-net
Builds
ubuntu/debian package (64bit)
https://dzbscw1ubdtyw.cloudfront.net/actordb_0.10.29-1_amd64.deb
osx package (64bit):
https://dzbscw1ubdtyw.cloudfront.net/actordb-0.10.29-OSX-x86_64.tar.gz
red hat/centos package (64bit):
Centos 7: https://dzbscw1ubdtyw.cloudfront.net/actordb-0.10.29-1.el7.x86_64.rpm
general linux build (64bit)
https://dzbscw1ubdtyw.cloudfront.net/actordb-0.10.29-linux.tar.gz
windows package (64bit):
https://dzbscw1ubdtyw.cloudfront.net/actordb-0.10.25-win-x86_64.zip
from https://github.com/biokoda/actordb
No comments:
Post a Comment