阅读更多

11顶
1踩

数据库
    随着互联网中web 2.0网站的兴起,传统的关系数据库在应付web 2.0网站,特别是超大规模和高并发的SNS类型的web 2.0纯动态网站,已经显得力不从心,暴露了很多难以克服的问题,例如:
   
  • High performance - 对数据库高并发读写的需求   
  • Huge Storage - 对海量数据的高效率存储和访问的需求   
  • High Scalability && High Availability- 对数据库的高可扩展性和高可用性的需求
    关系数据库在这些越来越多的应用场景下显得不那么合适,为了解决这类问题的NoSQL应运而生,并得到了非常迅速的发展。


   
    NoSQL(=Not Only SQL),意即反SQL运动,指的是非关系型的数据库。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL 数据存储不需要固定的表结构,通常也不存在连接操作。在大数据存取上具备关系型数据库无法比拟的性能优势。
   
   NoSQL的特点是非关系型、分布式、开源、可水平扩展、模式自由、支持replication、简单的API、最终一致性(相对于即时一致性,最终一致性允许有一个“不一致性窗口”,但能保证最终的客户都能看到最新的值)。
   
    Google 的BigTable与Amazon的Dynamo是非常成功的商业 NoSQL 实现。一些开源的 NoSQL 体系,如Facebook 的Cassandra, Apache 的HBase,也得到了广泛认同。
   
    下面介绍几个重量级的数据库以及相关的管理工具。
   
一、Redis数据库和管理工具
  
    Redis是一个key-value类型的内存数据库,每一个key都与一个value关联,使得Redis与其他key-value数据库不同是因为在Redis中的每一个value都有一个类型(type),目前在Redis中支持5中数据类型:String、List、Set、ZSet和Hash。每一种类型决定了可以赋予其上的操作(这些操作成为命令command)。比如你可以使用LPUSH或RPUSH命令在O(1)时间对一个list添加一个元素,然后你可以使用LRANGE命令得到list中的一部分元素或使用LTRIM对该list进行trim操作。集合set操作也是很灵活的,你可以从set(无序的String的集合)中add或remove元素,还可以进行交集、合集和差集运算。每一个command都是服务端自动的操作。
   
    Redis性能上和memcached一样快但提供了更多的特性。和memcached一样,Redis支持对key设置失效时间,因此当设定的时间过后会被自动删除。

下面介绍2个Redis数据库界面管理工具。
   
1. phpRedisAdmin
   
    你没看错,这是phpRedisAdmin,不是phpMyAdmin,phpMyAdmin是一个PHP开发的MySQL数据库WEB管理工具,而phpRedisAdmin,从名字上就可以看出,它是一个PHP开发的Redis 数据库WEB管理工具。使用过phpMyAdmin的用户,对下面的这个界面也许会比较熟悉。目前phpRedisAdmin的功能还略显简陋,我们希望它能越做越好。



    演示地址:http://dubbelboer.com/phpRedisAdmin/?overview   
    下载地址:https://github.com/ErikDubbelboer/phpRedisAdmin   
   
2. RedisAdminUI
   
    这是一个很友好的Redis Web界面管理工具,基于.NET实现。


   
    项目地址:http://code.google.com/p/servicestack/wiki/ServiceStackRedis
   
    演示地址:http://www.servicestack.net/RedisAdminUI/AjaxClient/#
   
    下载地址:http://servicestack.googlecode.com/files/RedisAdminUI.zip
   
