Comments (12)
@jtaylor-sfdc @preillyme Here is my thought on this issue.
Transaction algorithm of Haeinsa relies on checkAndPut
and checkAndDelete
of HBase client. Those operations are carefully managed by several classes in Haeinsa, such as HaeinsaTable. Note that Haeinsa do not uses any coprocessor and never modifies Region Server.
In my opinion, to use Haeinsa in Pheonix for transaction, Phoenix and Haeinsa should both modified. Since Haeinsa relies on client-side algorithm, Pheonix should use Haeinsa client internally. This means codes of Pheonix should be modified quite a lot. And also there is some functions which Haeinsa doesn't support (which are supported on Hbase client) These should be fixed in Haeinsa-side.
For example, I see Pheonix use batch(Rows)
operation on MutationState
class. And Pheonix creates Scan
operation in ScanUtils
. Following can be problem in Haeinsa:
- Haeinsa don't support
batch(Rows)
- Haeinsa operations, such as
HaeinsaPut
,HaeinsaDelete
, do not havesetAttribute
method: since pheonix uses attribute for coprocessors, this is neccessary. - Haeinsa don't support
filter
inHaeinsaScan
.
I'm totally agree with setAttribite
should be implemented on Haeinsa. And I also think it is reasonable that implementing filter in HaeinsaScan
operation. But I don't sure about implementing batch(Rows)
because Haeinsa executes all operation in the transaction batch in commit phase. We can discuss about other problems.
And note that Haeinsa is designed to have good performance in small number of row in single transaction. Haeinsa works best on scheme which is similar to facebook messaging system, which all the data for user are stored in single row. You can see blog post1 from facebook engineering team. This means performance of Haeinsa can be not so good according to schema of the table.
P.S.
I studied Pheonix last weekend, but there can be some misunderstand, so please let me know if there is error.
from haeinsa.
👍
from haeinsa.
I'd love to see Salesforce Phoenix support Haeinsa.
from haeinsa.
👍
from haeinsa.
This support would be very useful.
from haeinsa.
Hi everyone! Sorry for late reply. Thanks for good suggestion.
I would be very excited and pleased, if Haeinsa helps Phoenix to support transaction.
I'm now studying Phoenix for few days and I'll deeply see how Phoenix implemented and finding good way to Phoenix and Haeinsa works together. If anyone who have the good suggestion about this issues (like implementation ideas), Please let me know.
Thanks!
from haeinsa.
Thanks @eincs.
from haeinsa.
Thanks, @eincs. I'm happy to answer any questions you have about Phoenix.
from haeinsa.
@eincs What do you think of Phoenix so far?
from haeinsa.
@preillyme I'll study Phoenix this weekend.
Do you have any opinion, such as how to integrate Pheonix and Haeinsa?
from haeinsa.
I added related issues. See #10 and #11.
from haeinsa.
@eincs thanks for adding those other issues that will aid in Phoenix support.
from haeinsa.
Related Issues (20)
- Inconsistency of Scanner when write during scan operation
- Isolation level of Haeinsa should be described more clearly
- Support HBase 0.98.0 (or later) HOT 1
- Tx implement setTimeout method HOT 1
- Questions on Haeinsa Transactions HOT 2
- Why Haeinsa needs both 'PrewriteTimestamp' & 'CommitTimestamp'? HOT 1
- How can i use Transaction Operation on Hbase more detail with Haeinsa?? HOT 7
- Add oraclejdk8 in travis-ci configuration
- HaeinsaResult.getValue return null when using the API without HaeinsaTransaction HOT 3
- Support Cloud BigTable of Google Cloud Platform HOT 1
- Deaklock on HaeinsaComplexTest::testSerializability HOT 4
- Check & put incerement or other HOT 2
- 2 Different clients (2 different machines ) with different clock! HOT 2
- High Concurrency on the same 3 rows acting strange HOT 2
- Support deletion of complete rows
- Support deletion of complete rows HOT 7
- table.put with multi threads (question) HOT 2
- Migrate to container-based Travis build
- High Failure Rate In Unit Test testSerializability When Using HBase 1.2
- Batch support for transactions HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from haeinsa.