使用 ChicagoBoss 可以使用多个数据库
听说当你想要在 ChicagoBoss 中同时使用 DB1 的 foos 表和 DB2 的 bars 表时,可以使用 Sharding 功能。
设定
- 在 boss.config 文件中写入 db_shards 的配置。
{db_host, "localhost"},
{db_port, 27017},
{db_adapter, mongodb},
{db_shards, [
[
{db_host, "localhost"},
{db_adapter, mongodb},
{db_port, 27017},
{db_database, "db1"},
{db_shard_id, shard_first},
{db_shard_models, [foo]}
],
[
{db_host, "localhost"},
{db_adapter, mongodb},
{db_port, 27017},
{db_database, "db2"},
{db_shard_id, shard_second},
{db_shard_models, [bar]}
]
]},
- db_host, db_port, db_adapter などを db_shards より上に書いていた場合も、db_shards に書いた設定が優先されるとのこと。
-
- 创建模型 src/model/foo.erl 和 src/model/bar.erl。
- 从 boss_db 进行访问。
boss_db:find(foo, [], []),
boss_db:find(bar, [], []),
-
- 指定したテーブルのモデル(src/model/*.erl)がない場合、module_not_loaded というエラーになる。
- 指定したテーブルのモデルは存在するが実DBの設定がない場合、[]が返る。(エラーにならない)
如果未在db_shard_models中进行设置的话。
- db_shard_modelsに書かない場合、上に指定したdb_databaseにあるテーブルは読み込まれるらしい。
{db_host, "localhost"},
{db_port, 27017},
{db_adapter, mongodb},
{db_database, "db1"},
{db_shards, [
[
{db_host, "localhost"},
{db_adapter, mongodb},
{db_port, 27017},
{db_database, "db1"},
{db_shard_id, shard_first},
{db_shard_models, []}
],
[
{db_host, "localhost"},
{db_adapter, mongodb},
{db_port, 27017},
{db_database, "db2"},
{db_shard_id, shard_second},
{db_shard_models, [bar]}
]
]},
- この場合、fooテーブルを指定すると、db1から読まれる。
boss_db:find(foo, [], []),
请注意
-
- ChicagoBossの命名規則で、実際のテーブル名のsを取ったものがmodel名となる。
テーブル(collection)名: foos
model名: foo
为什么即使指定了table(“foo”),foo表也没有被加载,就像指定了表名和列名那样。