关于rubynosql的信息

github windows 使用什么语言开发的

Github在3月19号开放了新的项目展示页面(Showcase),Showcase根据项目属性来组织、定义一系列的开源项目列表,可以更清晰的发现你所需要的开源项目。在3月26日的Showcase中,Github放出了一个新的类目:支撑Github的开源技术,这里列举了Github所使用的一些主要的开源项目。

我们提供的服务有:网站制作、成都网站制作、微信公众号开发、网站优化、网站认证、泾县ssl等。为近千家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的泾县网站制作公司

如下是这些开源项目的介绍:

linguist

语言识别库,能够自动根据项目的代码来识别你所使用的语言。 在你的项目源代码页面,可以看到一个彩条,点开以后会显示项目中的编程语言比例。linguist主要通过文件的后缀来识别,对于一些通用的扩展名,例如.m文件,linguist通过一些语言的特征片段来做判断。由于编程语言很多,linguist还不能覆盖所有语言的检测。

jquery-pjax

pjax是Github的联合创始人之一defunkt的作品,它使用html的pushState特性与ajax,可以实现页面内容动态局部刷新,当点击项目源代码页面中具体的一个文件或者文件夹时,你将会看到页面的其他部分是不变的,只有定义的页面DOM会刷新,这里使用的就是pjax。

elasticsearch

Eleasticsearch支撑了Github的搜索功能,2年之前Github使用Solor做搜索,随着用户和托管项目的增加,索引的大小超过了solor节点的最大存储空间,也出现了很多的问题,Github团队在思考解决方案时决定使用Elasticsearch做替换。Github最开始使用ES时,使用了44台亚马逊EC2实例,每台实例配备2T的存储,其中8台实例指负责查询请求。目前,Github已经将原有的EC搜索集群迁移到了东海岸的一个数据中心,使用8台物理主机替换了44台EC2。

Rails

Ruby实现的MVC Web框架。Github的用户界面和功能大部分基于Rails构建,不过需要注意的是现在虽然Rails的项目版本已经发展到了Rails 4,但是Github依旧使用的是自己维护的2.3分支,对于不保持和现有的Rails主版本号一致的原因,Github员工Kneath做了如下的解释:

. 花更过的时间来升级更新Rails,将会减少为用户构建新特性的时间,我们更关注用户;

. 性能问题是一个很重要的考虑。在过去的几年中,我们极大的减少了响应时间。而升级Rails不仅会带来一个更慢的框架,而且还会引入一个不同的架构——我们需要再根据新的框架特性来定位优化性能。我们对于现有的框架已经做了很多的优化以保持性能稳定,最主要的是:将时间花费在升级上不会让我们的架构更快。

. 过去的三年我们一直在升级这个堆栈,不升级Rails版本我们依然可以使用新的特性。

Redis

Redis是K/V存储系统,知名的NoSQL实现之一,在Github,主要使用Redis来进行队列中的异常处理。在Github早期,曾尝试过很多的基于Ruby的队列机制,也曾使用Amazon SQS,但是这些方案都不能在Github快速增长的同时满足稳定性要求,最终Github迁移到了使用Redis的技术方案resque。

sprocket

Sprocket是一个网站资源打包的Ruby库,它不仅能够管理JavaScript和CSS资源,还可以按照pipline的方式来流式预处理CoffeeScript、Sass、SCSS和LESS代码等;

libgit2

libgit2是一个可移植、纯C语言实现的Git核心方法类库,提供API重新链入Git方法。Github的背后使用的原生的git来实现commit、push等功能,但是使用libgit2来针对桌面应用调用、Ruby代码中调用等;

rugged

libgit2的Ruby类库;

bcrypt-ruby

OpenBSD bcypt()密码哈希算法的Ruby实现;

html-pipeline

html-pipline是一个gem包,可以将现有Github前端HTML中的一些特性进行流式处理,例如在Github的评论框中,你可以@某一个人、输入emoji的表情、使用markdown的语法来写内容等,但是这些都是由单独的插件来控制的,html-pipeline可以流式的使用相应的插件处理原始内容,例如先将markdown转义成html,继而自动添加emoji表情,然后进行代码的语法高亮等。

gemoji

