动态自动分片支持Scala Slick

动态自动分片支持Scala Slick,scala,slick,sharding,typesafe,Scala,Slick,Sharding,Typesafe,这篇文章与在上已经提出的问题有关 指向应更改以实现此功能的代码的指针在中给出 我是Scala和Slick的新手,我能得到一些帮助吗,关于如何继续实施此功能。在应用程序级别,是否有任何slick/scala模式可以执行此操作 我的问题是“我有MySQL不同分片的连接池,当我编写一个涉及ID(分片键)的查询时,slick应该在相应的数据库分片上动态运行该特定查询” 例如:如果我写这样一个查询 val q = for ( user <- users.filter(_.name === "ca

这篇文章与在上已经提出的问题有关

指向应更改以实现此功能的代码的指针在中给出

我是Scala和Slick的新手,我能得到一些帮助吗,关于如何继续实施此功能。在应用程序级别,是否有任何slick/scala模式可以执行此操作

我的问题是“我有MySQL不同分片的连接池,当我编写一个涉及ID(分片键)的查询时,slick应该在相应的数据库分片上动态运行该特定查询”

例如:如果我写这样一个查询

  val q = for ( user <- users.filter(_.name === "cat")

                post <- posts.filter(_.postedBy === user.id)

                comment <- comments.filter(_.postId === post.id)

                } yield comment.content

    q.run

    a trivial case should be like one below.

    users += User(id = 1, name = "cat", email = "cat@mat.com") => hits shard no 1
用法:

     val q = users.insert(User(id = 1, name = "cat", email = "cat@cat.com"))

     func(q, shards, 10) => q executes on one of the 10 shards.

谢谢。

Slick是一个非常高级的Scala库。当您刚接触Scala时,更改它的实现将非常困难。这是一个非常广泛的问题。如果您尝试了它,并且在途中遇到了更具体的问题,人们会回答的变化会更大。在应用程序级别有没有什么巧妙的模式可以做到这一点@这是非常低的优先级。我们可能永远也不会实施它。应用程序级模式可能是从ids到slick数据库对象的一个函数,这基本上说明了哪个碎片负责ids。为什么需要在应用程序级而不是数据库级执行此操作?我认为slick的级别太高了。
     val q = users.insert(User(id = 1, name = "cat", email = "cat@cat.com"))

     func(q, shards, 10) => q executes on one of the 10 shards.