[Fswiki-dev] Re: IDの形式・適用範囲

Back to archive index

Hiroaki Sakuma hiroa****@sakum*****
2005年 4月 2日 (土) 23:22:56 JST


佐久間です.


> > 佐久間です.
> > 
>  :省略
> > > 3文字ならいかがでしょうか?私も計算して驚いたのですが(^^;
> > > [A-Za-z0-9]の62文字 ** 3文字(3乗) = 238,328ページ
> > > 十分でしょう。
> > 
> > MS系OSを考えると,A-Za-zは止めた方がよさそうですね.
> 
> おぉ、そちらを忘れてました(^^;
> Win版perlでのmktempはどのようになってるのですかね?
> http://search.cpan.org/~tjenness/File-Temp-0.16/Temp.pm
> なんて見つけたので楽出来ると思ったのです。
> Win系だと、
> [A-Z0-9]の36文字 ** 3文字(3乗) = 46,656ページ
> になりますか。それが溢れたら桁上がりすることにすると。
> いずれにしろOSとかPerlとかDBMの便利な機能を使わない手はないと思うのでそ
> れらを前提にID文字を議論した方がよいかなと思っています。
> 数値化はBase64デコードとか手はあると思いますし。

Win版は使ったことが無いのですが,Winでは何かとAaを区別しないようなので,この
ままファイル名とかに使おうとすると,ファイルシステムの制限もあったりします.
# "temp"と"Temp"は同じファイルになるようです
# MSの人が書いたドキュメントやコードでも,大文字・小文字が凄いテキトーらしい
# です


> > 例えば、将来、本文の内容を表わす
> > 短いセンテンス(あるいはキーワード群)を自動的に抽出できるような
> > 技術ができて、内容的な共通性に基いて自動的にリンクができるよう
> > になれば、題名をどう付けるか、ということはさほど重要ではなくなる
> > だろうと思うのです。また、一つのページが
> > 複数のキーワードを持っていたり、一つのキーワードが複数のページを
> > 指していたりするほうが(脳の連想能力と照らして)自然だと思うのです。
> 
> なんてアイデアも面白そうなのでおいおい考えてみたい。

確かに,一つのリンクが一つのページしか指さない,というのは固定観念に近いです
よね.最近だと,デッドリンクを嫌ってGoogleの検索結果にリンクを張ったりする人
も居るので,自然な考え方だと思います.

また,文章を解析して要約を作るような機能は,英語のワードプロセッサなんかだと
実装されてますよね.性能はどうか分かりませんが.
ワードプロセッサソフトも,日本語版は大幅に機能が削られてたりするので,知らな
い人が多そうです.(MS WORDも日本語版は機能が少ないみたいですね)

ただ,こちらも言語依存性が高くなってしまい,i18nを目指すときに障壁になってし
まいますね.


> > > ファイルシステムだとmktempがあります。RDBMは詳しくないですが、Accessは
> > > シーケンシャルもしくはランダムなIDを自動的にふることが出来ますね。他の
> > > RDBMもそういったID生成機能はありそうです。この場合、使用できる文字の限
> > > 定はあまりしない方がやりやすいですね。
> > > #ただしURLエンコードされない文字、[A-Za-z0-9_.*-]に限りたい
> > > ##mozilla以外で"_.*-"がエンコードされないかどなたか確認していただけま
> > > せん
> > > ?
> > 
> > RDBMSではシーケンシャルに付ける方法が多いと思います.
> > RDBMSでは,データ構造を設計する際,使う,使わないは関係なく,シーケンシャ
> > ル
> > なIDを付けるのがコツです.単純なSELECT(行選択)だけなら関係ないのですが,
> > LEFT 
> > JOINのようなTABLEを超えたリレーショナルな操作をする際に,シーケンシャルな
> > ID
> > を付けておいて,INDEXを生成すると動作が速くなるためです.
> 
> その際のIDの桁数に上限はありますかね?
> まぁ32bitなら問題はでなさそうですが、おそらく運用しだすと簡単に拡張は出
> 来ないですよね……

RDBMSの場合,AUTO_INCREMENTのキーワードでカラムを作るので,カラムの型依存で
すね.
カラムの型とサイズは,アーキテクチャとDBによるのですが,MySQLの場合,

UNSIGINED INT    4バイト
UNSIGINED BIGINT 8バイト

なので,INTでもほぼ問題になる数ではなさそうです.
http://dev.mysql.com/doc/mysql/ja/numeric-types.html
なお,上限に達すると,インクリメントされないようです.1バイトのTINY INTなら
最大が128なので,手動でテストできそうですね(^^;

MySQLに限っていうと,型の変更は可能です.ただし,BIGINが最大サイズなので,8
バイトを超えると手に負えませんが,インクリメント数が8バイトを超えるなんてい
う使い方は現実的ではないです.
# 作ったページが次々消えていくような使い方をしても,HDDの寿命の方が速そうで
# す

2^64 = 18E(エクサ)


> > なお,Operaでは_.*-はエンコードされません.
> ありがとうございます。Firefoxは多分mozillaと同じでしょう。
> IE、safariはどうなのかな?

Firefoxもエンコードしませんでした.Lynxもエンコードしないようです.


=====================
Sakuma,Hiroaki
 hiroa****@sakum*****



Fswiki-dev メーリングリストの案内
Back to archive index