在2013年的QCon北京前夜:Github Drink Up活动中,来自Github的工程师Tim在现场的活动中谈到了他们的一个文化:使用emoji。他解释道:“很多情感使用文字不能做出形象的表达,但是使用emoji表情却能够起到不一样的效果”。在Github现有评论框或其他内容中,都可以看到emoji的身影,所使用的就是gemoji这个gem包。

jekyll

Jekyll是一个静态博客生成的程序,Github中项目的Page页面,默认选型使用的就是jekyll。

gollum

Gollum是一套基于git的wiki系统,Github项目的wiki系统背后使用的就是这套开源框架;

octokit.rb

Github API的官方Ruby SDK;

Hubot

Hubot是Github自行开发的一个聊天机器人,当然它已经超过了聊天机器人的范畴,Github作为一个异步办公的团队,日常的协作、沟通很大部分依赖于聊天室,通过Hubot,Github的员工可以在聊天室中给机器人定制一些特定的回复、3D打印模型,甚至通过hubot来部署生成环境的代码、获取服务状态等,在2013年的QCon北京中,Giuthub的工程曾针对如何使用Hubot做运维进行过分享:《ChatOps at GitHub》。

d3

d3是使用JavaScript实现的数据可视化框架,使用HTML、SVG和CSS等,在d3的基础之上发展处诸如crossfilter、NVD3.js等一系列扩展或者简化框架,并且形成了一个良好的社区。作者mbostock目前供职于NYTimes,d3是他的博士论文项目,目前Github使用d3来展示托管项目提交历史、记录等的可视化效果图。

plax

plax是控制视差元素的JavaScript类库,你可以在404、505等页面看到它的实现效果。

ace

Ace是一个使用Javascript开发的代码编辑器,具备语法高亮、快捷键绑定等特性, Github使用Ace实现基于web的代码编辑功能。

zepto

Zepo是一个JavaScript框架,其特点是兼容现有jQuery API的同时,自身体积十分小;

zeroclipborad

Github的“点击复制到粘贴板”的功能就是使用的zeroclipboard,zeroclipboard使用一个不可见的Adobe Flash动画来实现复制粘贴,并提供Javascript的API接口以供调用。

charlock_holmes

charlock_holmes用来检测字符编码格式,并可以自动将字符编码转化成UTF-8。

puppet

服务器运维工具,可以进行自动化部署、集群管理等。

moment

moment是一个日期框架,用于解析、验证、格式化日期等,其中一个常用的功能是将原始的Javascript时间类型转化成方便阅读的时间说明格式,例如:”2小时之前“、”3天之前“这种形式。

bower

前端资源包管理工具,可以通过bower install package的形式将常用的前端资源下载到本地的项目目录中,例如:bower install bootstrap将会自动下载bootstrap的项目资源到本地的项目目录中,不需要自己手动来下载、移动资源文件,并且通过配置文件可以方便分享给同事、简化项目初始化等;

resque

Resque是Github Enterprise中使用的一个基于Redis的后台作业控制系统,提供可视化的界面,可以方便的监控后台作业的运行状态和监控情况。

另外,Github还发布了“支撑Github Windows客户端的开源项目”和“支撑Github Mac客户端的开源项目”两个Showcase。

云计算架构?

云计算架构主要可分为四层,其中有三层是横向的,分别是显示层、中间件层和基础设施层,通过这三层技术能够提供非常丰富的云计算能力和友好的用户界面,还有一层是纵向的,称为管理层,是为了更好地管理和维护横向的三层而存在的。下面介绍每个层次的作用和属于这个层次的主要技术。

显示层

这层主要是用于以友好的方式展现用户所需的内容,并会利用到下面中间件层提供的多种服务,主要有五种技术:

HTML:标准的Web页面技术,现在主要以HTML4为主,但是将要推出的HTML5会在很多方面推动Web页面的发展,比如视频和本地存储等方面。

JavaScript:一种用于Web页面的动态语言,通过JavaScript,能够极大地丰富Web页面的功能,最流行的JS框架有jQuery和Prototype。

CSS:主要用于控制Web页面的外观,而且能使页面的内容与其表现形式之间进行优雅地分离。

Flash:业界最常用的RIA(Rich Internet Applications)技术,能够在现阶段提供HTML等技术所无法提供的基于Web的富应用,而且在用户体验方面,非常不错。

