2009-07-26 17 views
0

私は私のプライベートサーバにhtmlファイルを保存してテストし、欺くために私自身のプライベートなpastebinを設定しようとしています。保存した後、保存したすべてのファイルを表示したいと考えています。testbin/pastebinのファイルをPythonで保存しています

私はこれをPythonで記述しようとしていますが、ファイルやコードを格納するのに最も実用的な方法は何でしょうか? SQLite?まっすぐなフラットファイル?

私が心配していることは、ファイルの一意性です。明らかに私はファイル名が矛盾することを望んでいません(おそらく 'タイトル'とタイムスタンプを使用して保存しますか?

+0

はコミュニティのwikiにする必要があります – SilentGhost

+0

ok - 編集したコミュニティウィキです。 –

答えて

1

私はjQueryスニペットをテストするためにDjangoに戻っています。参照:

http://jquery.nodnod.net/

あなたが興味があれば、私はhttp://github.com/dz/jquerytester/tree/masterではGitHub上で利用可能なコードを持っています。 、ファイルとして保存する場合は

  1. を、名前のために現在の時刻と塩を尋ねると、ファイル名のハッシュを生成します。あなたはストレートのPythonを使用している場合

    、命名アプローチするカップルの方法があります。

  2. mysqliteまたは他のデータベースを使用している場合は、数字の一意のIDを使用してください。

個人的には、私は#2に行きます。これは簡単で、一意性を保証し、さまざまなセットのファイルを簡単に取得できます。

+0

それはかなり素敵なスクリプトですよね、私はある時点でそれを想像していました。 –

1

lodgeitとお考えでしたか?あなた自身をホストすることができる無料のpastbin。私はセットアップがどれほど難しいか分かりません。

コードを見ると、ストレージ用のデータベース(sqlliteが行います)があります。彼らはそこに(これはsqlalchemyテーブルの宣言スタイルです)のようなテーブルをペーストしました。コードは単なるテキストフィールドです。

pastes = Table('pastes', metadata, 
     Column('paste_id', Integer, primary_key=True), 
     Column('code', Text), 
     Column('parent_id', Integer, ForeignKey('pastes.paste_id'), 
       nullable=True), 
     Column('pub_date', DateTime), 
     Column('language', String(30)), 
     Column('user_hash', String(40), nullable=True), 
     Column('handled', Boolean, nullable=False), 
     Column('private_id', String(40), unique=True, nullable=True) 
    ) 

また、バージョン管理に使用される階層(自己結合を参照)も作成されています。

0

プレーンファイルは間違いなくより効果的です。より複雑なクエリのためにデータベースを保存します。

コードを正しく強調表示するなど、ファイルのフォーマットを行う必要がある場合は、の前ににコードを保存することをお勧めします。そうすれば、ファイルが表示されるたびに書式を適用する必要はありません。

すべてのファイル名が一意であることを確実にする必要がありますが、ディスクにファイルが既に存在するかどうかを確認するだけで、名前に番号を付けてもう一度チェックしてください等々。単一のディレクトリ内LOT(〜100万)のファイルが存在する場合、ファイルシステムははるかに悪い行うことができるので

は、いずれかのディレクトリにそれらをすべて保管しないでください、あなたはこのようなあなたのストレージを構築することができます

をFILE_DIR/YEAR/MONTH/FileID.htmlファイルに一意のIDとして "YEAR/MONTH/FileID"パートをデータベースに格納します。

もちろん、パフォーマンスが心配しない場合(たとえば、多くのユーザーではない場合)は、すべてをデータベースに格納するだけで済みます。これは管理がはるかに簡単です。

+0

それでは、今月のファイルを毎日作成すれば、どのようにファイルを言うのでしょうか? –

+0

パフォーマンスが究極の懸念事項である場合、ファイルシステム上に非バイナリデータ(この場合はテキスト)を格納することはほとんど決してありません。適切なデータベースを使用すると、接続プーリング、ロードバランシング、自動ミラーリング、マスター/スレーブ関係などが可能になります。もちろん、より簡単かつ効率的にデータセット全体で複雑なクエリを実行する機能はもちろんです。 – thedz

+0

ええ、データセットが本当に小さい場合を除き、フラットファイルはBeanの規模を拡大しません。あなたの「ディレクトリあたりの百万のファイル」問題に対する解決策は、データベースを使用することです。 –

関連する問題