使用 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 に書いた設定が優先されるとのこと。
    1. 创建模型 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表也没有被加载,就像指定了表名和列名那样。

广告
将在 10 秒后关闭
bannerAds