Silverlight:来自业界巨擎微软的RIA技术,虽然其现在市场占有率稍逊于Flash,但由于其可以使用C#来进行编程,所以对开发者非常友好。

在显示层,大多数云计算产品都比较倾向HTML,、JavaScript和CSS这对黄金组合,但是Flash和Silverlight等RIA技 术也有一定的用武之地,比如VMware vCloud就采用了基于Flash的Flex技术,而微软的云计算产品肯定会在今后使用到Silverlight。

中间件层

这层是承上启下的,它在下面的基础设施层所提供资源的基础上提供了多种服务,比如缓存服务和REST服务等,而且这些服务即可用于支撑显示层,也可以直接让用户调用,并主要有五种技术:

REST:通过REST技术,能够非常方便和优雅地将中间件层所支撑的部分服务提供给调用者。

多租户:就是能让一个单独的应用实例可以为多个组织服务,而且保持良好的隔离性和安全性,并且通过这种技术,能有效地降低应用的购置和维护成本。

并行处理:为了处理海量的数据,需要利用庞大的X86集群进行规模巨大的并行处理,Google的MapReduce是这方面的代表之作。

应用服务器:在原有的应用服务器的基础上为云计算做了一定程度的优化,比如用于Google App Engine的Jetty应用服务器。

分布式缓存:通过分布式缓存技术,不仅能有效地降低对后台服务器的压力,而且还能加快相应的反应速度,最著名的分布式缓存例子莫过于Memcached。

对于很多PaaS平台,比如用于部署Ruby应用的Heroku云平台,应用服务器和分布式缓存都是必备的,同时REST技术也常用于对外的接口, 多租户技术则主要用于SaaS应用的后台,比如用于支撑Salesforce的Sales Cloud等应用的Force.com多租户内核,而并行处理技术常被作为单独的服务推出,比如Amazon的Elastic MapReduce。

基础设施层

这层作用是为给上面的中间件层或者用户准备其所需的计算和存储等资源,主要有四种技术:

虚拟化:也可以理解它为基础设施层的“多租户”,因为通过虚拟化技术,能够在一个物理服务器上生成多个虚拟 机,并且能在这些虚拟机之间能实现全面的隔离,这样不仅能减低服务器的购置成本,而且还能同时降低服务器的运维成本,成熟的X86虚拟化技术有 VMware的ESX和开源的Xen。

分布式存储:为了承载海量的数据,同时也要保证这些数据的可管理性,所以需要一整套分布式的存储系统,在这方面,Google的GFS是典范之作。

关系型数据库:基本是在原有的关系型数据库的基础上做了扩展和管理等方面的优化,使其在云中更适应。

NoSQL:为了满足一些关系数据库所无法满足的目标,比如支撑海量的数据等,一些公司特地设计一批不是基于关系模型的数据库,比如Google的BigTable和Facebook的Cassandra等。

现在大多数的IaaS服务都是基于Xen的,比如Amazon的EC2等,但VMware也推出了基于ESX技术的vCloud,同时业界也有几个 基于关系型数据库的云服务,比如Amazon的RDS(Relational Database Service)和Windows Azure SDS(SQL Data Services)等。关于分布式存储和NoSQL,它们已经被广泛用于云平台的后端,比如Google App Engine的Datastore就是基于BigTable和GFS这两个技术之上的,而Amazon则推出基于NoSQL技术的Simple DB。

管理层

这层是为横向的三层服务的,并给这三层提供多种管理和维护等方面的技术,主要有下面这六个方面:

帐号管理:通过良好的帐号管理技术,能够在安全的条件下方便用户地登录,并方便管理员对帐号的管理。

SLA监控:对各个层次运行的虚拟机,服务和应用等进行性能方面的监控,以使它们都能在满足预先设定的SLA(Service Level Agreement)的情况下运行。

计费管理:也就是对每个用户所消耗的资源等进行统计,来准确地向用户索取费用。

安全管理:对数据,应用和帐号等IT资源采取全面地保护,使其免受犯罪分子和恶意程序的侵害。

负载均衡:通过将流量分发给一个应用或者服务的多个实例来应对突发情况。 运维管理:主要是使运维操作尽可能地专业和自动化 ,从而降低云计算中心成本。

负载均衡:通过将流量分发给一个应用或者服务的多个实例来应对突发情况。

