X



トップページDB@2ch掲示板
1002コメント312KB
SQLite Part.10
■ このスレッドは過去ログ倉庫に格納されています
0559NAME IS NULL
垢版 |
2016/10/22(土) 00:26:10.56ID:???
どこで日本語で記述するかという事だな。
0560NAME IS NULL
垢版 |
2016/10/22(土) 07:50:31.60ID:9o+gdt6B
latinをutf8又は、sjisに変えなきゃいけないはずだが、Linux環境だと
うまく行かない。
なんのこと言ってるか解らないのなら黙ってろ。
0561NAME IS NULL
垢版 |
2016/10/22(土) 07:51:30.93ID:9o+gdt6B
SQLite使いやすいな
0562NAME IS NULL
垢版 |
2016/10/30(日) 20:20:37.99ID:???
>>561
セキュリティもへったくれもないけどね。
0563NAME IS NULL
垢版 |
2016/10/30(日) 20:24:59.42ID:???
liteに使いましょう
0564NAME IS NULL
垢版 |
2016/10/30(日) 21:43:01.80ID:???
>>562
実体は単一ファイルをなんだから適切にアクセス権を設定すればいいだけ
0565NAME IS NULL
垢版 |
2016/10/30(日) 21:44:43.76ID:???
ファイル自体も暗号は掛けられないんでしたっけ?
0566NAME IS NULL
垢版 |
2016/10/31(月) 06:17:38.72ID:tmLBVYkg
DB Brouser for SQLight(データベースエンジンはSQliteでもSQlite3どちらでもok)
とAOOのBaseを使っている。
SQliteやSQlite3を生では使っていない。
生で使ってる人いるのかな?
0567NAME IS NULL
垢版 |
2016/10/31(月) 06:45:46.67ID:???
暗号化をサポートしてるファイルシステムなんていくらでもあるけど?
0568NAME IS NULL
垢版 |
2016/10/31(月) 10:58:18.64ID:???
ファイル盗まれた場合の話?
0569NAME IS NULL
垢版 |
2016/11/21(月) 21:08:34.31ID:???
winのコマンドラインでsqlite3.exe使ってるが、正規表現のdllどっかにない?
今使ってるのが、where regexp( string, pattern ) で使える奴なんだけど、SQL99標準の、 where string regexp pattern で使える奴がいい。
C++のコンパイルとかよう分からん。コンパイル済みの配布してるとこない?
0570NAME IS NULL
垢版 |
2016/11/23(水) 19:54:29.47ID:DiJKqqHt
>>562
OpenSSLライブラリで格納データ自体を暗号化すればセキュリティは無敵だよ
0571NAME IS NULL
垢版 |
2016/11/23(水) 21:24:50.88ID:???
とにかくファイル一個だし
0572NAME IS NULL
垢版 |
2016/11/25(金) 22:12:58.18ID:r96MQ2A1
そもそもデータベースじゃなくてファイル検索ライブラリだし
0574NAME IS NULL
垢版 |
2016/12/02(金) 15:54:32.19ID:kHH37Mmu
>>496を見つけてやってみたけどpragma設定は変わるがサイズが変わらん
公式のpragmaマニュアル読んだけど
これ上限設定するだけであらかじめ領域を確保するわけじゃないよな・・・
領域確保って無理なん?大量データ突っ込んでからdeleteするのはナシで
0575NAME IS NULL
垢版 |
2016/12/03(土) 11:28:12.04ID:???
そんなんsql1つで気軽にできたらHDD埋め尽くすウイルスみたいな振る舞いになっちゃうじゃないか
0578NAME IS NULL
垢版 |
2017/01/07(土) 19:45:53.97ID:???
WHERE句について教えてください。

WHERE (A, B) IN ...

というようなことをしたいのですがSQL文法エラーになってしまいます。

WHERE句で、複数のカラムを括弧で括ることができないようなのです。

同等のことをするには、どのように書いたら良いのでしょうか?
0579NAME IS NULL
垢版 |
2017/01/07(土) 20:17:03.63ID:???
AとBを結合すりゃいいんじゃね
0580NAME IS NULL
垢版 |
2017/01/07(土) 21:29:52.61ID:???
>>578
In の右辺が select なら exist に。そうでないなら素直に and と or 使いなされ。

>>579
A にも B にも現れない文字を区切りに使えるならいいけど、単純に連結するのは NG
0583NAME IS NULL
垢版 |
2017/01/08(日) 08:53:31.25ID:???
>>579, 580
やり方色々あるんですね。
とても参考になりました。
ありがとうございます。


