若天明 发表于 2015-1-16 22:37:02

MYSQL网页编程之MySQL 文件体系

不管怎么样,市场的结果已经证明MySQL具有性价比高、灵活、MySQL学习教程广为使用和具有良好支持的特点。mysql实践上,这不是一般意义上的文件体系,它没有磁盘空间,
而是利用MySQL保卫程序来存储数据。能够把SQL表和
一些函数经由过程文件体系来完成。
1、如何完成?
让我们来看利用实例:
#mount-tcorbafs-o`cat/tmp/mysqlcorbafs.ior`none
/mnt/mysql/

#mount
/dev/hda3on/typeext2(rw)
noneon/proctypeproc(rw)
noneon/dev/ptstypedevpts(rw,gid=5,mode=620)
/dev/hda1on/mnt/wintypevfat(rw,mode=777)
/dev/hda4on/mnt/linuxtypevfat(rw,noexec,nosuid,nodev,mode=777)
noneon/mnt/mysqltypecorbafs
(rw,IOR:01e50d401b00000049444c3a436f72626146532f46696c6553797374656d3a312e
300000010000000000000030000000010100000a0000003132372e302e302e310008041800
0000000000009224bc335663462a01000000ef7ae13c0943c59f)
#ls-la/mnt/mysql/
total0
-r-xr-xr-x1rootroot4096dets2922:21.uptime
dr-xr-xr-x1rootroot4096dets2922:21test
dr-xr-xr-x1rootroot4096dets2922:21mysql
#cat/mnt/mysql/.uptime
1994
#cat/mnt/mysql/mysql/user/Host
cpq.spam.ee
cpq.spam.ee
localhost
localhost
localhost
localhost
localhost
localhost
#cat/mnt/mysql/mysql/user/Insert_priv
N
N
N
N
N
N
Y
Y
#umount/mnt/mysql/
2、为何要如许做呢?
在一些情况下,如许做能让事情加倍轻松。MySQL和文件体系都能叫做数据库,可是有
着尽然分歧的观点和优弱点。在文件体系里,工具能很快并且很简单找到,即便改动名
字也能很快找到。每个初学者也许都应当学会move/copy/rename/delete如许的操纵。
可是SQL纷歧样,
他经由过程使用程序来利用存储在文件体系上的数据。而MySQL文件体系把SQL做到了用户
级。用户能用他们晓得的体例来操纵数据库。
-任何一个新产物必要经由过程收集存取数据的话,必需撑持一些协定和大概的其他举措通
过收集存取文件体系。MySQL表就能够经由过程如许的体例来存取,即便MySQL没有移植到
对应的平台。
-备份和版本把持,一般的文件体系经由过程任何备份软件就能够完成。数据能够经由过程diff
来对照而且用cvs来把持版本。
-更短的编程工夫,偶然候人们必要保留复杂的数据,像以后日期大概站点名字,这些数
据很少改动,一般的办法必要利用:
毗连服务器->选择数据库->实行命令->存储了局
而利用MySQL文件体系后,只必要一句话:(PHP完成)
include(¨/mountpoint/database/table/field¨);
大概,换一种体例表达:
include(¨/mnt/mysql/sitedata/topic/todaytopic¨);

如许就很简单了解,也占用了较少的空间。还能够经由过程SAMBA来共享/mnt/mysql,到达
间接修正SQL数据库
的目标。能间接写文本到数据库,大概利用拷贝/粘贴功效把图片放进数据库,这要比用
Perl大概PHP写几百路程序省力多了。

3、功能怎样?
在宣布这篇文章的时分,这个文件体系还处于原型开辟阶段,因而,速率还不是很幻想。
假如到了正式公布的时分,一些数据库功效会比利用SQL要快。固然,良多仍是没法和
SQL比拟,不管是功能上仍是功效上,良多庞大的查询仍然必要经由过程SQL语句来完成。但
是,如许节俭了良多开辟和培训的工夫,以是在效力下去说也是一种节俭。
4、撑持的表范例:
今朝这个文件体系撑持一切的表范例:MyISAM,DBD,HEAP,ISAM。
5、其他的特征:
在第一步开辟中完成的还只是只读,很快会有能读写的版本出来。今朝的企图是把数据库
工具映照成文件和目次工具。让我们来看看例子:

