none
LocalDB をどう考えますか?どう捉えていますか?

    全般的な情報交換

  • 元ネタ : http://social.msdn.microsoft.com/Forums/ja-JP/f7b8fcbd-51b5-4783-9783-748816746466

    SQL Server 2012 から提供されるようになった LocalDB ですが、どう考えますか?
    元々は開発者の環境で SQL Server の管理の手間を省く、という開発者視点で設計された機能ですが、SQL Server 2008 までは存在せず、それでも開発が行えていました。
    実際、これまでは開発者が SQL Server の管理も兼ねていたり、開発環境に Visual Studio と SQL Server 両方をインストールしていたり、開発環境用の SQL Server を別途用意していたり、等々により開発が行えており、そこに LocalDB が登場したからと言って、無理に使う必要もありません。
    また、元々開発用ということで、本番環境では LocalDB をそのまま使うかどうかは自己責任だと思います。

    そんな位置付けが難しい LocalDB ですが、では他の開発者の方から質問されたらどう答えますか?
    1. 必要な考慮せずに本番環境まで LocalDB で組まれては困るので、初心者には「開発専用」だと言いきる。
    2. 開発限定ではないのだから個々人に任せるべきであって自身の意見を相手に強制するべきではないから「本番環境でも使える」と言う。
    私自身は、受け手のレベルや価値観によるので以下のような答えが良いかなと思いますが、回答ではなく逃げているという印象があるのも事実です。
    3. 断定しないけど設計意図を考慮して「開発用途が想定されている」と言う。そこで追加で突っ込んでくる方にはその段になってからより詳しく説明すれば良い。

    ただ、私も初心者相手であれば 1. のような回答をすることもありますし、相手が上級者であれば 2. のような回答することもあります。
    正直、LocalDB はどういう言い方をしても間違っているとまでは言えないように感じていて、私も捉えかねています。
    皆さんはどう考えますか?どういうものだと捉えていますか?


    MCITP(Database Developer/Database Administrator)


    2014年5月28日 2:10