ところで、

>> In の右辺が select なら exist

って具体的にはWHERE句にどう書くのでしょうか?
0584NAME IS NULL
垢版 |
2017/01/08(日) 11:26:10.96ID:???
SELECT * FROM HOGE
WHERE EXISTS(SELECT * FROM FUGA WHERE HOGE.A = FUGA.A AND HOGE.B = FUGA.B)
0585NAME IS NULL
垢版 |
2017/01/09(月) 12:41:36.74ID:???
>>584
コード、ありがとうございました!
さっそくやってみます。
0587NAME IS NULL
垢版 |
2017/02/08(水) 09:16:30.67ID:ib/65+FH
explainの見方がよくわからないのですが、
よくわからない人は、どこ見てそれがいいSQLであると判断すればいいですか?
ステップ(addr)の数が少なければ少ないほどいいってことでしょうか?
アプリケーションから実行速度を測る事はできるのですが、
純粋なSQLの実行速度を知りたいのですが、何か方法ありますか?
0588NAME IS NULL
垢版 |
2017/02/08(水) 12:43:05.00ID:???
複数行insertでprepared statementを使おうとしたら999制限に引っかかって挿入出来ません
何か良い解決策はありませんか?
0589NAME IS NULL
垢版 |
2017/02/08(水) 14:08:11.63ID:???
SQLITE_LIMIT_VARIABLE_NUMBER 変更するとか?
0592NAME IS NULL
垢版 |
2017/03/18(土) 06:19:56.54ID:???
SQLiteに保存する文字コードは、UTF-8が基本ですか?
SJISを保存すると問題おきますでしょうか?
0594NAME IS NULL
垢版 |
2017/04/11(火) 17:38:40.65ID:???
SQLiteにSJISで保存すると何か問題が起きるんですか?
ホントなら具体例を教えてください。
0596NAME IS NULL
垢版 |
2017/05/24(水) 07:42:43.39ID:???
>>592
DBのエンコーディングがutf8かutf16ってだけで
同じテーブルに別々の文字コード入れようがsjisで格納しようが別に不具合は起きない
当然そのままだと文字化けを起こす可能性があるが
それをどうするかはアプリケーション側の問題
0597NAME IS NULL
垢版 |
2017/05/24(水) 21:23:46.06ID:???
>>596
LIKE演算子でちゃんと「%」を「%」と認識してくれるか、とか心配だが
大丈夫なのかな。
0598NAME IS NULL
垢版 |
2017/05/25(木) 10:39:50.92ID:???
どのDBもクライアントのエンコーディングは意識しないとだけど
それはDBのエンコーディングとは別の話
0599597
垢版 |
2017/05/25(木) 18:32:52.30ID:???
>>598
ごめんちょっと言い方が足りなかった。

マルチバイト文字列のSQL文を、DB側が正しく構文解析してるれるかなぁ・・・という質問でした。
たとえば、SELECT... WHERE xxx like '〇〇〇%';
というSQL文の場合、「〇〇〇」を正しく解釈し、次の文字の「%」を認識してくれるのかなぁという心配です。
〇がどんなマルチバイト文字でも大丈夫なのかな?
0600NAME IS NULL
垢版 |
2017/05/25(木) 18:44:27.94ID:???
うーん、、そのつもりで答えたんだけどな
クライアントの環境によるだろうけど、固定文字コードかロケールで切り替えるようになってるはずで
そのコードに沿ってないとSQL解釈も期待どおりにならない可能性はあるね
0601NAME IS NULL
垢版 |
2017/05/25(木) 18:47:20.11ID:???
ちなみにクライアント側が文字コードあってれば
サーバの文字コードに変換するのはクライアントの役目
通常サーバ側の文字コードはクライアントから切り替えられるようになってるので問題ないが
SQLiteの場合サーバ側の処理もクライアントがやるからそれだけ合わせとけばいいかと
0604NAME IS NULL
垢版 |
2017/06/09(金) 19:27:52.36ID:HI+OVZBi
日本と海外のユーチューバーは収入の仕組みが違う?!どっちが儲かるか?
http://youtube-youtuber.com/360.html

日本の従来型のユーチューバーは、広告収入をメインの収入源としています
1.動画にのせる広告(動画広告+画像広告)からの報酬や
2.スポンサー収入(企業からの依頼を受けて商品を紹介)