二、Cassandra数据库和管理工具

    Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynomite(分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB。
   
    Cassandra的主要特点就是它不是一个数据库,而是由一堆数据库节点共同构成的一个分布式网络服务,对Cassandra 的一个写操作,会被复制到其他节点上去,对Cassandra的读操作,也会被路由到某个节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较简单的事情,只管在群集里面添加节点就可以了。其他的特性包括分布式、基于column的结构化和高伸展性等。
   
    Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0。

Cassandra Web界面管理工具:Cassandra Cluster Admin
   
    Cassandra Cluster Admin是一个针对Cassandra的Web界面管理工具,其支持的功能如下:
   
  • 密匙空间控制操作(add/edit/drop)
  • 列家族控制(add/edit/truncate/drop)
  • 列家族和超级列家族上的行控制(insert/edit/remove)
  • 原始数据浏览器(最佳功能)
  • 支持Cassandra 0.8+ atomic counters
  • 支持对多Cassandra集群的管理

    

   
    下载地址:https://github.com/sebgiroux/Cassandra-Cluster-Admin
   
三、MongoDB数据库和管理工具
   
    MongoDB是一种面向集合(collection)的,模式自由的文档(document)数据库。
   
    面向集合是说数据被分成集合的形式,每个集合在数据库中有惟一的名称,集合可以包含不限数目的文档。除了模式不是预先定义好的,集合与RDBMS中的表概念类似,虽然二者并不是完全对等。数据库和集合的创建是“lazy”的,即只有在第一个document被插入时集合和数据库才真正创建——这时在磁盘的文件系统里才能看见。
   
    模式自由是说数据库不需要知道存放在集合中的文档的结构,完全可以在同一个集合中存放不同结构的文档,支持嵌入子文档。
   
    MongoDB可运行在Linux、Windows和OS X平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台,因为MongoDB为了提高性能使用了内存映射文件进行数据管理,而在32位模式运行时支持的最大文件为2GB。
   
    MongoDB查询速度比MySQL要快,因为它cache了尽可能多的数据到RAM中,即使是non-cached数据也非常快。当前MongoDB官方支持的客户端API语言就多达8种(C、C++、Java、Javascript、Perl、PHP、Python、Ruby),社区开发的客户端API还有Erlang、Go、Haskell等更多种。

下面介绍几种常用的MongoDB数据库界面管理工具。
    
1.  Try MongoDB
   
    不用安装就可以试用MongoDB?确实如此,和tryredis一样,Try MongoDB是一个基于web的shell模拟工具,可以让你在不用安装MongoDB的情况下试用MongoDB的各种功能。   


   
2. Mongo3 – MongoDB 集群管理工具
   
    从图上看,这个工具实在是太炫了!   


   
3. futon4mongo
   
    这个貌似是把CouchDB的RESTFul API搬移到MongoDB上实现的,而且官方页面上明确告知这是一个实验型产品,不要用在商业项目中。   


   
4. phpMoAdmin
   
    这是一个基于PHP的MongoDB管理工具,而且还支持界面主题订制。


   
5. MongoVUE
   
    一个windows下的MongoDB客户端管理工具。   


   
6. MongoHUB
   
    Mac 下的 MongoDB 客户端,目前升级到2.3.0版本。


   
7. rock_mongo
   
    它的描述是“Best PHP based MongoDB administration GUI tool”,最近在MongoDB 的讨论组上有很多人推荐此工具。  
   


8. Server Density – MongoDB服务器监视工具

    Server Density 是一个商业的监控服务提供商,其原理是在你要监控的机器上部署其监控代码,运行监控daemon,然后监控数据会传回SD的服务器,SD将数据进行整合,并提供多种平台上的数据查看及故障提醒功能。
   
VIA NoSQLFan
  • 大小: 41.1 KB
  • 大小: 167.7 KB
  • 大小: 292.2 KB
  • 大小: 71.3 KB
  • 大小: 95.5 KB
  • 大小: 33.6 KB
  • 大小: 67.9 KB
  • 大小: 62.4 KB
  • 大小: 48.5 KB
  • 大小: 63.7 KB
  • 大小: 5 KB
11
1
评论 共 9 条 请登录后发表评论
9 楼 yyf365 2011-09-19 10:05
谁能告诉我,AIX下到底能不能编译使用mongodb?
8 楼 Jekey 2011-09-13 12:20
7 楼 leero 2011-08-31 16:39
我们使用redis
6 楼 meadlai 2011-08-26 13:58
我们也用mongoDB
5 楼 guilipan 2011-08-26 10:56
没有用membase的么。。。。
4 楼 tinsn 2011-08-26 09:10
旧闻........
3 楼 obullxl 2011-08-26 09:01
MongoDB,HBase确实不错。
2 楼 wendal 2011-08-26 09:00
mongo正在试用,感觉不错
1 楼 caoyangx 2011-08-25 20:52
mongo的工具还是最多,看来Nosql应用最广的一个了。

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • wintegra公司的产品资料,是一款非常好的处理器

    是一款非常好的处理器,通信专用处理器,功能强大

  • wintegra 芯片的重要组成部分-软件侧

    主要有:1. port2. device3. channel4. flowagg5. fbp

  • java线程说法错误的是什么_【多选题】在java程序中,下列关于线程的说法错误的是() A. 线程启动调用start方法 B. 线程的主体是run方法 C. 线程运行中调用sleep方法可以进入阻塞...

    【多选题】在java程序中,下列关于线程的说法错误的是()A. 线程启动调用start方法 B. 线程的主体是run方法 C. 线程运行中调用sleep方法可以进入阻塞状态 D. 定义线程只能通过定义类继承Thread类的方法更多相关问题等...

  • 关于线程的sleep

    线程

  • 关于线程访问另外一个线程的变量问题

    关于线程访问另外一个线程的变量问题 之前帮别人调错,遇到一个错误,就是一个线程A访问另外一个线程B的成员变量,并且线程A在构造方法中有线程B的引用,但是无论线程A怎么获取线程B的成员变量都是 null,但是在线程...

  • delphiXE关于线程和多线程、线程的同步与异步执行

    delphiXE关于线程和多线程、线程的同步与异步执行 一、最好的参照案例 {$BDS}\source\fmx\FMX.Helpers.Android.pas 如下四个独立方法: type TMethodCallback = procedure of object; TCallBack = reference ...

  • 关于线程的笔试面试题

    组成:一个标准的线程由线程ID,当前指令指针(PC),寄存器集合和堆栈组成状态:由于线程之间的相互制约,致使线程在运行中呈现出间断性。线程也有就绪、阻塞和运行三种基本状态周期:新建 就绪 运行 阻塞 死亡 2....

  • 下列关于线程调度的叙述中,错误的是()。

    下列关于线程调度的叙述中,错误的是()。 正确答案: B E 你的答案: A E F (错误) 调用线程的sleep()方法,可以使比当前线程优先级低的线程获得运行机会 调用线程的yeild()方法,只会使与当前...

  • C++关于线程结束编程

    线程主动结束一般是线程函数使用return语句或调用pthread_exit函数。 2线程终止并得到线程的退出码 #include <pthread.h> #include <stdio.h> #include <string.h> #include <unistd.h> ...

  • cuda 关于线程索引的理解

    最近在学习cuda语言,然后发现线程的索引计算貌似有点不一样不太统一,所以写下自己的观点和看法。只有线程块kernel_function,num_threads>>>(){ thread_idx=(blockIdx.x*blockDim.x)+threadIdx.x; } 解释:线程的...

  • 关于线程循环执行

    Cat1类内的输出语句会... * 功能:演示线程的注意事项 */ package Demo14; public class Demo14_4 { public static void main(String[] args) { Dog1 dog1 = new Dog1(); dog1.run(); Cat1 cat1 = new Ca...

  • 关于线程大小和协程消耗资源

    关于线程大小和协程消耗资源为了实现并行,就必须开启多个相对独立的空间。独立空间最大可以通过开启不同的进程来实现,隔离度最大,但是相对的消耗资源最多。而线程在共享某些进程的资源,并且堆栈也相对小很多。...

  • 关于线程ID的一些理解

    在一个主进程(main)中创建了两个线程,如何将两个线程的ID打印出来? 一、创建一个线程,打印它的id值,代码如下: /*p310 功能:在main函数创建一个新线程,打印TID PID*/ #include #include pthread_t ...

  • 关于线程安全的记录以及python GIL

    线程安全就是多线程访问时,采用了加锁机制,当一个线程访问该类的某个数据时,进行保护,其他线程不能进行访问直到该线程读取完,其他线程才可使用。不会出现数据不一致或者数据污染。 线程不安全就是不提

  • C++ 关于 线程名称

    1、如何设置线程名称 为了给你的程序设置线程名称,可以使用以下函数:SetThreadName 。需要注意:线程名称被拷贝到线程的内存中,所以threadName参数可以被释放。 C++ // // Usage: ...

  • 关于线程号的一些总结

    首先,我们要知道一个进程可能包含多个线程,每个线程都有自己的id。获取线程id存在下面两种方法: 1、pthread_t pthread_self(void):  其中返回值类型为pthread_t,类型的定义如下所示: typedef unsigned ...

  • 关于线程和多线程,JAVA高并发程序设计

    关于线程和多线程,面试里你所要知道的一切(一)主要整理一些关于线程的知识,尽量做到言简意赅,面试的时候用。线程前段时间找工作,很多次问到关于线程的问题,回答的时候就开启背书模式:线程是轻量级的进程,是...

  • 关于线程暂停或指示线程准备暂停的十种方式介绍

    前言:在协作式线程调度器或者抢占式线程调度器上经常需要确保所有线程自身定期的暂停,这样其他的线程才可以有运行的机会.为了能让其他线程有机会运行,一个线程有10种方式可以暂停或者指示它准备暂停.主要分为下面几...

  • Java多线程(超详细!)

    什么是线程? 进程是:一个应用程序(1个进程是一个软件)。 线程是:一个进程中的执行场景/执行单元。 注意:一个进程可以启动多个线程。 eg.对于java程序来说,当在DOS命令窗口中输入: java HelloWorld 回车之后。...

  • C# 关于线程锁lock的使用方法

    在多线程编程中,可能会有许多线程并发的执行一段代码(代码块A),以提高执行效率。在某些情况下,我们希望A中的代码块(B)同步的执行,即同一时刻只有一个线程执行代码块B,这就需要用到锁(lock)。lock 关键字...

Global site tag (gtag.js) - Google Analytics