--8<-----------------------------
#创建表
CREATETABLEinvoice(
invoice_idint(10)unsignedNOTNULLauto_increment,
invoice_noint(10)unsignedDEFAULT0NOTNULL,
payeechar(40)DEFAULTNOTNULL,
PRIMARYKEY(invoice_id),
KEYpayee(payee)
);
#拔出数据
INSERTINTOinvoiceVALUES(1,100,CompanyAB);
INSERTINTOinvoiceVALUES(2,101,CompanyCD);
INSERTINTOinvoiceVALUES(3,102,CompanyEF);
--8<-----------------------------
由于MySQL没有举措利用纪录号,以是我们必需创建主键。
就有了以下的目次布局:
/mountpoint/database/table/primary_key/field
如许,每一个列呈现在分歧的文件行当中,文件树的布局以下:
/mnt/mysql/mydata/invoice/1/invoice_id
/mnt/mysql/mydata/invoice/1/invoice_no
/mnt/mysql/mydata/invoice/1/payee
/mnt/mysql/mydata/invoice/2/invoice_id
/mnt/mysql/mydata/invoice/2/invoice_no
/mnt/mysql/mydata/invoice/2/payee
/mnt/mysql/mydata/invoice/3/invoice_id
/mnt/mysql/mydata/invoice/3/invoice_no
/mnt/mysql/mydata/invoice/3/payee
别的,另有第二个举措可使用:
/mountpoint/database/table/.table

/mountpoint/database/table/primary_key/.record
/mnt/mysql/mydata/invoice/.table
/mnt/mysql/mydata/invoice/1/.record
/mnt/mysql/mydata/invoice/1/invoice_id
/mnt/mysql/mydata/invoice/1/invoice_no
/mnt/mysql/mydata/invoice/1/payee
/mnt/mysql/mydata/invoice/2/.record
/mnt/mysql/mydata/invoice/2/invoice_id
/mnt/mysql/mydata/invoice/2/invoice_no
/mnt/mysql/mydata/invoice/2/payee
/mnt/mysql/mydata/invoice/3/.record
/mnt/mysql/mydata/invoice/3/invoice_id
/mnt/mysql/mydata/invoice/3/invoice_no
/mnt/mysql/mydata/invoice/3/payee

这些文件是隐含的,以防反复,次要用来便利地经由过程文本文件扫瞄器来检察。
如今,在那些必要利用SQL语句搜刮最小,最年夜,最初等数据,能够经由过程标记毗连来实
现了:
/mountpoint/database/table/primary_key/.max
大概
/mnt/mysql/mydata/invoice/invoice_id/.max
大概指向
/mountpoint/database/table/field

/mnt/mysql/mydata/invoice/3
一样的就能够前往一行的min/max/sum/avg等数值。
这能很快而且很简单地完成。
/mnt/mysql/mydata/.keys/
/mnt/mysql/mydata/.keys/invoice_id/
/mnt/mysql/mydata/.keys/payee/
标记毗连到主键:
/mnt/mysql/mydata/.keys/.primary_key/
实践上指向
/mnt/mysql/mydata/.keys/invoice_id/
另有一些埋没文件供应键范例:
/mnt/mysql/mydata/.keys/invoice_id/.type
/mnt/mysql/mydata/.keys/payee/.type
第一个文内容为:¨PRIMARYKEY¨第二个为¨KEY¨。
别的还能够用索引来排序纪录,假如读取上面的目次:
/mnt/mysql/mydata/.keys/payee/asc/
PHP的readdir()函数就以升序前往数据的标记毗连。
别的另有一些全局函数:
/mountpoint/.version
/mountpoint/.last_insert_id
/mountpoint/.uptime
/mountpoint/database/.raid(0/1)
/mountpoint/database/.type(ISAM/MyISAM/HEAP/DBD)
/mountpoint/database/.tables
/mountpoint/database/table/.created
/mountpoint/database/table/.last_updated
/mountpoint/database/table/.last_checked
/mountpoint/database/table/.count

6、写权限?
在开辟的第二阶段,会有措施实行SQL语句。如今的思绪是:
接纳目次:
/mountpoint/database/.command/
然后实行命令,把SQL语句作为目次创建。
大概创建目次把SQL语句作为文件放进这个目次。
两个计划都有长处,第一个计划能够从头利用SQL语句,可是如许的目次名其实不敢令
人苟同。第二个计划接纳旌旗灯号量文件,语句实行终了就删除这个文件,没有义务利用时,
目次也被删除。关于那些慢速的查询呼应,能够选择timeout的工夫。
7、权限办理
在权限办理方面,可使用Unix的权限办理体例,如许的计划看来是最好的。
DBaaS和其他云服务之间的区别是:DBaaS专注于提供类似关系数据库管理系统RDBMS(比如SQLServer、MySQL和Oracle)的数据库功能。事实上,RDBMS已被证明是一种适合于在各种情况下管理结构化数据的有效工具。

乐观 发表于 2015-1-18 14:34:47

连做梦都在想页面结构是怎么样的,绝非虚言

admin 发表于 2015-1-22 06:51:01

所以你总能得到相应的升级版本,来满足你的需求。

愤怒的大鸟 发表于 2015-2-6 16:54:56

同样会为索引视图等应用带来麻烦。看看行级和事务级的快照数据放在tempdb中,就能感觉到目前架构的尴尬。

山那边是海 发表于 2015-2-17 09:48:37

习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。

只想知道 发表于 2015-3-12 11:57:57

我个人认为就是孜孜不懈的学习

小魔女 发表于 2015-3-19 21:55:45

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
页: [1]
查看完整版本: MYSQL网页编程之MySQL 文件体系