海外のユーチューバーの傾向として、広告収入ではなく、自分のビジネスを
メインにすることによって広告収入を遥かに超える収入を叩き出しています。
例えば、beauty guru(美のカリスマ)と謳われる、ユーチューバーのミシェル・ファンは
広告収入は1800万得ていますが・・他方で美容化粧品会社Ipsyを立ち上げて、
年収1億ドル(約110億円)を売り上げました。
彼女は「メイクのチュートリアル動画」を投稿していますが、動画の中で自分の会社の商品を
使っているんです。
そしてその中で使った商品を、online shopで買える仕組みにしています。
他人の商品を紹介して、そこから「おこぼれ」を貰うより、自分の商品を売った方が
遥かに儲かりますからね。

リンジー・スターリングは踊りながら、バイオリンを演奏する、アーティストですが・・・
彼女の場合も、あくまでも動画を投稿するのは、自分のビジネスである、
ツアーチケットやアルバムの販売のためなのです。
0605NAME IS NULL
垢版 |
2017/06/18(日) 17:51:34.06ID:???
ついにV4が来てしまったようだな。
これでDB界のパワーバランスが変わる。
0606NAME IS NULL
垢版 |
2017/06/18(日) 19:16:36.85ID:???
え?
まだ3.19じゃないの?
0608NAME IS NULL
垢版 |
2017/06/18(日) 22:08:31.74ID:???
(゚∀゚ 三 ゚∀゚)、
0609NAME IS NULL
垢版 |
2017/06/21(水) 22:57:56.93ID:4A99RJhE
>>605
おぉ!
0610NAME IS NULL
垢版 |
2017/06/22(木) 04:27:42.58ID:???
よしオラクルを空売りしよう!
0611NAME IS NULL
垢版 |
2017/06/22(木) 23:52:30.19ID:???
4だとZIPVFSが無償で使えたりしないかなw
0612NAME IS NULL
垢版 |
2017/06/23(金) 20:53:47.60ID:???
numeric 型が気になるなぁ
0615NAME IS NULL
垢版 |
2017/07/08(土) 09:01:20.67ID:P1W8iwhy
>>605
ストアドプロシージャとか使える?
0617NAME IS NULL
垢版 |
2017/08/11(金) 08:00:27.63ID:???
ファイルシステムよりも35%高速に
ttp://postd.cc/faster-than-fs/
0619NAME IS NULL
垢版 |
2017/08/29(火) 18:43:15.91ID:???
sqliteだと、managementstudioみたいなツールは何が使い勝手いいですか?
0620NAME IS NULL
垢版 |
2017/08/29(火) 21:14:17.01ID:OhjuD9IQ
>>619
何年か前にフリーのを一通り試したときは
結局Firefoxのアドオンのやつがよかった
0621NAME IS NULL
垢版 |
2017/08/29(火) 22:18:32.51ID:???
>>620
アドオンすか・・インストール型とかイメージしてました
0622NAME IS NULL
垢版 |
2017/08/29(火) 22:18:48.87ID:???
>>620
アドオンすか・・インストール型とかイメージしてました
0623NAME IS NULL
垢版 |
2017/08/29(火) 23:12:13.61ID:???
SQLiteStudioまあまあ
SQLite以外を扱う必要がなければ十分
見た目もManagement Studioに近い
0624NAME IS NULL
垢版 |
2017/08/31(木) 13:06:37.85ID:FED7sUEP
いるいるいるよね貝社員
0626NAME IS NULL
垢版 |
2017/09/21(木) 14:38:04.47ID:CPk5Opit
MATCHだけど
SELECT * FROM vtbl AS v WHERE v MATCH 'foo';
だとvなんてカラムねーよとエラーになる
SELECT * FROM vtbl WHERE vtbl MATCH 'foo';
ならOK
なんか納得いかない

vtblはvirtual tableです
0627NAME IS NULL
垢版 |
2017/10/02(月) 01:35:45.11ID:???
MATCHで指定するのはテーブルじゃなくてカラムだと思うんだが
0634NAME IS NULL
垢版 |
2017/11/08(水) 15:34:14.65ID:???
>>633
肝心なところが引用できてないぞ
0635NAME IS NULL
垢版 |
2017/11/08(水) 15:47:10.99ID:???
君が肝心と思ったところは君が引用すればいいと思うよ
0636NAME IS NULL
垢版 |
2017/11/08(水) 15:47:57.57ID:???
SQLite4は元々リリースするつもりは無かったのか?
0639NAME IS NULL
垢版 |
2017/11/11(土) 20:56:08.93ID:???
初歩的な質問なのですが、
SQLiteのテーブルにboolean型のカラムを作って
C#のプログラム側から参照してbool型の変数に代入しようとすると
型が違うと怒られます

