Some work notes in 2012 Q1

1. Mysql 分表

分表分为水平分表和垂直分表,常用的是水平分表,通常是将一个表结构不变,数据分成两份或者多份存在不同表中。原因是由于一个数据表数据太多,影响操作效率,所以可以根据表中某个关键字段进行分表,比如可以根据主键的区间,或者根据时间搓的区间,或者根据特定业务进行分表,目的是将一个表的数据分在两个结构相同但是名字不同的表中,可以快速进行各种操作。

垂直分表则是将表结构分割成两个或者多个表,通过外键进行连接。


2. Mysql 建立索引

mysql索引是可以用多种方式建立,常用的有Btree,hash等。多数应用使用BTree。

建立索引需要注意的是:

1. 选择合适的key进行索引。

2. 需要根据具体业务优化进行符合索引

3. 建立索引后使用select语句的注意点。

具体可以参考:

http://www.codinglabs.org/html/theory-of-mysql-index.html

http://www.cnblogs.com/hustcat/archive/2009/10/28/1591648.html

http://www.perfgeeks.com/?p=460

http://www.linezing.com/blog/?p=664


3. CAP原理:

CAP原理:consistency,availability, Partition tolerance ,在分布式环境中,理论说只能保证其中两个,不能保证三个。Partition tolerance必须保证,所以consistency和availability只能保证一个,在Mysql数据库中强调consistency,而在Nosql环境中强调availability。


4. Mongodb

一种Nosql,是基于文档数据库。相比于memcache这样的kv系统,最大特点是可以建立索引,而索引的建立方法基本上和Mysql一样,使用的是BTree。关键需要考虑是mongodb的一致性,可扩展性,以及并发能力,索引效率等问题。


锁:根据mongodb官方文档的说法,mongodb不使用传统的锁。

   MongoDB does not support traditional locking and complex transactions for a number of reasons:

  • First, in sharded environments, distributed locks could be expensive and slow.  Mongo DB's goal is to be lightweight and fast.
  • We dislike the concept of deadlocks.  We want the system to be simple and predictable without these sort of surprises.
  • We want Mongo DB to work well for realtime problems.  If an operation may execute which locks large amounts of data, it might stop some small light queries for an extended period of time.  (We don't claim Mongo DB is perfect yet in regards to being "real-time", but we certainly think locking would make it even harder.)

单机一致性:单机情况下,单一线程读写保证一致性,即一个线程自己写的数据一定可以读出来。不同线程不保证写一致性,即如果发出了写冲突,mongodb不保证写一致性,需要用户自己解决冲突。

多机一致性:在多机情况下,即replicaset的情况下,如果允许在secondary的机器上进行读操作,可以会读到stale的数据,因为master已经被修改,而secondary可能还没有被更新。虽然primiary到secondary的更新速度很快,但是依旧存在不一致性,目的是提高可用性。


索引:同Mysql一样,使用BTree建立索引,效率感觉没有Mysql高,可能Mysql在索引方面优化做的比较好。


并发:暂时没有测试,网上数据表示不够乐观


参考:

一致性:

http://www.mongodb.org/display/DOCS/Atomic+Operations

http://stackoverflow.com/questions/8081629/mongodb-document-operations-are-atomic-and-isolated-but-are-they-consistent

http://www.allthingsdistributed.com/2007/12/eventually_consistent.html


5. log4j

6. webservice(cxf,axis2)

7. linux tcp tuning

8. mybatis,spring,struts.junit

发布了81 篇原创文章 · 获赞 22 · 访问量 36万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章