运维管理:主要是使运维操作尽可能地专业和自动化,从而降低云计算中心的运维成本。

现在的云计算产品在帐号管理,计费管理和负载均衡这三个方面大都表现地不错,在这方面最突出的例子就是Amazon 的EC2,但可惜的是,大多数产品在SLA监控,安全管理和运维管理等方面还有所欠缺。

举例

接下来,将以Salesforce的Sales Cloud和Google的App Engine这两个著名的云计算产品为例,来帮助大家理解本文所提到的云计算架构:

Salesforce Sales Cloud

也就是之前的Salesforce CRM(客户关系管理),属于云计算中的SaaS层,主要是通过在云中部署可定制化的CRM应用,来让企业用户在很低初始投入的情况下使用上CRM,并且 可根据自身的流程来进行灵活地定制,而且只需接入网络就能使用。在技术层面上大致的架构:

采用的主要技术:

显示层:基于HTML、JavaScript和CSS这对黄金组合。

中间件层:在此层,Salesforce引入了多租户内核和为支撑此内核运行而经过定制的应用服务器。

基础设施层:虽然在后端还是使用在企业环境中很常见的Oracle数据库,但是其为了支撑上层的多租户内核做了很多的优化。

管理层:在安全管理方面,Salesforce提供了多层保护,并支持SSL加密等技术,除此之外,其还在帐号管理、计费管理和负载均衡这三方面有不错地支持。

Google App Engine

App Engine属于云计算中的PaaS层,其主要提供一个平台,来让用户在Google强大的基础设施上部署和运行应用程序,同时App Engine会根据应用所承受的负载来对应用所需的资源进行调整,并免去用户对应用和服务器等的维护工作,而且支持Java和Python这两种语言。由 于App Engine属于PaaS平台,所以关于显示层的技术选择由应用的自身需要而定,与App Engine无关,关于App Engine在技术层面上大致的架构。

采用的主要技术:

中间件层:既有经过定制化的应用服务器,比如上面已经提到过的Jetty,也提供基于Memcached的分布式缓存服务。

基础设施层: 在分布式存储GFS的基础上提供了NoSQL数据库BigTable来对应用的数据进行持久化。

管理层:由于App Engine是基于Google强大的分布式基础设施,使其在运维管理技术方面非常出色,同时其计费管理能做到非常细粒度的API级计费,而且App Engine在帐号管理和负载均衡这两方面都有非常好地支持。

以上内容分析源自OFweek物联网,希望对大家有帮助。

全球四个最大的四个开源库