sqliteのboolean型はbool型に入れられないのでしょうか
0640NAME IS NULL
垢版 |
2017/11/11(土) 21:23:40.52ID:???
>>639
sqliteのboolean型はint型じゃないのかな。
intでバインド
0641NAME IS NULL
垢版 |
2017/11/11(土) 21:46:12.74ID:???
>>640
ありがとうございます
C#側でint型変数に代入を試みたところ0 1で値が入りました
0643NAME IS NULL
垢版 |
2017/11/11(土) 22:08:14.79ID:???
>>642
ありがとうございます
読んでみます
0644NAME IS NULL
垢版 |
2017/11/18(土) 01:48:42.44ID:F7zPqW66
>>636
元々実験バージョンだったはず
0645NAME IS NULL
垢版 |
2017/11/18(土) 12:09:57.30ID:???
なんのための実験?
0646NAME IS NULL
垢版 |
2017/11/24(金) 19:36:24.57ID:???
質問です。
ATTACHをすると異常に遅くなるのですが、これは最新バージョンで直ってますか?
或いは何らかの対策がありますか?

[環境]
PHP7.1.8+SQLite3.15.1(今年9月時点でのxampp最新版)
SQLite3.21.0のDLLをDLして差し替えたが動作せず

[状況]
・openよりもattachの方が優先順位が低いのか、追い越されている時がある。
・基本的にシーケンシャルにリクエストをしている。
(30秒ごとにキューに溜まったリクエストを順次送信する。
前リクエストの結果を受け取ってから0.1秒待って次リクエスト発行、これでシーケンシャル。
ただし30秒でキューが掃けない場合、上に被せるので、一時的に2並列になるときがある。)
・連続した場合、2回目以降は早い(ことが多い)。1回目は6秒程度、2回目以降は0.1-0.2秒程度で終了する。
・Timeout設定は5秒だが25秒かかっても問題なく正常終了する(タイムアウトしない)
・用途は掲示板で、リクエストはスレ立て/投稿/閲覧/スレ落ちを混ぜてテスト中。
・試行錯誤した結果、ATTACHしただけで遅いようだと判明した(ATTACHしたDBを触らずとも遅い)

[推定]
連続した場合には早いので、EXCLUSIVEロック待ちだと推定している。
ただしリクエストはほぼ全部シーケンシャルなので、本来はロック待ち自体がおかしい。
なお以下仕様のため、sqlite_masterの合成に時間がかかっているのか?とも思い、
全部mainをつけてみたが変化なし。(連続した場合に早いのでこの線もおかしいが)
> If the name of the table is unique across all attached databases and the main and temp databases, then the schema-name prefix is not required.
> http://www.sqlite.org/lang_attach.html

今のところ納得できる理由(原因)が見つかっておらず、対策が出来ていません。これについて、
対策方法(最新バージョンで直っているのならそれでよし)をご存知であればご教授ください。

最新版をPHPで試す方法はPHPのスレで聞いてみます。
0647NAME IS NULL
垢版 |
2017/11/25(土) 14:28:33.17ID:???
>>646
自己解決しました。

ATTACHの速度が対象DBのtable数にかなり依存するため、
ATTACHするとその場でsqlite_masterの合成をするのだと推定しました。
従って、ATTACH順を変更することにより改善できます。
今回は3つのDBを同時に扱うため、3C3の6通りでしかなく、速いのを選ぶことにしました。

なお、この実装がよいのかは若干疑問です。
通常はATTACH対象をさほどゴリゴリやらないので、
合成ではなく直列(カスケード)にして、その都度順に引いた方が速いと思われます。
或いは、合成/直列を選択するpragmaがあればよいのですが、これもないようです。
これらの問題のため、最新版等では改善している可能性もあります。(試せていません)

何か対応しようとしてくださった方が居ましたら、ありがとうございました。
0649NAME IS NULL
垢版 |
2017/11/25(土) 16:20:09.78ID:???
>>647
ついでに続報を言うと、
ATTACHが遅くなるのはシステムキャッシュが無効(容量が足りない)時だけのようです。
合成自体は十分速く、
断片化したDB内のsqlite_masterのHDDからの読み出しに時間がかかっているようです。
だからまあ、現在(SQLite 3.15.1)の実装で問題ない、ということにもなりますが、、、