すべての返信

  • 評価版のダウンロードページには

    LocalDB is a lightweight version of Express that has all its programmability features, yet runs in user mode and has a fast, zero-configuration installation and short list of pre-requisites. Use this if you need a simple way to create and work with databases from code. It can be bundled with Application and Database Development tools like Visual Studio and or embedded with an application that needs local databases.

    とあります。特に「It can be bundled with Application」「embedded with an application」といった記述を読むと、SQL Server Compact相当の役割もカバーしているようにも感じられます。

    # 当初は私も開発専用と認識していました…。

    2014年5月28日 3:00
  • チャブーンです。

    門外漢ですが、いえそうなことを。

    LocalDBの立ち位置については、蒼の王座さんが割と的確にコメントされているように思います。
    http://sqlazure.jp/r/sql-server/233/

    門外漢なので深いコメントはできませんが、「SQL Server Expressの二つの役割」と「SQL Server Expressを置き換えるものではない」というところをわかってもらえれば、あとは利用者側にゆだねてもいいような気がします。



    • 編集済み 星 睦美 2014年5月28日 4:51 リンク修正
    2014年5月28日 3:10
  • ご意見ありがとうございます。

    2014 のダウンロードページの記述は興味深いですね。
    Microsoft としても、開発当初はさておき、現在は要件次第で利用者次第というスタンスと理解しても良さそうですね。
    ユーザーが使用するにあたって Compact はインストール不要なのに対して LocalDB はインストールが必要となるなど、いくつか相違点がありますが、用途としては重複する部分も多そうです。
    Compact は 4.0 で止まったままなのが気になりますが・・・。

    蒼の王座さんのページは、LocalDB リリース前後のころの情報ですね。
    Express と比較した際に置き換えるものではなくつまるところ利用者側次第だというのは、その通りで今も変わらないと思います。
    Express に対して出来ることにそこまで大きな差があるわけではないので、開発時の使い分けが難しいのですよね。

    #リンク(HREF 属性)に不要な文字が入っているようで、リンク自体は 404 に飛んでしまいますね・・・。


    MCITP(Database Developer/Database Administrator)

    2014年5月28日 4:44
  • まず、LocalDBはアプリケーションと共に配置し、本番のアプリケーションでも使用できる、つまり開発専用ではないという事実があります。開発者のために開発されたというところから、開発専用という認識が独り歩きしているようですが、マイクロソフトの文献ではアプリケーションと共に配布するという記述は見ても、アプリケーションと共に配布してはいけないという記述を見たことがありません。つまり、開発専用という記述を見たことがありませんし、おそらく、マイクロソフトでは開発専用とは一言も言っていないでしょう。

    一方で、LocalDBを開発専用と言い切るのは事実とは異なりますが、ポリシーとしてはありでしょう。ここが問題となるところだと思いますが、事実とポリシーをごっちゃにしてはいけません。事実は事実として、ポリシーはポリシーとして、どのような人にも正しく伝えるべきだと思います。

    私はMVPとして個人的見解ではない事実を正しく伝えることが仕事の一つだと思いますし、多くの人が見ており、そこに書かれていることはかなり信頼がおけると思われているMSDNフォーラムにおいて、誤った、もしくは誤解されると判断される記述をできるだけ補正していくのも仕事の一つだと思っています。
    #多くの優秀な回答者が集うMSDNフォーラムに書かれていることに、誰も突込みを入れなければ、それは正しいことだと普通は思われるでしょう。

    さて、LocalDBは本当にアプリケーションと共に配布するのが難しいのでしょうか? LocalDB特有の制限があるのでしょうか? 確かにClickOnceで配布するのが今のところ面倒なことは、このスレの元になったスレで述べましたが、それ以外に何かあるのでしょうか? ClickOnceを除けば、SQL Server Expressを配布するのと大きな条件の違いはないように思います。よく配布の際に比較されるのがSQL Server Compactとの違いですが、インストールパッケージのサイズが大きいぐらいで、その他、問題となるようなことは指摘されていません。
    #(追記)naginoさんの書き込みで気が付きましたが、SQL Server Compactの場合、インストールの有無の差はありますね。LocalDBはSQL Server Compactの手軽さをゴールとしていたようですが、さすがにインストールは無くせなかったようです。

    また、LocalDBはどのような人をターゲットにしているのでしょうか? SQL Server Expressの一つですから、基本的にはプログラム開発で飯を食っている人達ではないでしょう。おそらくそういう人たちはDeveloper Editionを使っているのではないでしょうか?
    想像するに、初心者や一般のユーザーが無料のVisual Studioでデータベースを使ったアプリケーションを開発しようとした際に使うSQL Server Expressの敷居が高いというのが、大きな理由ではないでしょうか? つまり、開発者向けに開発されたLocalDBというのは、正確には初心者の開発者のために開発されたSQL Server Expressの簡易版という位置づけではないでしょうか?
    ここからLocalDBは開発者専用と誤解を生んでいるように思うのですが、そういう位置づけであれば、簡易版SQL Server ExpressであるLocalDBをアプリケーションと共に配布することは自然な発想だと思いますし、そうできなければならないと思います。

    既に述べた通り、LocalDBは実際にアプリケーションと共に配布できるのですが、これは初心者開発者だけではなくベテランの開発者にとっても、SQL Server CompactがSQL Serverと完全互換ではない、SQL Server Expressのユーザーインスタンスは非推薦である現状、不特定多数に配布するアプリケーションの組み込みデーターベースとして、有力な選択肢となり得るのはないかと考えています。

    実際、LocalDBを開発専用とした場合、配布するアプリケーションに組み込むデータベースはCompact EditionやMDBとなってしまいます(くどいですがSQL Server Expressのユーザーインスタンスは非推薦です)。しかし、これでは完全互換ではないLocalDBを開発用に使うわけにはいきません。つまり、LocalDBを開発で使った場合、配布するアプリケーションでもLocalDBを使うしかないのです。
    逆に言えば、LocalDBを開発専用にしてしまうと、本番で使うのはSQL ServerやSQL Server Express(ユーザーインスタンスではない)ということになりますが、このようなシナリオの元で開発する人たちは、最初からSQL Server Developer EditionやSQL Server Expressを使うことを選ぶ人たちだと思うのです。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年5月28日 4:56
  • 事実とポリシーの話は記載の通りだと思いますし、そこにどうこう言う人はいないと思いますので、そのままスルーとさせてください ^^;

    で、LocalDB が開発用として広まったそもそもの原因は分からないのですが、以下のページの書き出しの 1 文が一役買っているかなと思います。
    http://msdn.microsoft.com/ja-jp/library/hh510202(v=sql.110).aspx
    ここで「LocalDB はプログラム開発者を対象としている」と言いきる書き方になっているので、開発専用という捉え方も一理あるかなと思います。
    まぁ、この文章を書いた時の書き手の意図が分からないので、そうなのかどうかはわからないのですけどね・・・困ったもので。
    実際ダウンロードページ等で色々書かれていますので、開発専用ではない、というのが真実だと思います。

    あと、Compact はインストーラーのパッケージサイズよりも、ファイルベースの配置が出来るという方が大きな違いかなと思います。
    Compact はインストール不要で配置することができますが、LocalDB はインストール必須という違いがあるので、コピーのみで動作する(インストール不要な) Windows アプリ(アプリと言うよりはツール?)の場合に運用面で差が出ることがあるかと思います。
    ※Compact はインストールの形で配置することも、出来ます、念のため。
    Compact との違いがインストールパッケージのサイズぐらい、というのはやや語弊があるかと思います。

    で、開発するアプリが Windows アプリか Web アプリかによっても話が変わってくると思いますが、下のようなケースですと「開発時のみ LocalDB を使用し、本番では使用しない」というシナリオもあるかと思います。
    http://codezine.jp/article/detail/6531
    Web アプリでテスト用の環境ですとかそういったケースでも、接続文字列だけで別 DB に切り替えできて且つサーバー管理が不要という LocalDB は選択肢になるかなと思います。

    もちろん、インストールする形で配置する Windows アプリであれば、LocalDB を本番でも使うのも全然ありだと思います。

    それで、つまるところおまえはどうなんだ、となりますと、実は私は開発で LocalDB を使ったことがまだ一度もありません。
    使った方が良さそう、という状況になったことが無いんですよね。
    色々書いておいてなんですが、いまいち使うケースをイメージ出来ていないというのが正直なところです。


    MCITP(Database Developer/Database Administrator)

    2014年5月28日 5:50
  • >ここで「LocalDB はプログラム開発者を対象としている」と言いきる書き方になっているので、開発専用という捉え方も一理あるかなと思います。

    開発者を対象として開発されたことは間違いではなく、その開発者がアプリケーションにLocalDBを組み込んで使う場合もあるし、ない場合もあるというだけのことだと思います。原文にもtargetがDevelopersとなっているだけで、そこから先、LocalDBをアプリケーションに組み込むとか組み込まないとかの記述はありませんでした。
    とはいうものの、私も日本人として、開発者をターゲットにして開発されたという言葉から、開発専用という発想が広まるのは理解できます。ただ私は、CompactはSQL Serverと100%互換がないということで不満を持っていましたので、LocalDBをまずCompactの代わりとして見たので、その辺りの立ち位置の違いが影響していると思います。

    >※Compact はインストールの形で配置することも、出来ます、念のため。

    これは知りませんでした。ご指摘ありがとうございます。なんせCompactはMSDNフォーラムで回答する時にしか使ったことが無いものですから・・・(^^:

    >Compact との違いがインストールパッケージのサイズぐらい、というのはやや語弊があるかと思います。

    ありがとうございます。そうですね、ここは言い過ぎたと思います。すみません。ただ、言いたかったのは、インストール有無の面倒くささは別として、配布する際の制限としてはそれほど無いということでした。サイズの違いをすぐ上で書きましたが、昨今では問題にならないサイズ差ということです。

    >「開発時のみ LocalDB を使用し、本番では使用しない」というシナリオもあるかと思います。

    この場合、本番はSQL Serverですが、逆に言えばこのようなケースしか本番でLocalDBを使用しないということになると思います。要するにアプリケーションにデータベースを埋め込んで使うケースの場合は、開発時にしかLocalDBを使うということはまず無いように思います。

    >それで、つまるところおまえはどうなんだ、となりますと、実は私は開発で LocalDB を使ったことがまだ一度もありません。
    使った方が良さそう、という状況になったことが無いんですよね。

    先にも書いた通り、全ての開発者向けではなく、SQL Server Expressを使うような開発者向けだと思うのです。そもそもLocalDB自体がSQL Server Expressの一種ですし。ですから、私も今のところ必要を感じていません。ただ、くどいですが、データベースが組み込まれたアプリケーションの開発を求められたら、LocalDBを真っ先に検討すると思います。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年5月28日 6:48
  • > 実は私は開発で LocalDB を使ったことがまだ一度もありません。
    > いまいち使うケースをイメージ出来ていないというのが正直なところです。

    Visual Studio 2012 の Express 版を接続する際には、LocalDB またはユーザーインスタンスに接続することになるはずです。

    その延長で、LocalDB の制約を認識しないまま、本番環境でも LocalDB を使う人はきっといると思います。

    以前の例ですとユーザーインスタンスがそうです。このフォーラムでも、本番環境での接続文字列がユーザーインスタンスのままになっていた人を時々見ます。

    LocalDB の制約を認識した上で、それでも LocalDB を使うことにメリットがあると判断されるなら、開発者やユーザーのリスクで使えばいいというのは当たり前ですが、問題はその判断が本当に正しくできるかだと思います。

    ちなみに、自分には正しく判断できるほどの知識・自信はありません。なので、本番環境で使えるとは言えません。一言で言えば「LocalDB はあくまで開発用」となります。

    制約とメリットを天秤にかけて正しく判断ができる知識を持っている人なら、私が何と言おうと自分のリスクで使うと思います。

    判断できないのであれば、「LocalDB はあくまで開発用」でいいと思います。
    2014年5月28日 7:25
  • Compact は 4.0 で止まったままなのが気になりますが・・・。

    まだ読み切れていないので、脱線してこの部分だけに反応します。

    connectのPort SQL Compact to Windows RTには

    SQL Server compact edition is in deprecation mode with no new releases planned near future.

    というコメントが出ています。

    2014年5月28日 7:59
  • 自分は法律の専門家では無いので、あくまでも私見!と保険をかけた返信となりますが、
    LocalDBは、Microsoftが、「プログラムの設計、開発、およびテスト」専用と
    定義してると思っています。

    具体的には、LocalDBのライセンス条項の第一条で、
    「1. インストールおよび使用に関する権利。お客様は、お客様のプログラムの設計、開発、およびテストを行うために、
    任意の数の本ソフトウェアの複製をお客様のデバイスにインストールして使用することができます。」
    と記載しているので、そのように個人的には思います。

    参考:LocalDBが開発(プログラムの設計、開発、およびテスト)専用と思う理由
    http://sqlazure.jp/r/sql-server/401/



    2014年5月28日 8:01
  • 時代は Visual Studio 2012 ですか・・・いまだに良くて 2010 な感じなので未経験な世界です。
    それに自身の開発環境ではいつも Visual Studio のインストール時は Express 版無しでインストールして、必要に応じて別途 SQL Server の Developer Edition をインストールする形で構築しているので、Express 版はもともとなじみが薄いのですよね。
    MS で良くあるインストール時のお節介が過ぎるが故の厄介ごと、といった感じのようですね。
    一度 Visual Studio 2012 + SQL Server Express をインストールしてみたほうが良さそうですね。

    MCITP(Database Developer/Database Administrator)

    2014年5月28日 11:43
  • ご意見ありがとうございます。

    Compact 終了といううわさはなんとなく聞いていましたが、本当のようですね。
    インストール無し配布というのはそれはそれで便利なケースがあったのですが、まあしょうがないですね。

    ライセンス条項は興味深い視点ですね。
    私もライセンスのテキストファイルを確認しました。
    1. のところだけ抜粋すると確かにそのとおりですが、その直後に 2. という項目で権利を追加する記載があるので、そちらも確認しないといけませんね。
    そちらではいくつか制限はありますが、独自開発のアプリケーションに組み込んでの再頒布自体は許可されていますので、完成品(リリース版)としての Windows アプリケーションに組み込むことも許可されていると思われます。
    組み込んで再頒布するのは OK だけど、そのアプリを実業務で使ったら NG、というのは理解しがたいと思います。
    とまあ個人の意見はさておき、この組み込んでの再頒布に関する見解は、マイクロソフトに一度見解を確認してみたいですね。
    どのルートで確認するのがいいのだろう・・・?


    MCITP(Database Developer/Database Administrator)

    2014年5月28日 12:01
  • >具体的には、LocalDBのライセンス条項の第一条で、
    「1. インストールおよび使用に関する権利。お客様は、お客様のプログラムの設計、開発、およびテストを行うために、
    任意の数の本ソフトウェアの複製をお客様のデバイスにインストールして使用することができます。」
    と記載しているので、そのように個人的には思います。

    LocalDBはSQL Server Expressの一部として提供されたので、ライセンスのことなど考えたことも無かったのですが、確かに気になる文言ですね。ただ、実際に配布する記述はあちらのMSDNフォーラムにもありますし、一つの事柄からこうだと決めつけるのは危ないと思います。でも、勉強になりました。ありがとうございます。

    (参考)
    How to include LocalDb in ClickOnce Prereq List.
    http://social.msdn.microsoft.com/Forums/en-US/21cc111b-6d39-46e7-8c50-fd1554529b7d/how-to-include-localdb-in-clickonce-prereq-list


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年5月29日 2:20
  • Compact終了となると、アプリケーションに組み込めるDBとしては、LocalDBを除けばmdbぐらいになっちゃうってことかな?
    いずれにしてもSQL Server互換のLocalDBは魅力なんで、アプリケーションに組み込みたいというニーズは少なくないんじゃないかな?

    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年5月29日 2:24
  • Visual Studio 2013をインストールしてあるとC:\Program Files (x86)\Microsoft Visual Studio 12.0\Licenses\1041に

    • SQLServerExpress.rtf
    • SQLServerLocalDB.rtf

    が並んでますね。Wordの文書比較をすると書き換えられている部分が浮き彫りになりますが、確かにayatakaさんが引用されているように「お客様のプログラムの設計、開発、およびテストを行うために」が意図的に追加されていることがわかりますね。

    # 製品利用を認めないのに、再頒布を認める積極的理由がわからないなぁ…。

    別の視点として、開発者がExpress EditionなりDeveloper Editionなりを使う際、sysadminロールを使ってしまいます。そのまま製品化されるとアプリケーションもsysadminロールを要求してしまうのではないでしょうか?
    saアカウントやUACなどと同じでSQL Serverのロールも正しく運用してほしいという意図も含まれていたりするのでは思いました。

    開発中はLocalDBでsysadminロールを持つものの、製品化の際は開発者もSQL Serverをきちんと運用しロールを意識してほしい、と。

    2014年5月29日 4:54
  • ロールや権限の視点は、確かに LocalDB だと難しいかもしれませんね。
    ただ、そこをきちんとやる規模の開発であれば、開発環境に DB サーバーを建てるだろうという想定なのかもしれませんね。

    Windows アプリケーションに組み込んで使う場合と、組み込まずに本番では DB サーバーに切り替える場合とでは、それぞれ別物として考えた方が良さそうですね。


    MCITP(Database Developer/Database Administrator)

    2014年5月29日 12:06
  • ># 製品利用を認めないのに、再頒布を認める積極的理由がわからないなぁ…。

    マイクロソフトに問い合わせたところ、お客様の有償のアプリケーションに組み込み、配布可能とのことでした。
    ただし、ライセンスの件は最終的にはお使いになられる方が、きちんと確認をとって下さい。
    私は保障することができません。よろしくお願いいたします。


    ★良い回答には回答済みマークを付けよう! わんくま同盟 MVP - Visual C# http://d.hatena.ne.jp/trapemiya/

    2014年5月30日 9:32
  • おぉ、ご確認ありがとうございます。
    ということは、ライセンス面では問題なさそうですね。
    ライセンスには組み込むアプリケーションに関して制限がいくつか書かれているので、その点でも何に組み込んでも OK というわけではなくアプリケーションごとに確認は必要でしょうが、一概に禁止していることは無いという認識で良さそうですね。

    MCITP(Database Developer/Database Administrator)

    2014年5月30日 11:23