开源数据库MySQLMySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源...开源数据库MySQLMySQL是一个开放源码的小型关联式数据库管理系统,开发者为瑞典MySQL AB公司。目前MySQL被广泛地应用在Internet上的中小型网站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库。盘点:开源社区那些免费的数据库软件MySQL为多种编程语言提供了API,包括C、C++、C#、Delphi、Eiffel、Java、Perl、PHP、Python、Ruby和Tcl等。而其自身是采用C和C++编写的,使用了多种编译器进行测试,所以,MySQL能够保证源代码具有很强的可移植性。这样的一款数据库,自然能够支持几乎所有的操作系统,从Unix、Linux到Windows,具体包括AIX、BSDi、FreeBSD、HP-UX、Linux、Mac OS、Novell Netware、NetBSD、OpenBSD、OS/2 Wrap、Solaris、SunOS、Windows等多种操作系统。最重要的是,它是一个可以处理拥有上千万条记录的大型数据库。与此同时,MySQL也产生了很多分支版本的数据库也非常值得推荐。首先是MariaDB,它是一个采用Maria存储引擎的MySQL分支版本,是由原来MySQL的作者 Michael Widenius创办的公司所开发的免费开源的数据库服务器。与MySQL相比较,MariaDB更强的地方在于它拥有更多的引擎,包括Maria存储引擎、PBXT存储引擎、XtraDB存储引擎、FederatedX存储引擎,它能够更快的复制查询处理、运行的速度更快、更好的功能测试以及支持对Unicode的排序等。其次是rcona,它为MySQL数据库服务器进行了改进,在功能和性能上较MySQL有着很显著的提升。该版本提升了在高负载情况下的InnoDB的性能,同时,它还为DBA提供一些非常有用的性能诊断工具,并且提供很多参数和命令来控制服务器行为。第三是Percona Server,它使用了诸如google-mysql-tools、Proven Scaling和 Open Query对MySQL进行改造。并且,它只包含MySQL的服务器版,并没有提供相应对 MySQL的Connector和GUI工具进行改进。非关系型数据库NoSQL从NoSQL的字面上理解,NoSQL就是Not Only SQL,被业界认为是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于目前铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。盘点:开源社区那些免费的数据库软件当然,NoSQL也是随着互联网Web2.0网站的兴起才能取得长足的进步。关键的需求在于,传统的关系数据库在应付Web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。首先推荐的是Oracle NoSQL Database,这是一个社区版。Oracle的这个NoSQL Database, 是在10月4号的甲骨文全球大全上发布的Big Data Appliance的其中一个组件,Big Data Appliance是一个集成了Hadoop、NoSQL Database、Oracle数据库Hadoop适配器、Oracle数据库Hadoop装载器及R语言的系统。其次推荐的是Membase。Membase是NoSQL家族的一个新的重量级的成员。Membase是开源项目,源代码采用了Apache2.0的使用许可。该项目托管在GitHub.Source tarballs上,目前可以下载beta版本的Linux二进制包。该产品主要是由North Scale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。并且,Membase容易安装、操作,可以从单节点方便的扩展到集群,而且为memcached(有线协议的兼容性)实现了即插即用功能,在应用方面为开 发者和经营者提供了一个比较低的门槛。做为缓存解决方案,Memcached已经在不同类型的领域(特别是大容量的Web应用)有了广泛的使用,其中 Memcached的部分基础代码被直接应用到了Membase服务器的前端。通过兼容多种编程语言和框架,Membase具备了很好的复用性。在安装和配置方面,Membase提供了有效的图形化界面和编程接口,包括可配置 的告警信息。Membase的目标是提供对外的线性扩展能力,包括为了增加集群容量,可以针对统一的节点进行复制。 另外,对存储的数据进行再分配仍然是必要的。第三推荐的是Hibari。Hibari在日语中意思为“云雀”,它是一个专为高可靠性和大数据存储的数据库引擎,可用于云计算环境中,例如 webmail、SNS和其他要求T/P级数据存储的环境中。同时,Hibari也支持Java,C/C++,Python,Ruby和Erlang语言的客户端。第四推荐的是memcachedb。这是一个由新浪网的开发人员开放出来的开源项目,给memcached分布式缓存服务器添加了Berkeley DB的持久化存储机制和异步主辅复制机制,让memcached具备了事务恢复能力、持久化能力和分布式复制能力,非常适合于需要超高性能读写速度,但是 不需要严格事务约束,能够被持久化保存的应用场景,例如memcachedb被应用在新浪博客上面。第五推荐的是Leveldb。这是一个Google实现的非常高效的kv数据库,目前的版本1.2能够支持billion级别的数据量了。 在这个数量级别下还有着非常高的性能,主要归功于它的良好的设计,特别是LSM算法。LevelDB是单进程的服务,性能非常之高,在一台4个Q6600的CPU机器上,每秒钟写数据超过40w,而随机读的性能每秒钟超过10w。XML数据库的优势XML数据库是一种支持对XML格式文档进行存储和查询等操作的数据管理系统。在系统中,开发人员可以对数据库中的XML文档进行查询、导出和指定格式的序列化。目前XML数据库有三种类型:XMLEnabledDatabase(XEDB),即能处理XML的数据库;NativeXMLDatabase(NXD),即纯XML数据库;HybridXMLDatabase(HXD),即混合XML数据库。关系数据库中的第一代XML支持是切分(或分解)文档,以适应关系表格或将文档原封不动地存储为字符或二进制大对象(CLOB 或 BLOB)。这两个方法中的任一种都尝试将XML模型强制转换成关系模型。然而,这两种方法在功能和性能上都有很大的局限性。混合型模型将XML存储在类似于DOM的模型中。XML数据被格式化为缓冲数据页,以便快速导航和执行查询以及简化索引编制。在这里,首要要推荐的XML数据库是Sedna。它号称是一款原生态的XML数据库,提供了全功能的核心数据库服务,包括持久化存储、ACID事务、索引、安全、热备、UTF8等。实现了 W3C XQuery 规范,支持全文搜索以及节点级别的更新操作。第二款XML数据库是BaseX。这款数据库用来存储紧缩的XML数据,提供了高效的 XPath和XQuery的实现,同时,它还提供一个前端操作界面。盘点:开源社区那些免费的数据库软件第三款推荐的是XMLDB。这款数据库使用了关系型数据库来存储任意的XML文档,因为所采用的存储机制,所以文档的搜索速度特别快,同时执行XSL转换也相当快。XMLDB同时还提供了一个PHP的模块,可以应用在Web应用中。第四块推荐的是X-Hive/DB。它是一个为需要高级XML数据处理和存储功能的软件开发者设计的强大的专属XML数据库。X-Hive/DB Java API包含存储、查询、检索、转换和发表XML数据的方法。与传统关系型数据库相比,XML数据库具有以下优势:第一,XML数据库能够对半结构化数据进行有效的存取和管理。如网页内容就是一种半结构化数据,而传统的关系数据库对于类似网页内容这类半结构化数据无法进行有效的管理。第二,提供对标签和路径的操作。传统数据库语言允许对数据元素的值进行操作,不能对元素名称操作,半结构化数据库提供了对标签名称的操作,还包括了对路径的操作。第三,当数据本身具有层次特征时,由于XML数据格式能够清晰表达数据的层次特征,因此XML数据库便于对层次化的数据进行操作。XML数据库适合管理复杂数据结构的数据集,如果己经以XML格式存储信息,则XML数据库利于文档存储和检索;可以用方便实用的方式检索文档,并能够提供高质量的全文搜索引擎。另外XML数据库能够存储和查询异种的文档结构,提供对异种信息存取的支持。

