赞一个! 非常棒的创业团队!
HPB 芯链 团队技术实力强,致力于打造软硬件、芯片级加速的高性能区块链平台,国内外社区口碑很棒。
晓明 哥作为区块链技术早期探索者,一直积极推动区块链技术在国内的传播和应用落地,发起了深受行业认可的区块链视频节目《明说》,亲自编写了《以太坊官网文档中文版》一书,并作为主要作者参与了《区块链开发指南》一书的编写,持续影响着更多人参与到区块链技术的研究和推广。
刚看到,帮 @ Louis 顶一下,祝创业顺利!
加油!祝你们创业路上一帆风顺! @feitian124
之前关注过 Grape 写 API 的性能。与 Rails 相比,确实提升一点,主要提升在 Rails ActionDispatch::Routing 部分。但是,不论 Grape 还是 Rails,在处理 HTTP 请求方面,都很慢!一个 Grape 写的 Hello World API 并发量都很小。
对于创业初期的小项目,应该没有问题。已经有用户量的项目,需要考虑好,上线后的平行扩展,及时升级服务器硬件。
之前做的 AB 并发测试总结,写在一篇博客上了,感兴趣的朋友可以看一下。 PS:第一次冒充测试人员,做并发测试,应该有不少盲点,欢迎提意见。
另外,国外网友总结的一篇性能报告,非常值得一看: BTW:老外测试的硬件条件比较牛,所以,数据只能作为参考。
#4 楼 @quakewang Single table inheritance 这个方式实现挺好的:数据集中管理,实现逻辑分离,比较好维护。适用于:多种类型订单的生成,多种渠道的消息推送,多种支付的对接。。。
#55 楼 @gofreesky 可以这样理解的。 MySQL 保存的是用户产生的原始数据,ES 存储的是基于原始数据,建立的索引。
#30 楼 @storm_zhang 哈哈哈,3Q,安卓大神!
PostgreSQL 的 Unicode 编码,支持 1-4 个字节,所以,天然支持 Emoji 表情。
参考下面的官方说明文档: http://www.postgresql.org/docs/9.1/static/multibyte.html
如果你已经安装好 PostgreSQL,Rails 4 的相关配置如下:
# Gemfile
gem "pg", '0.17.0'
# config/database.yml
development:
adapter: postgresql
encoding: unicode
database: database_name
pool: 5
username: postgresql_user
password: postgresql_password
非常感谢分享!你们的实现比较好。
我最开始写了下面这个 Migration,处理只针对自身的项目,不够严谨。
def up
char_set = 'utf8mb4'
collation = 'utf8mb4_unicode_ci'
db_name = ActiveRecord::Base.connection.current_database
table_names = ActiveRecord::Base.connection.tables
# change database
execute "ALTER DATABASE `#{db_name}` CHARACTER SET #{char_set} COLLATE #{collation};"
# Mysql2::Error: Specified key was too long; max key length is 767 bytes
remove_index :users, :email
#change table
table_names.each do |table_name|
execute "ALTER TABLE `#{table_name}` CONVERT TO CHARACTER SET #{char_set} COLLATE #{collation};"
# change sting and text column
columns = ActiveRecord::Base.connection.columns(table_name)
columns.each do |column|
case column.type.to_s
when 'string'
if ['email'].include?(column.name.to_s)
execute "ALTER TABLE `#{table_name}` MODIFY `#{column.name}` VARCHAR(191) CHARACTER SET #{char_set} COLLATE #{collation};"
else
execute "ALTER TABLE `#{table_name}` MODIFY `#{column.name}` VARCHAR(255) CHARACTER SET #{char_set} COLLATE #{collation};"
end
when 'text'
execute "ALTER TABLE `#{table_name}` MODIFY `#{column.name}` TEXT CHARACTER SET #{char_set} COLLATE #{collation};"
end
end
end
# rebuild index
add_index :users, :email, unique: true
end
后期发现,以上的代码实现,如果没有索引的问题,不需要单独处理 String 和 Text 字段的。代码多余了。 然后,在本地测试和预发布环境,执行没有问题,但是,正式版部署遇到了问题。 之后,使用纯 SQL 脚本,在 MySQL client 里面调试,查找问题。
问题一是:MySQL client 版本低; 问题二是:阿里云的 RDS 数据库,只能在创建时设置编码,其后不能更改,可能是出于安全保护措施。
参加阿里云官方文档: RDS MySQL 使用 UTF8mb4 字符集存储 emoji 表情 http://help.aliyun.com/knowledge_detail.htm?knowledgeId=5990076&categoryId=8314909
BTW:不是在替阿里云做广告哈,只是,运维的同事比较偏向于,使用阿里云的服务。
Mark,学习~~
感谢 @quakewang 非常有帮助!
涨知识啦,值得实践一下~~
学习啦! Write fast Ruby/Rails.
帮顶
帮顶一下,Joy 很热情负责~~ @joy_wanyan
感谢整理,学习中~
谢谢分享:thumbsup: @tency