私の環境では、
RAMに十分空きがある(システムキャッシュにヒットする)場合には、
ATTACHは0.04-0.06秒程度で終了します。
RAMを使い尽くしている(システムキャッシュに十分な容量がない)場合には、
ATTACHだけで2-6秒程度かかり、これはVACUUM等で改善します。
また、ATTACHの順番を変えると何となく雰囲気が変わります。
(ただしこの結果は少し矛盾してますが)
0650NAME IS NULL
垢版 |
2017/11/25(土) 16:21:49.63ID:???
わざわざATTACHする理由は
0651NAME IS NULL
垢版 |
2017/11/25(土) 17:33:35.10ID:???
>>650
DB間のデータ転送をtransactionで括るため
0652NAME IS NULL
垢版 |
2017/11/25(土) 17:54:56.49ID:???
>>651
ATTACHするDBは違うホストにあるって事?
2相コミットのかわり?
0653NAME IS NULL
垢版 |
2017/11/25(土) 18:59:03.84ID:???
>>652
> 2相コミット
なんだこりゃ?Wiki読んだが何に使うのかよく分からん。
分散掲示板という意味なら面白いと思うし一部に待望されているが、俺が今作っているのはこれではない。
DBは同一ホストにある。

単にSQLiteの性能を出すために適宜DBを分割しているだけ。
というか、ロック単位がDBだから、平行させるためには分割するしかなく、そうしてるだけ。
(テーブル単位でロックできる他DBなら分割する意味はない)
例えばtech板なら、
「スレ本体(tech.live)」「スレヘッダのみ(全板共通)(tags.db)」「スレアーカイブ(tech.archived)」にしてあり、
スレ落ち時に
・tags.dbからヘッダを消去
・tech.live->tech.archivedにスレ内容転記
・tech.liveからスレを消去
する為にこれら3つをトランザクションで括っている。
この間に別板のスレの読み出しは、例えばprog板ならprog.liveだけで完結するのでブロックされない。
書き込みは全板共通のtags.dbによってブロックされてしまうが、これは仕様上致し方なし。
掲示板なので読み出し性能重視でこの設計にしている。
0654NAME IS NULL
垢版 |
2017/11/25(土) 19:07:59.44ID:???
>>653
2相コミットってSQLiteにあったのか
侮れんな

そんな面倒なことするのなら他のDBMSで良いんじゃね? とは思うけど
SQLiteじゃなきゃ駄目な理由があるんでしょうな
0655NAME IS NULL
垢版 |
2017/11/25(土) 19:18:27.38ID:???
>>654
複数DBのトランザクションという意味なら、それは追加されたらしい。
いつからかは知らん。

> SQLiteじゃなきゃ駄目な理由があるんでしょうな
共用鯖上で、PCの知識がほぼ無いadminでも扱える掲示板を目指している。
そのデプロイの都合上、PHP+SQLiteだ。
上位版はNodeで用意する予定だが、こちらもSQLiteになる。
それ以上の上位版は、他に既に色々あるからそっち使え、で行く。
興味あるのなら以下を読んでくれ。
https://meguca.org/g/2724701
0656NAME IS NULL
垢版 |
2017/11/25(土) 19:32:02.29ID:???
そういえばSQLiteのmainデータベースの名前を変える方法知らないか?
ググったけどなさそうなんだが。

具体的には>>647を試したコードがmainが3種類必要で結果的に3つコピペしてありうざい。
(live,tags,archiveにすれば共通化できるが、どれかをmainにしないといけない縛りのため)
0657NAME IS NULL
垢版 |
2017/11/25(土) 19:40:25.85ID:???
>>655
DBエンジンのインストールや設定って素人は難しく感じるようですね。
SQLiteは1ファイルで独立エンジン不要なのでローカルDBに使う分には良いですわ。
0658NAME IS NULL
垢版 |
2017/11/25(土) 19:42:22.24ID:???
>>656
データベースのファイル名を変えるだけでは?
0659NAME IS NULL
垢版 |
2017/11/25(土) 19:47:20.46ID:???
>>658
違う。
というか、調べた限り、ATTACH自体が新しい機能らしくて、そこまで整備されてない。
どの名前でもopenしたものはmainになるし、メモリ上のはtempになる。
それにATTACHしたものは自由に名前を付けられる、というか、つけないとsyntax上アウト。
で、mainの別名をつけられれば助かるんだが、、、
なお、tableやcolumnは別名を付けられる。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況