有哪些nosql软件能在windows平台下运行

Membase Membase 是 NoSQL 家族的一个新的重量级的成员。Membase是开源项目,源代码采用了Apache2.0的使用许可。该项目托管在GitHub.Source tarballs上,可以下载beta版本的Linux二进制包。该产品主要是由North Scale的memcached核心团队成员开发完成,其中还包括Zynga和NHN这两个主要贡献者的工程师,这两个组织都是很大的在线游戏和社区网络空间的供应商。 Membase容易安装、操作,可以从单节点方便的扩展到集群,而且为memcached(有线协议的兼容性)实现了即插即用功能,在应用方面为开发者和经营者提供了一个比较低的门槛。做为缓存解决方案,Memcached已经在不同类型的领域(特别是大容量的Web应用)有了广泛的使用,其中 Memcached的部分基础代码被直接应用到了Membase服务器的前端。 通过兼容多种编程语言和框架,Membase具备了很好的复用性。在安装和配置方面,Membase提供了有效的图形化界面和编程接口,包括可配置 的告警信息。 Membase的目标是提供对外的线性扩展能力,包括为了增加集群容量,可以针对统一的节点进行复制。 另外,对存储的数据进行再分配仍然是必要的。 这方面的一个有趣的特性是NoSQL解决方案所承诺的可预测的性能,类准确性的延迟和吞吐量。通过如下方式可以获得上面提到的特性: ◆ 自动将在线数据迁移到低延迟的存储介质的技术(内存,固态硬盘,磁盘) ◆ 可选的写操作一一异步,同步(基于复制,持久化) ◆ 反向通道再平衡[未来考虑支持] ◆ 多线程低锁争用 ◆ 尽可能使用异步处理 ◆ 自动实现重复数据删除 ◆ 动态再平衡现有集群 ◆ 通过把数据复制到多个集群单元和支持快速失败转移来提供系统的高可用性。 MongoDB MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。 主要功能特性: ◆ 面向集合存储,易存储对象类型的数据 “面向集合”(Collenction-Oriented),意思是数据被分组存储在数据集中,被称为一个集合(Collenction)。每个 集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定 义任何模式(schema)。 ◆ 模式自由 模式自由(schema-free),意味着对于存储在mongodb数据库中的文件,我们不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。 ◆支持动态查询 ◆支持完全索引,包含内部对象 ◆支持查询 ◆支持复制和故障恢复 ◆使用高效的二进制数据存储,包括大型对象(如视频等) ◆自动处理碎片,以支持云计算层次的扩展性 ◆支持RUBY,PYTHON,JAVA,C++,PHP等多种语言 ◆文件存储格式为BSON(一种JSON的扩展) BSON(Binary Serialized document Format)存储形式是指:存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。 ◆可通过网络访问 MongoDB服务端可运行在Linux、Windows或OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB在32位模式运行时支持的最大文件尺寸为2GB。 MongoDB把数据存储在文件中(默认路径为:/data/db),为提高效率使用内存映射文件进行管理。 Hypertable Hypertable是一个开源、高性能、可伸缩的数据库,它采用与Google的Bigtable相似的模型。在过去数年中,Google为在PC集群 上运行的可伸缩计算基础设施设计建造了三个关键部分。第一个关键的基础设施是Google File System(GFS),这是一个高可用的文件系统,提供了一个全局的命名空间。它通过跨机器(和跨机架)的文件数据复制来达到高可用性,并因此免受传统 文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端口等失败。第二个基础设施是名为Map-Reduce的计算框架,它与GFS紧密协作,帮 助处理收集到的海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过一些主键来组织海量数据,并实现高效的 查询。Hypertable是Bigtable的一个开源实现,并且根据我们的想法进行了一些改进。 Apache Cassandra Apache Cassandra是一套开源分布式Key-Value存储系统。它最初由Facebook开发,用于储存特别大的数据。Facebook在使用此系统。 主要特性: ◆ 分布式 ◆ 基于column的结构化 ◆ 高伸展性 Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能 是比较简单的事情,只管在群集里面添加节点就可以了。 Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比 Dynomite(分布式的Key-Value存 储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库 的。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。 CouchDB 所用语言: Erlang 特点:DB一致性,易于使用 使用许可: Apache 协议: HTTP/REST 双向数据复制,持续进行或临时处理,处理时带冲突检查,因此,采用的是master-master复制 MVCC – 写操作不阻塞读操作 可保存文件之前的版本 Crash-only(可靠的)设计 需要不时地进行数据压缩 视图:嵌入式 映射/减少 格式化视图:列表显示 支持进行服务器端文档验证 支持认证 根据变化实时更新 支持附件处理 因此, CouchApps(独立的 js应用程序) 需要 jQuery程序库 最佳应用场景:适用于数据变化较少,执行预定义查询,进行数据统计的应用程序。适用于需要提供数据版本支持的应用程序。 例如:CRM、CMS系统。 master-master复制对于多站点部署是非常有用的。 和其他数据库比较,其突出特点是: ◆ 模式灵活 :使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系统运行时随意的添加或移除字段。这是一个惊人的效率提升,特别是在大型部 署上。 ◆ 真正的可扩展性 :Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以指向另一台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。 ◆ 多数据中心识别 :你可以调整你的节点布局来避免某一个数据中心起火,一个备用的数据中心将至少有每条记录的完全复制。 ◆ 范围查询 :如果你不喜欢全部的键值查询,则可以设置键的范围来查询。 ◆ 列表数据结构 :在混合模式可以将超级列添加到5维。对于每个用户的索引,这是非常方便的。 ◆ 分布式写操作 :有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单点失败。 问度娘,啥都有。

如何架构基于 Ruby on Rails 网站的实时消息系统

1 实时信息通知可以用轮询或者 Long HTTP Connection 的方式,具体查google

2 message 和 group 放在mongodb 可以,比如说一个群聊放到一个 mongodb 的 document 里面,一个message 会话也可以放在一个 document 里面,但是要设计好你的数据结构,一个document最大4M。 nosql 虽然方便,但是后期sharding 也很费事

3 首页动态刷新,这个参考1. 从服务器返回数据后,动态插入就可以

4 实时全文搜索,但假设你用 mongodb,在一定量级上可以直接用mongodb 查询,另外对于过期数据可以做归档。以知乎现在的数据量来说,实时搜索也用不到lucene/solr。后台任务队列可以用redis。我原来尝试过用mongodb 来架构一个实时队列,支撑过一段时间,后来爆掉了。

5 支持html5,移动设备。 这个不关架构的事情,只要判断浏览器请求头,对不同设备提供不同的 css,或者是渲染不同的页面。如果要是给客户端提供API的话,统一用json就行,Rails 支持不同请求类型返回不同数据结构。

6 没有可以拿来就用的架构,要根据自己的业务结构,从简单开始,逐步演进。


文章名称:关于rubynosql的信息
新闻来源:http://ybzwz.com/article/dsijiji.html